mmlibs/mmfw/tsrc/mmfintegrationtest/ACLNT/TestRecorder.cpp
author hgs
Tue, 02 Nov 2010 12:13:59 +0000
changeset 5 b220a9341636
parent 0 b8ed18f6c07b
permissions -rw-r--r--
2010wk46_01
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
0
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
     1
// Copyright (c) 2005-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 program is designed the test of the MMF_ACLNT.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    15
// 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    16
//
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    17
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    18
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    19
 @file TestRecorder.cpp
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    20
*/
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    21
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    22
#include "mmfwavformat.h"
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    23
#include <hal.h>
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    24
#include "TestRecorder.h"
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    25
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    26
//copy util
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    27
TInt	CopyFile(TPtrC aFileNameSrc, TPtrC aFileNameDst)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    28
{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    29
	TInt theErr = KErrNone;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    30
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    31
	RFs		fs;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    32
	fs.Connect();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    33
	RFile	theFileNew;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    34
	RFile	theFile;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    35
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    36
	fs.MkDirAll(aFileNameDst);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    37
	theFile.Open(fs, aFileNameSrc, EFileShareReadersOnly);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    38
	TInt	theSize;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    39
	theFile.Size(theSize);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    40
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    41
	TBuf8<KSizeBuf>	theBuf;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    42
	TInt	theStep = KSizeBuf;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    43
	if(theStep > theSize)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    44
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    45
		theStep = theSize;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    46
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    47
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    48
	TInt theRes = theFileNew.Create(fs, aFileNameDst, EFileShareAny);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    49
	if(theRes == KErrAlreadyExists)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    50
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    51
		theRes = theFileNew.Replace(fs, aFileNameDst, EFileShareAny);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    52
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    53
		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    54
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    55
	if(theRes != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    56
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    57
		return theRes;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    58
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    59
		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    60
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    61
	TInt	theCurLength = 0;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    62
	while(theCurLength < theSize)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    63
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    64
		theFile.Read(theBuf, theStep);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    65
		theFileNew.Write(theBuf, theStep);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    66
		theCurLength += theStep;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    67
		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    68
		if(theCurLength + theStep > theSize )
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    69
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    70
			theStep = theSize - theCurLength;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    71
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    72
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    73
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    74
	theFileNew.Close();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    75
	theFile.Close();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    76
	fs.Close();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    77
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    78
	return theErr;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    79
}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    80
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    81
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    82
CTestMmfAclntRecord::CTestMmfAclntRecord(const TDesC& aTestName, const TDesC& aSectName, TBool aNegative) :
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    83
	iNegative(aNegative)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    84
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    85
	// store the name of this test case
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    86
	// this is the name that is used by the script file
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    87
    // Each test step initialises it's own name
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    88
	iTestStepName = aTestName;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    89
	iSectName = aSectName;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    90
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    91
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    92
void CTestMmfAclntRecord::MoscoStateChangeEvent(CBase* aObject, TInt aPreviousState, TInt aCurrentState, TInt aErrorCode)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    93
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    94
	iError = aErrorCode;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    95
	iObject = aObject;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    96
	iPreviousState = aPreviousState;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    97
	iCurrentState = aCurrentState;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    98
	INFO_PRINTF1( _L("CTestMmfAclntRecord : MMdaObjectStateChangeObserver Callback for CMdaAudioRecorderUtility complete"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    99
	INFO_PRINTF4( _L("iError %d iPreviousState %d iCurrentState %d"), iError, iPreviousState, iCurrentState);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   100
	CActiveScheduler::Stop();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   101
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   102
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   103
TVerdict CTestMmfAclntRecord::DoTestStepL( void )
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   104
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   105
	INFO_PRINTF1( _L("TestRecorder"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   106
	TVerdict ret = EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   107
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   108
	iError = KErrTimedOut;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   109
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   110
	TBuf<KSizeBuf>	filename;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   111
	TPtrC			filename1; 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   112
	TPtrC			filename2; 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   113
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   114
	if(!GetStringFromConfig(iSectName, _L("cropAudioFile"), filename1))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   115
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   116
		return EInconclusive;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   117
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   118
		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   119
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   120
	if(!GetStringFromConfig(iSectName, _L("playerAudioFile"), filename2))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   121
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   122
		return EInconclusive;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   123
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   124
		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   125
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   126
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   127
	GetDriveName(filename);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   128
	filename.Append(filename1);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   129
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   130
	CopyFile(filename2, filename);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   131
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   132
	CMdaAudioRecorderUtility* recUtil = CMdaAudioRecorderUtility::NewL(*this);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   133
	CleanupStack::PushL(recUtil);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   134
	recUtil->OpenFileL(filename);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   135
	// wait
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   136
	INFO_PRINTF1(_L("Initialise CMdaAudioRecorderUtility"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   137
	CActiveScheduler::Start();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   138
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   139
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   140
	if(iError == KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   141
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   142
		INFO_PRINTF2(_L("CMdaAudioRecorderUtility->OpenFileL(%S)"), &filename);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   143
		ret = DoTestL(recUtil);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   144
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   145
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   146
	CleanupStack::PopAndDestroy(recUtil);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   147
	User::After(KTwoSeconds);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   148
	ERR_PRINTF2( _L("CMdaAudioRecorderUtility completed with error %d"),iError );
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   149
	return ret;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   150
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   151
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   152
CTestMmfAclntRecGain::CTestMmfAclntRecGain(const TDesC& aTestName, const TDesC& aSectName, const TInt aGain, TBool aNegative)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   153
	:CTestMmfAclntRecord(aTestName, aSectName, aNegative)	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   154
	, iGain (aGain)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   155
	{}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   156
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   157
CTestMmfAclntRecGain* CTestMmfAclntRecGain::NewL(const TDesC& aTestName, const TDesC& aSectName,const TInt aGain, TBool aNegative)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   158
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   159
	CTestMmfAclntRecGain* self = new (ELeave) CTestMmfAclntRecGain(aTestName, aSectName, aGain, aNegative);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   160
	return self;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   161
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   162
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   163
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   164
 * RecordUtils test: Set gain to maximum and enquire gain.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   165
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   166
TVerdict CTestMmfAclntRecGain::DoTestL(CMdaAudioRecorderUtility* aRecUtil)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   167
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   168
	INFO_PRINTF2( _L("TestRecorder : Gain - (%d)"), iGain);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   169
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   170
	TVerdict ret = EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   171
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   172
	// Set up a file to record to
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   173
	TPtrC filename;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   174
	if (!GetStringFromConfig(iSectName, _L("outputAudioFile"), filename))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   175
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   176
		INFO_PRINTF1(_L("Error getting filename from INI file"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   177
		return EInconclusive;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   178
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   179
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   180
	RFs fs;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   181
	TInt err = fs.Connect();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   182
	if (err != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   183
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   184
		INFO_PRINTF2(_L("Error connecting file session"), err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   185
		fs.Close();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   186
		return EInconclusive;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   187
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   188
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   189
	err = fs.Delete(filename);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   190
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   191
	if (!((err == KErrNone) || (err == KErrNotFound)))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   192
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   193
		INFO_PRINTF2(_L("Error deleting output file"), err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   194
		return EInconclusive;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   195
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   196
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   197
	// Add create file for Ogg-tests
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   198
	if(iSectName == _L("SectionOggRec"))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   199
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   200
		RFs fs;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   201
		User::LeaveIfError(fs.Connect());
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   202
		RFile file;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   203
		User::LeaveIfError(file.Replace(fs,filename,EFileWrite));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   204
		file.Close();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   205
		fs.Close();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   206
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   207
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   208
	aRecUtil->OpenFileL(filename);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   209
	INFO_PRINTF2(_L("CMdaAudioRecorderUtility->OpenFileL(%S)"), &filename);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   210
	CActiveScheduler::Start();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   211
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   212
	if (iError != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   213
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   214
		INFO_PRINTF2(_L("Error opening file for recording"), iError);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   215
		return EInconclusive;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   216
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   217
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   218
	// Set gain
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   219
	if(iGain == 0)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   220
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   221
		iGain = aRecUtil->MaxGain();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   222
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   223
		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   224
	aRecUtil->SetGain(iGain);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   225
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   226
	// Set expected value
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   227
	TInt expectedGain = 0;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   228
	if (iGain > aRecUtil->MaxGain())
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   229
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   230
		expectedGain = aRecUtil->MaxGain();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   231
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   232
		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   233
	else if (iGain < 0)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   234
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   235
		expectedGain = 0;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   236
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   237
		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   238
	else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   239
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   240
		expectedGain = iGain;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   241
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   242
		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   243
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   244
	aRecUtil->SetDestinationSampleRateL(8000);	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   245
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   246
	// Start recording
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   247
	aRecUtil->RecordL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   248
	CActiveScheduler::Start();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   249
	User::After(1000000);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   250
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   251
	// Get gain
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   252
	TInt gain;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   253
	aRecUtil->GetGain(gain);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   254
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   255
	// The gain should be not be more than max gain
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   256
	if (gain > aRecUtil->MaxGain())
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   257
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   258
		INFO_PRINTF3(_L("ERROR: GetGain value greater than MaxGain (%d > %d)"), gain, aRecUtil->MaxGain());
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   259
		ret = EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   260
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   261
	// The gain should not be less than 0
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   262
	else if (gain < 0)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   263
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   264
		INFO_PRINTF3(_L("ERROR: GetGain value less than minimum gain (%d < %d)"), gain, 0);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   265
		ret = EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   266
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   267
	else if (gain != expectedGain)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   268
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   269
		ERR_PRINTF3(_L("ERROR: GetGain value not equal to expected value (%d != %d)"), gain, expectedGain);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   270
		ret = EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   271
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   272
	else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   273
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   274
		ret = EPass;	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   275
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   276
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   277
	// stop the recording - only necessary if anyone wanted to look at the output file
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   278
	aRecUtil->Stop();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   279
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   280
	return ret;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   281
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   282
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   283
//------------------------------------------------------------------
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   284
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   285
CTestMmfAclntRecStateTran::CTestMmfAclntRecStateTran(const TDesC& aTestName, const TDesC& aSectName, TBool aNegative)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   286
	:CTestMmfAclntRecord(aTestName, aSectName, aNegative)	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   287
	{}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   288
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   289
CTestMmfAclntRecStateTran* CTestMmfAclntRecStateTran::NewL(const TDesC& aTestName, const TDesC& aSectName, TBool aNegative)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   290
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   291
	CTestMmfAclntRecStateTran* self = new (ELeave) CTestMmfAclntRecStateTran(aTestName, aSectName, aNegative);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   292
	return self;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   293
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   294
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   295
TVerdict CTestMmfAclntRecStateTran::DoTestStepL()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   296
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   297
	INFO_PRINTF1( _L("TestRecorder : Transition"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   298
	TVerdict ret = EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   299
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   300
	iError = KErrTimedOut;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   301
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   302
	TPtrC filename; 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   303
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   304
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   305
	if(!GetStringFromConfig(iSectName, _L("outputAudioFile"), filename))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   306
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   307
		return EInconclusive;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   308
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   309
		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   310
	RFs	fs;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   311
	fs.Connect();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   312
	fs.Delete(filename);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   313
	fs.Close();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   314
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   315
	CMdaAudioRecorderUtility* recUtil = CMdaAudioRecorderUtility::NewL(*this);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   316
	CleanupStack::PushL(recUtil);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   317
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   318
	// Add create file for Ogg-tests
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   319
	if(iSectName == _L("SectionOggRecState"))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   320
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   321
		RFs fs;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   322
		User::LeaveIfError(fs.Connect());
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   323
		RFile file;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   324
		User::LeaveIfError(file.Replace(fs,filename,EFileWrite));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   325
		file.Close();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   326
		fs.Close();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   327
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   328
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   329
	INFO_PRINTF2(_L("CMdaAudioRecorderUtility->OpenFileL(%S)"), &filename);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   330
	recUtil->OpenFileL(filename);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   331
	// wait
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   332
	INFO_PRINTF1(_L("Initialise CMdaAudioRecorderUtility"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   333
	CActiveScheduler::Start();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   334
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   335
	if(iError == KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   336
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   337
		ret = DoTestL(recUtil);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   338
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   339
		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   340
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   341
	CleanupStack::PopAndDestroy(recUtil);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   342
	User::After(KTwoSeconds);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   343
	ERR_PRINTF2( _L("CMdaAudioRecorderUtility completed with error %d"),iError );
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   344
	return ret;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   345
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   346
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   347
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   348
 * Enquire state at each state transition.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   349
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   350
TVerdict CTestMmfAclntRecStateTran::DoTestL(CMdaAudioRecorderUtility* aRecUtil)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   351
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   352
	INFO_PRINTF1( _L("TestRecorder : State Transition"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   353
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   354
	TVerdict ret= EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   355
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   356
	iReportedState = aRecUtil->State();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   357
	if( iReportedState == CMdaAudioClipUtility::EOpen )
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   358
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   359
		INFO_PRINTF1( _L("Record CMdaAudioRecorderUtility"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   360
		aRecUtil->RecordL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   361
		CActiveScheduler::Start(); // wait for open -> record
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   362
		if (iError != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   363
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   364
			return EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   365
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   366
			
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   367
		iReportedState = aRecUtil->State();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   368
		if(iReportedState == CMdaAudioClipUtility::ERecording )
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   369
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   370
			ret = EPass;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   371
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   372
			
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   373
		User::After(KTwoSeconds);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   374
		aRecUtil->Stop();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   375
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   376
		iReportedState = aRecUtil->State();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   377
		if(iReportedState != CMdaAudioClipUtility::EOpen )
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   378
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   379
			return EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   380
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   381
			
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   382
		aRecUtil->PlayL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   383
		CActiveScheduler::Start(); // wait for open -> play
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   384
		if (iError != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   385
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   386
			return EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   387
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   388
			
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   389
		iReportedState = aRecUtil->State();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   390
		if( iReportedState == CMdaAudioClipUtility::EPlaying )
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   391
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   392
			// Wait for play to complete
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   393
			CActiveScheduler::Start();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   394
			if (iError != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   395
				{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   396
				return EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   397
				}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   398
				
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   399
			//copy file
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   400
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   401
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   402
	return ret;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   403
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   404
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   405
//---------------------------------------------------------------------------------
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   406
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   407
CTestMmfFormatRead::CTestMmfFormatRead(const TDesC& aTestName, const TDesC& aSectName, TBool aNegative)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   408
	:CTestMmfAclntRecord(aTestName, aSectName, aNegative)	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   409
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   410
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   411
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   412
CTestMmfFormatRead* CTestMmfFormatRead::NewL(const TDesC& aTestName, const TDesC& aSectName, TBool aNegative)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   413
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   414
	CTestMmfFormatRead* self = new (ELeave) CTestMmfFormatRead(aTestName, aSectName, aNegative);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   415
	return self;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   416
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   417
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   418
_LIT(KFileXyz, "\\AclntITestData\\Test.xyz");
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   419
_LIT(KFileAbc, "\\AclntITestData\\Test.abc");
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   420
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   421
TVerdict CTestMmfFormatRead::DoTestStepL()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   422
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   423
	INFO_PRINTF1( _L("CTestMmfFormatRead : Opening the test files"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   424
	TVerdict ret = EPass;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   425
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   426
	INFO_PRINTF1( _L("Opening the test file test.xyz"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   427
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   428
	TPtrC fileXyz(KFileXyz);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   429
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   430
	// File with extension .xyz does not have a plugin and hence opening this file should fail.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   431
	CMdaAudioRecorderUtility* recUtilXyz = CMdaAudioRecorderUtility::NewL(*this);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   432
	CleanupStack::PushL(recUtilXyz);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   433
	TRAP_IGNORE(recUtilXyz->OpenFileL(fileXyz));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   434
	CActiveScheduler::Start(); 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   435
		 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   436
	if (recUtilXyz->State() == CMdaAudioClipUtility::EOpen)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   437
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   438
		INFO_PRINTF1( _L("Opening the test file test.xyz failed"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   439
		ret = EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   440
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   441
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   442
	CleanupStack::PopAndDestroy(recUtilXyz);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   443
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   444
	INFO_PRINTF1( _L("Opening the test file test.abc"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   445
	TPtrC fileAbc(KFileAbc);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   446
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   447
	// File with extension .abc does have a plugin and hence opening this file should pass.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   448
	CMdaAudioRecorderUtility* recUtilAbc = CMdaAudioRecorderUtility::NewL(*this);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   449
	CleanupStack::PushL(recUtilAbc);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   450
	TRAP_IGNORE(recUtilAbc->OpenFileL(fileAbc));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   451
	CActiveScheduler::Start(); 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   452
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   453
	if (recUtilAbc->State() != CMdaAudioClipUtility::EOpen)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   454
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   455
		INFO_PRINTF1( _L("Opening the test file test.abc failed"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   456
		ret = EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   457
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   458
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   459
	CleanupStack::PopAndDestroy(recUtilAbc);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   460
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   461
	return ret;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   462
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   463
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   464
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   465
 * Enquire state at each state transition.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   466
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   467
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   468
TVerdict CTestMmfFormatRead::DoTestL(CMdaAudioRecorderUtility* /*aRecUtil*/)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   469
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   470
	INFO_PRINTF1( _L("CTestMmfFormatRead::DoTestL"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   471
	return (TVerdict(EPass));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   472
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   473
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
 * Constructor
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   478
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   479
CTestMmfAclntCrop::CTestMmfAclntCrop(const TDesC& aTestName, const TDesC& aSectName, const TBool aCropToEnd, TBool aNegative)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   480
	:CTestMmfAclntRecord(aTestName, aSectName, aNegative)	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   481
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   482
	iCropToEnd = aCropToEnd;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   483
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   484
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   485
CTestMmfAclntCrop* CTestMmfAclntCrop::NewL(const TDesC& aTestName, const TDesC& aSectName, const TBool aCropToEnd, TBool aNegative)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   486
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   487
	CTestMmfAclntCrop* self = new (ELeave) CTestMmfAclntCrop(aTestName, aSectName, aCropToEnd, aNegative);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   488
	return self;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   489
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   490
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   491
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   492
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   493
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   494
 * Audio croping.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   495
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   496
TVerdict CTestMmfAclntCrop::DoTestL(CMdaAudioRecorderUtility* aRecUtil)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   497
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   498
 	TTimeIntervalMicroSeconds expectedDuration(KPcm16FrameInterval * 5), duration;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   499
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   500
	duration = aRecUtil->Duration();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   501
	INFO_PRINTF3(_L("Duration of Original file, expected =  %f, actual: %f"),
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   502
					I64REAL(expectedDuration.Int64()), I64REAL(duration.Int64()));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   503
					
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   504
	if(expectedDuration == duration)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   505
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   506
		return EInconclusive;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   507
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   508
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   509
	if(duration > expectedDuration)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   510
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   511
		aRecUtil->SetPosition(expectedDuration);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   512
		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   513
		if(iCropToEnd)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   514
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   515
			TRAP(iError, aRecUtil->CropL());
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   516
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   517
		else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   518
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   519
			TRAP(iError, aRecUtil->CropFromBeginningL());
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   520
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   521
		if(iError != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   522
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   523
			ERR_PRINTF2(_L("Crop left with error =  %d"),iError);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   524
			return EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   525
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   526
		if(iCropToEnd)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   527
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   528
			TTimeIntervalMicroSeconds actualDuration = aRecUtil->Duration();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   529
			if (TimeComparison(I64INT(actualDuration.Int64()), I64INT(expectedDuration.Int64()), KExpectedDurationDeviation))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   530
				{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   531
				INFO_PRINTF1(_L("Duration within expected deviation"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   532
				return EPass;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   533
				}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   534
			else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   535
				{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   536
				ERR_PRINTF3(_L("Duration cropped file, expected =  %f, actual: %f"),
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   537
					I64REAL(expectedDuration.Int64()), I64REAL(actualDuration.Int64()));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   538
				}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   539
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   540
		if(!iCropToEnd)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   541
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   542
			TInt64 theDelta = duration.Int64() - expectedDuration.Int64();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   543
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   544
			TTimeIntervalMicroSeconds actualDuration = aRecUtil->Duration();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   545
			if (TimeComparison(I64INT(actualDuration.Int64()), I64INT(theDelta), KExpectedDurationDeviation))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   546
				{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   547
				INFO_PRINTF1(_L("Duration within expected deviation"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   548
				return EPass;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   549
				}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   550
			else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   551
				{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   552
				ERR_PRINTF3(_L("Duration cropped file, expected =  %f, actual: %f"),
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   553
					I64REAL(theDelta), 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   554
					I64REAL(aRecUtil->Duration().Int64()));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   555
				}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   556
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   557
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   558
	return	EFail ;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   559
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   560
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   561
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   562
//------------------------------------------------------------------
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   563
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   564
CTestMmfAclntRecCloseOpen::CTestMmfAclntRecCloseOpen(const TDesC& aTestName, const TDesC& aSectName, TBool aNegative)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   565
	:CTestMmfAclntRecord(aTestName, aSectName, aNegative)	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   566
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   567
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   568
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   569
CTestMmfAclntRecCloseOpen* CTestMmfAclntRecCloseOpen::NewL(const TDesC& aTestName, const TDesC& aSectName, TBool aNegative)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   570
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   571
	CTestMmfAclntRecCloseOpen* self = new (ELeave) CTestMmfAclntRecCloseOpen(aTestName, aSectName, aNegative);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   572
	return self;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   573
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   574
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   575
TVerdict CTestMmfAclntRecCloseOpen::DoTestL(CMdaAudioRecorderUtility* aRecUtil)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   576
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   577
 * Open, Close and open a new audio clip.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   578
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   579
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   580
	INFO_PRINTF1( _L("TestRecorder : Close/Open"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   581
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   582
	TBuf<KSizeBuf>	filename;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   583
	TPtrC			filename1; 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   584
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   585
	if(!GetStringFromConfig(iSectName, _L("playerAudioFile"), filename1))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   586
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   587
		return EInconclusive;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   588
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   589
		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   590
	GetDriveName(filename);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   591
	filename.Append(filename1);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   592
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   593
	iError = KErrTimedOut;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   594
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   595
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   596
	aRecUtil->Close();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   597
	aRecUtil->OpenFileL(filename);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   598
	INFO_PRINTF1( _L("Initialise CMdaAudioRecorderUtility"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   599
	//wait
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   600
	CActiveScheduler::Start(); 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   601
	if(iError == KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   602
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   603
		return EPass;	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   604
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   605
		
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
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   610
//------------------------------------------------------------------
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   611
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   612
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   613
 * Constructor
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   614
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   615
CTestMmfAclntRecFile::CTestMmfAclntRecFile(const TDesC& aTestName, const TDesC& aSectName,const TDesC& aKeyName, const TTestFormat aFormat, const TBool aCreateFile)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   616
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   617
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   618
	iTestStepName = aTestName;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   619
	iHeapSize = 200000;		// playback part of test loads whole sound file into buffer, so need large heap
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   620
	iSectName = aSectName;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   621
	iKeyName = aKeyName;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   622
	iTestFormat = aFormat;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   623
	iCreateFile = aCreateFile;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   624
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   625
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   626
CTestMmfAclntRecFile* CTestMmfAclntRecFile::NewL(const TDesC& aTestName, const TDesC& aSectName,const TDesC& aKeyName, const TTestFormat aFormat, const TBool aCreateFile)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   627
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   628
	CTestMmfAclntRecFile* self = new (ELeave) CTestMmfAclntRecFile(aTestName,aSectName,aKeyName,aFormat,aCreateFile);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   629
	return self;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   630
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   631
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   632
CTestMmfAclntRecFile* CTestMmfAclntRecFile::NewLC(const TDesC& aTestName, const TDesC& aSectName,const TDesC& aKeyName, const TTestFormat aFormat, const TBool aCreateFile)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   633
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   634
	CTestMmfAclntRecFile* self = CTestMmfAclntRecFile::NewLC(aTestName,aSectName,aKeyName,aFormat,aCreateFile);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   635
	CleanupStack::PushL(self);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   636
	return self;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   637
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   638
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   639
void CTestMmfAclntRecFile::MoscoStateChangeEvent(CBase* /*aObject*/, TInt /*aPreviousState*/, TInt aCurrentState, TInt aErrorCode)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   640
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   641
	iError = aErrorCode;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   642
	INFO_PRINTF1( _L("CTestMmfAclntRecFile : MMdaObjectStateChangeObserver Callback for CMdaAudioRecorderUtility complete"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   643
	INFO_PRINTF2( _L("iError %d "), iError);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   644
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   645
    if(aCurrentState == CMdaAudioClipUtility::ERecording)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   646
        {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   647
        User::After(KFiveSeconds);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   648
        }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   649
	CActiveScheduler::Stop();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   650
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   651
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   652
// Audio utility callbacks
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   653
void CTestMmfAclntRecFile::MapcInitComplete(TInt aError, const TTimeIntervalMicroSeconds& /*aDuration*/)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   654
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   655
	iError = aError;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   656
	CActiveScheduler::Stop();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   657
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   658
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   659
void CTestMmfAclntRecFile::MapcPlayComplete(TInt aError)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   660
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   661
	iError = aError;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   662
	CActiveScheduler::Stop();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   663
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   664
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   665
// Audio output stream callbacks
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   666
void CTestMmfAclntRecFile::MaoscOpenComplete(TInt aError)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   667
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   668
	iError = aError;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   669
	CActiveScheduler::Stop();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   670
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   671
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   672
void CTestMmfAclntRecFile::MaoscBufferCopied(TInt aError, const TDesC8& /*aBuffer*/)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   673
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   674
	iError = aError;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   675
	CActiveScheduler::Stop();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   676
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   677
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   678
void CTestMmfAclntRecFile::MaoscPlayComplete(TInt aError)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   679
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   680
	iError = aError;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   681
	CActiveScheduler::Stop();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   682
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   683
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   684
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   685
TVerdict CTestMmfAclntRecFile::DoTestStepPreambleL()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   686
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   687
	TVerdict ret = EPass;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   688
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   689
	SetupFormatL(iTestFormat);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   690
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   691
	if(iCreateFile)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   692
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   693
		// Make sure file doesn't exist (maybe from a previous test)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   694
		TParse fullFileName;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   695
		TBuf<KSizeBuf>	filename;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   696
		TPtrC			filename1; 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   697
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   698
		if(!GetStringFromConfig(iSectName, iKeyName, filename1))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   699
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   700
			return EInconclusive;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   701
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   702
			
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   703
		GetDriveName(filename);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   704
		filename.Append(filename1);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   705
		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   706
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   707
		// parse the filenames
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   708
		if(!fullFileName.Set(filename, &KDefault, NULL))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   709
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   710
			RFs fs;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   711
			User::LeaveIfError(fs.Connect());
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   712
			fs.SetAtt(fullFileName.FullName(), 0, KEntryAttReadOnly); 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   713
			TInt error = fs.Delete(fullFileName.FullName());
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   714
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   715
			if(error == KErrPathNotFound)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   716
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   717
				error = fs.MkDirAll(fullFileName.DriveAndPath());
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   718
				INFO_PRINTF2(_L("Path for file %S was been created"), &fullFileName.FullName());	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   719
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   720
			else  if(error == KErrNotFound)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   721
				INFO_PRINTF2(_L("No need to delete %S"), &fullFileName.FullName());	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   722
			else if(error==KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   723
				INFO_PRINTF2(_L("Deleted %S"), &fullFileName.FullName());	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   724
			else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   725
				{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   726
				ret = EInconclusive;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   727
				}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   728
			fs.Close();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   729
			}
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
	if((ret == EInconclusive) || (ret == EFail))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   734
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   735
		return ret;	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   736
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   737
		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   738
	return CTestMmfAclntStep::DoTestStepPreambleL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   739
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   740
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   741
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   742
 * Open a file based clip and record
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   743
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   744
TVerdict CTestMmfAclntRecFile::DoTestStepL()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   745
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   746
	INFO_PRINTF1( _L("TestRecorder : Record File"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   747
	TVerdict ret = EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   748
	iError = KErrTimedOut;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   749
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   750
	TPtrC filename;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   751
	if(!GetStringFromConfig(iSectName, iKeyName, filename))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   752
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   753
		return EInconclusive;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   754
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   755
		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   756
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   757
	CMdaAudioRecorderUtility* recUtil = CMdaAudioRecorderUtility::NewL(*this);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   758
	CleanupStack::PushL(recUtil);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   759
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   760
	TMdaFileClipLocation location(filename);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   761
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   762
	INFO_PRINTF2(_L("CMdaAudioRecorderUtility->OpenFileL(%S)"), &filename);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   763
	if(!iCreateFile)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   764
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   765
		if(iSectName == _L("SectionOggRec")) // - Added to use OpenFileL only as OpenL parameters are deprected.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   766
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   767
			TPtrC filename2; 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   768
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   769
			if(!GetStringFromConfig(iSectName, _L("playerAudioFile"), filename2))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   770
				{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   771
				return EInconclusive;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   772
				}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   773
				
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   774
			CopyFile(filename2, filename);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   775
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   776
		recUtil->OpenFileL(filename);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   777
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   778
	else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   779
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   780
		RFs fs;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   781
		fs.Connect();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   782
		fs.Delete(filename);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   783
		fs.Close();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   784
		if(iSectName == _L("SectionOggRec")) // - Added to use OpenFileL only as OpenL parameters are deprected.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   785
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   786
			recUtil->OpenFileL(filename); // - Should create the file internally
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   787
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   788
		else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   789
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   790
			recUtil->OpenL(&location,iFormat,iCodec,&iAudioSettings);	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   791
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   792
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   793
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   794
	INFO_PRINTF1( _L("Initialise CMdaAudioRecorderUtility"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   795
	CActiveScheduler::Start();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   796
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   797
	if(iError == KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   798
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   799
		iError = KErrTimedOut;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   800
		recUtil->RecordL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   801
		INFO_PRINTF1( _L("Record CMdaAudioRecorderUtility"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   802
		CActiveScheduler::Start(); // open -> record
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   803
		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   804
		recUtil->Stop();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   805
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   806
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   807
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   808
	CleanupStack::PopAndDestroy(recUtil);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   809
	recUtil = NULL;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   810
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   811
	// Playback the file
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   812
	if (iError == KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   813
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   814
		if (filename.Right(4).Compare(_L(".raw"))==0)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   815
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   816
			// Raw file playback
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   817
			CMdaAudioOutputStream* outputStream = CMdaAudioOutputStream::NewL(*this);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   818
			CleanupStack::PushL(outputStream);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   819
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   820
			outputStream->Open(NULL);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   821
			CActiveScheduler::Start();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   822
			if (iError != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   823
				{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   824
				INFO_PRINTF2(_L("Error opening output stream for playback = %d"), iError);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   825
				CleanupStack::PopAndDestroy(outputStream);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   826
				return EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   827
				}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   828
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   829
			// Connect file session
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   830
			RFs fs;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   831
			TInt err = fs.Connect();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   832
			if (err != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   833
				{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   834
				INFO_PRINTF2(_L("Error connecting to file session = %d"), err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   835
				return EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   836
				}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   837
			CleanupClosePushL(fs);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   838
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   839
			// Open file
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   840
			RFile file;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   841
			err = file.Open(fs, filename, EFileRead);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   842
			if (err != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   843
				{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   844
				INFO_PRINTF2(_L("Error opening file = %d"), err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   845
				CleanupStack::PopAndDestroy(2, outputStream);	// fs, outputStream
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   846
				return EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   847
				}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   848
			CleanupClosePushL(file);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   849
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   850
			// Get size of file
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   851
			TInt fileSize = 0;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   852
			err = file.Size(fileSize);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   853
			if (err != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   854
				{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   855
				INFO_PRINTF2(_L("Error getting size of file = %d"), err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   856
				CleanupStack::PopAndDestroy(3, outputStream);	// file, fs, outputStream
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   857
				return EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   858
				}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   859
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   860
			// Read file
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   861
			HBufC8* buf = HBufC8::NewLC(fileSize);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   862
			TPtr8 ptr(buf->Des());
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   863
			err = file.Read(ptr);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   864
			if (err != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   865
				{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   866
				INFO_PRINTF2(_L("Error reading file %d"), err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   867
				}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   868
			else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   869
				{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   870
				outputStream->WriteL(ptr);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   871
				CActiveScheduler::Start();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   872
				if (iError != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   873
					INFO_PRINTF2(_L("Error writing file on audio output stream %d"), iError);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   874
				}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   875
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   876
			CleanupStack::PopAndDestroy(4, outputStream);	// buf, file, fs, outputStream
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   877
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   878
		else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   879
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   880
			// Wav file playback
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   881
			CMdaAudioPlayerUtility* playUtil = CMdaAudioPlayerUtility::NewL(*this);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   882
			CleanupStack::PushL(playUtil);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   883
			TRAPD(err, playUtil->OpenFileL(filename));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   884
			if (err != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   885
				{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   886
				INFO_PRINTF2(_L("Error opening file for playback err = %d"), err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   887
				CleanupStack::PopAndDestroy(playUtil);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   888
				return EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   889
				}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   890
			CActiveScheduler::Start();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   891
			if (iError != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   892
				{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   893
				INFO_PRINTF2(_L("Error opening file for playback iError = %d"), iError);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   894
				CleanupStack::PopAndDestroy(playUtil);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   895
				return EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   896
				}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   897
			playUtil->Play();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   898
			CActiveScheduler::Start();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   899
			CleanupStack::PopAndDestroy(playUtil);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   900
			if (iError != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   901
				{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   902
				INFO_PRINTF2(_L("Error during playback of recorded file iError=%d"), iError);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   903
				return EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   904
				}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   905
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   906
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   907
	// DEF127335
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   908
   	// OggRecordController does not support recording into an already existing file.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   909
   	// This is due to unavailability of APIs at the level of Ogg Vorbis C libraries.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   910
	else if (iTestStepName == _L("MM-MMF-ACLNTOGG-I-0102-CP") && iError == KErrNotSupported)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   911
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   912
    	INFO_PRINTF1(_L("Expected Result: OggRecordController returned KErrNotSupported(-5)"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   913
		return EPass;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   914
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   915
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   916
	if( iError == KErrNone ) 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   917
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   918
		RFs fs;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   919
		RFile file;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   920
		TInt size = 0;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   921
		User::LeaveIfError(fs.Connect());
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   922
		User::LeaveIfError(file.Open(fs,filename,EFileRead));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   923
		CleanupClosePushL(file);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   924
		User::LeaveIfError(file.Size(size));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   925
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   926
		if(size > 0)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   927
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   928
			ret = EPass;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   929
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   930
			
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   931
		CleanupStack::PopAndDestroy(); //file
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   932
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   933
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   934
	ERR_PRINTF2( _L("CMdaAudioRecorderUtility completed with error %d"),iError );
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   935
	User::After(KOneSecond);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   936
	return	ret;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   937
	}
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
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   943
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   944
 * Constructor
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   945
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   946
CTestMmfAclntRecFileForceFormat::CTestMmfAclntRecFileForceFormat(const TDesC& aTestName, const TDesC& aSectName,const TDesC& aKeyName, const TMdaClipFormat& aFormat)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   947
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   948
	// store the name of this test case
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   949
	// this is the name that is used by the script file
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   950
	// Each test step initialises it's own name
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   951
	iTestStepName = aTestName;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   952
	iSectName = aSectName;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   953
	iKeyName = aKeyName;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   954
	iFormat = aFormat;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   955
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   956
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   957
CTestMmfAclntRecFileForceFormat* CTestMmfAclntRecFileForceFormat::NewL(const TDesC& aTestName, const TDesC& aSectName,const TDesC& aKeyName, const TMdaClipFormat& aFormat)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   958
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   959
	CTestMmfAclntRecFileForceFormat* self = new (ELeave) CTestMmfAclntRecFileForceFormat(aTestName,aSectName,aKeyName,aFormat);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   960
	return self;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   961
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   962
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   963
CTestMmfAclntRecFileForceFormat* CTestMmfAclntRecFileForceFormat::NewLC(const TDesC& aTestName, const TDesC& aSectName,const TDesC& aKeyName, const TMdaClipFormat& aFormat)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   964
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   965
	CTestMmfAclntRecFileForceFormat* self = CTestMmfAclntRecFileForceFormat::NewLC(aTestName,aSectName,aKeyName,aFormat);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   966
	CleanupStack::PushL(self);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   967
	return self;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   968
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   969
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   970
void CTestMmfAclntRecFileForceFormat::MoscoStateChangeEvent(CBase* /*aObject*/, TInt /*aPreviousState*/, TInt aCurrentState, TInt aErrorCode)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   971
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   972
	iError = aErrorCode;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   973
	INFO_PRINTF1( _L("CTestMmfAclntRecFile : MMdaObjectStateChangeObserver Callback for CMdaAudioRecorderUtility complete"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   974
	INFO_PRINTF2( _L("iError %d "), iError);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   975
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   976
	//dont stop the playing track
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   977
	if (aCurrentState != CMdaAudioClipUtility::EPlaying || iError != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   978
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   979
		CActiveScheduler::Stop();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   980
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   981
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   982
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   983
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   984
TVerdict CTestMmfAclntRecFileForceFormat::DoTestStepPreambleL()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   985
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   986
	TVerdict ret = EPass;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   987
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   988
	// Make sure file doesn't exist (maybe from a previous test)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   989
	TParse fullFileName;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   990
	TBuf<KSizeBuf>	filename;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   991
	TPtrC			filename1; 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   992
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   993
	if(!GetStringFromConfig(iSectName, iKeyName, filename1))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   994
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   995
		return EInconclusive;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   996
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   997
		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   998
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   999
	GetDriveName(filename);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1000
	filename.Append(filename1);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1001
		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1002
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1003
	// parse the filenames
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1004
	if(!fullFileName.Set(filename, &KDefault, NULL))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1005
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1006
		RFs fs;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1007
		User::LeaveIfError(fs.Connect());
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1008
		fs.SetAtt(fullFileName.FullName(), 0, KEntryAttReadOnly); 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1009
		TInt error = fs.Delete(fullFileName.FullName());
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1010
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1011
		if(error == KErrPathNotFound)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1012
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1013
			error = fs.MkDirAll(fullFileName.DriveAndPath());
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1014
			INFO_PRINTF2(_L("Path for file %S was been created"), &fullFileName.FullName());	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1015
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1016
		else  if(error == KErrNotFound)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1017
			INFO_PRINTF2(_L("No need to delete %S"), &fullFileName.FullName());	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1018
		else if(error==KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1019
			INFO_PRINTF2(_L("Deleted %S"), &fullFileName.FullName());	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1020
		else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1021
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1022
			ret = EInconclusive;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1023
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1024
		fs.Close();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1025
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1026
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1027
	if((ret == EInconclusive) || (ret == EFail))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1028
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1029
		return ret;	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1030
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1031
		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1032
	return CTestMmfAclntStep::DoTestStepPreambleL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1033
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1034
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1035
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1036
 * Open a file based clip and record
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1037
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1038
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1039
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1040
TVerdict CTestMmfAclntRecFileForceFormat::DoTestStepL()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1041
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1042
	INFO_PRINTF1( _L("TestRecorder : Record File"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1043
	TVerdict ret = EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1044
	iError = KErrTimedOut;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1045
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1046
	TPtrC			filename; 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1047
	if(!GetStringFromConfig(iSectName, iKeyName, filename))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1048
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1049
		return EInconclusive;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1050
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1051
		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1052
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1053
	CMdaAudioRecorderUtility* recUtil = CMdaAudioRecorderUtility::NewL(*this);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1054
	CleanupStack::PushL(recUtil);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1055
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1056
	TMdaFileClipLocation location(filename);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1057
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1058
	RFs fs;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1059
	fs.Connect();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1060
	fs.Delete(filename);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1061
	fs.Close();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1062
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1063
	recUtil->OpenL(&location,&iFormat);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1064
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1065
	INFO_PRINTF1( _L("Initialise CMdaAudioRecorderUtility"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1066
	CActiveScheduler::Start();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1067
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1068
	if(iError == KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1069
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1070
		iError = KErrTimedOut;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1071
		recUtil->RecordL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1072
		INFO_PRINTF1( _L("Record CMdaAudioRecorderUtility"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1073
		CActiveScheduler::Start(); // open -> record
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1074
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1075
		User::After(KTwoSeconds);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1076
		recUtil->Stop();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1077
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1078
		//now try to play the file as a check that it recorded correctly
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1079
		recUtil->PlayL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1080
		CActiveScheduler::Start();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1081
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1082
		recUtil->Close();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1083
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1084
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1085
		if(iError == KErrNone) 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1086
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1087
			RFs fs;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1088
			RFile file;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1089
			TInt size = 0;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1090
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1091
			User::LeaveIfError(fs.Connect());
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1092
			User::LeaveIfError(file.Open(fs,filename,EFileRead));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1093
			CleanupClosePushL(file);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1094
			User::LeaveIfError(file.Size(size));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1095
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1096
			if(size > 0)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1097
				{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1098
				ret = EPass;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1099
				}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1100
				
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1101
			CleanupStack::PopAndDestroy(); //file
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1102
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1103
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1104
	ERR_PRINTF2( _L("CMdaAudioRecorderUtility completed with error %d"),iError );
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1105
	CleanupStack::PopAndDestroy(recUtil);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1106
	User::After(KOneSecond);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1107
	return	ret;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1108
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1109
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1110
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1111
//------------------------------------------------------------------
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1112
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1113
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1114
 * Constructor
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1115
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1116
CTestMmfAclntRecDes::CTestMmfAclntRecDes(const TDesC& aTestName, const TDesC& aSectName,const TDesC& aKeyName, const TTestFormat aFormat, const TBool aCreateDes):
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1117
	iAudioPtr(NULL,0,0)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1118
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1119
	// store the name of this test case
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1120
	// this is the name that is used by the script file
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1121
	// Each test step initialises it's own name
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1122
	iTestStepName = aTestName;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1123
	iSectName = aSectName;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1124
	iKeyName = aKeyName;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1125
	iTestFormat = aFormat;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1126
	iCreateDes = aCreateDes;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1127
	iSize = 0;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1128
	iAudio = NULL;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1129
	iHeapSize = 100000;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1130
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1131
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1132
CTestMmfAclntRecDes* CTestMmfAclntRecDes::NewL(const TDesC& aTestName, const TDesC& aSectName,const TDesC& aKeyName, const TTestFormat aFormat,const TBool aCreateDes)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1133
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1134
	CTestMmfAclntRecDes* self = new (ELeave) CTestMmfAclntRecDes(aTestName,aSectName,aKeyName,aFormat,aCreateDes);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1135
	return self;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1136
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1137
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1138
CTestMmfAclntRecDes* CTestMmfAclntRecDes::NewLC(const TDesC& aTestName, const TDesC& aSectName,const TDesC& aKeyName, const TTestFormat aFormat, const TBool aCreateDes)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1139
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1140
	CTestMmfAclntRecDes* self = CTestMmfAclntRecDes::NewLC(aTestName,aSectName,aKeyName,aFormat,aCreateDes);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1141
	CleanupStack::PushL(self);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1142
	return self;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1143
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1144
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1145
void CTestMmfAclntRecDes::MoscoStateChangeEvent(CBase* /*aObject*/, TInt aPreviousState, TInt aCurrentState, TInt aErrorCode)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1146
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1147
	iError = aErrorCode;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1148
	INFO_PRINTF4( _L("MMdaObjectStateChangeObserver: previous state: %d current state: %d error: %d"),aPreviousState, aCurrentState, aErrorCode);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1149
	CActiveScheduler::Stop();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1150
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1151
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1152
TVerdict CTestMmfAclntRecDes::DoTestStepPreambleL()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1153
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1154
	SetupFormatL(iTestFormat);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1155
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1156
	switch (iTestFormat) 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1157
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1158
		case EPcm16Wav:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1159
		case EAlawWav:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1160
		case EPcm8:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1161
			iHeaderSize = KWavFileUncompressedDataHeaderSize; //(see mmfwavformat.cpp, CreateSinkBufferOfSizeL())
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1162
			iFrameSize = 4096;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1163
			break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1164
		case EImaAdpcmWav:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1165
		case EImasPcmWav:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1166
			iHeaderSize = KWavFileCompressedDataHeaderSize + KImaAdpcmFactChunkSize;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1167
			iFrameSize = 4096;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1168
			break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1169
		case EMulawRaw:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1170
		case EPcmU8:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1171
		case EPcmU16:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1172
			iHeaderSize = 0;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1173
			iFrameSize = 4096;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1174
			break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1175
		case EGsmWav:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1176
			iHeaderSize = KWavFileCompressedDataHeaderSize + KGSMFactChunkSize;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1177
			iFrameSize = 4095;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1178
			break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1179
		default:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1180
			/*skip*/ ;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1181
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1182
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1183
	if(!iCreateDes)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1184
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1185
		RFs fs;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1186
		RFile file;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1187
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1188
		TBuf<KSizeBuf>	filename;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1189
		TPtrC			filename1; 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1190
		if(!GetStringFromConfig(iSectName, iKeyName, filename1))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1191
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1192
			return EInconclusive;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1193
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1194
			
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1195
		GetDriveName(filename);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1196
		filename.Append(filename1);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1197
		INFO_PRINTF2(_L("File for test - %S"), &filename);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1198
		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1199
		User::LeaveIfError(fs.Connect());
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1200
		User::LeaveIfError(file.Open(fs,filename,EFileRead));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1201
		CleanupClosePushL(file);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1202
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1203
		User::LeaveIfError(file.Size(iSize));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1204
		INFO_PRINTF2(_L("size of file = %d\n"),iSize);//Statement Changed under DEF105143
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1205
		iAudio = HBufC8::NewMaxL(iSize);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1206
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1207
		// Read a file into a descriptor
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1208
		iAudioPtr.Set(iAudio->Des());
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1209
		User::LeaveIfError(file.Read(iAudioPtr));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1210
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1211
		CleanupStack::PopAndDestroy(); //file
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1212
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1213
	else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1214
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1215
		INFO_PRINTF1(_L("Recording to New Descriptor for test"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1216
		iSize = KRecSize; // value is not been set yet.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1217
		iAudio = HBufC8::NewMaxL(iSize);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1218
		iAudioPtr.Set(iAudio->Des());
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1219
		iAudioPtr.SetLength(0);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1220
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1221
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1222
	return CTestMmfAclntStep::DoTestStepPreambleL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1223
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1224
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1225
TVerdict CTestMmfAclntRecDes::DoTestStepPostambleL()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1226
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1227
	delete iAudio;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1228
	return CTestMmfAclntCodecTest::DoTestStepPostambleL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1229
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1230
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1231
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1232
 * Open a descriptor and record
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1233
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1234
TVerdict CTestMmfAclntRecDes::DoTestStepL( void )
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1235
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1236
	INFO_PRINTF1( _L("TestRecorder : Record Des"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1237
	TVerdict ret = EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1238
	TMdaDesClipLocation* location = NULL;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1239
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1240
	CMdaAudioRecorderUtility* recUtil = CMdaAudioRecorderUtility::NewL(*this);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1241
	CleanupStack::PushL(recUtil);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1242
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1243
	if(!iCreateDes)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1244
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1245
		recUtil->OpenDesL(iAudioPtr);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1246
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1247
	else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1248
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1249
		location = new (ELeave) TMdaDesClipLocation(iAudioPtr);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1250
		CleanupStack::PushL(location);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1251
		recUtil->OpenL(location,iFormat,iCodec,&iAudioSettings);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1252
		CleanupStack::PopAndDestroy(location);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1253
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1254
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1255
	iError = KErrTimedOut;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1256
	INFO_PRINTF1( _L("Initialise CMdaAudioRecorderUtility"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1257
	CActiveScheduler::Start();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1258
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1259
	if(iError == KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1260
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1261
		// set the sample rate to 8K, otherwise the default value of 44.1Kh will be used
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1262
		// resulting in very large buffers (11K)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1263
		recUtil->SetDestinationSampleRateL(8000);	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1264
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1265
		iError = KErrTimedOut;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1266
		recUtil->RecordL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1267
		INFO_PRINTF1( _L("Record CMdaAudioRecorderUtility"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1268
		CActiveScheduler::Start(); // open->record
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1269
		if (iError != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1270
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1271
			// DEF127335
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1272
		   	// OggRecordController does not support recording into an already existing descriptor.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1273
		   	// This is due to unavailability of APIs at the level of Ogg Vorbis C libraries.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1274
			if (iTestStepName == _L("MM-MMF-ACLNTOGG-I-0103-CP") && iError == KErrNotSupported)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1275
				{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1276
				INFO_PRINTF1(_L("Expected Result: OggRecordController returned KErrNotSupported(-5)"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1277
				ret = EPass;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1278
				}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1279
			ERR_PRINTF2( _L("CMdaAudioRecorderUtility failed with error %d"),iError );
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1280
			CleanupStack::PopAndDestroy(recUtil);	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1281
			User::After(KOneSecond);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1282
			return ret;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1283
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1284
		// wait to run out of space recording
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1285
		CActiveScheduler::Start(); // record -> open
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1286
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1287
		if (iError != KErrOverflow)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1288
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1289
            ERR_PRINTF2( _L("CMdaAudioRecorderUtility failed with error %d"),iError );
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1290
            CleanupStack::PopAndDestroy(recUtil);	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1291
            User::After(KOneSecond);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1292
            return ret;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1293
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1294
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1295
		TInt expectedLength=0;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1296
		TInt actualLength = iAudio->Length();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1297
		if(iCreateDes)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1298
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1299
			// Calculuate the frame size which is now dynamic.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1300
			// This is more or less a duplicate of the calculation in 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1301
			// CMMFAudioInput::NegotiateSourceL()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1302
			expectedLength = iSize;	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1303
			TUint sampleRate = recUtil->DestinationSampleRateL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1304
			TUint bitRate = recUtil->DestinationBitRateL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1305
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1306
			//xxx work around for GSM which returns zero as the bit rate because internally
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1307
			// BitsPerSample is zero
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1308
			if (bitRate==0)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1309
				{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1310
				bitRate = sampleRate * 8;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1311
				}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1312
				
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1313
			TUint numberOfChannels = recUtil->DestinationNumberOfChannelsL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1314
			iFrameSize = (bitRate * numberOfChannels / 8) / 4;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1315
			iFrameSize = (iFrameSize + (KAudioInputDeltaFrameSize-1)) &~ (KAudioInputDeltaFrameSize-1);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1316
			if(iFrameSize < KAudioInputMinFrameSize) 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1317
				{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1318
					iFrameSize = KAudioInputMinFrameSize;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1319
				}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1320
			
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1321
			else if(iFrameSize > KAudioInputMaxFrameSize)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1322
				{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1323
				iFrameSize = KAudioInputMaxFrameSize;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1324
				}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1325
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1326
			// GSM will onlt write out an integral number of GSM frames
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1327
			// which are 65 bytes long..
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1328
			if (iTestFormat == EGsmWav)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1329
				{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1330
				iFrameSize = (iFrameSize / KGsmEncodedFrameSize) * KGsmEncodedFrameSize;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1331
				}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1332
				
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1333
			
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1334
			expectedLength = ((iSize-iHeaderSize) / iFrameSize)* iFrameSize + iHeaderSize;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1335
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1336
			INFO_PRINTF2(_L("sampleRate = %d"), sampleRate);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1337
			INFO_PRINTF2(_L("bitRate = %d"), bitRate);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1338
			INFO_PRINTF2(_L("numberOfChannels = %d"), numberOfChannels);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1339
			INFO_PRINTF2(_L("iFrameSize = %d"), iFrameSize);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1340
			INFO_PRINTF2(_L("Duration = %d"), I64LOW(recUtil->Duration().Int64()));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1341
			INFO_PRINTF3(_L("Expected length %d, actual length %d"), expectedLength, actualLength);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1342
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1343
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1344
#if defined __WRITE_CONVERSION_TO_FILE
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1345
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1346
			_LIT(KFileOut, "\\TEST.WAV");
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1347
			RFs fs;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1348
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1349
			fs.Connect();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1350
			RFile file;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1351
			file.Replace(fs, KFileOut(), EFileWrite);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1352
			file.Write(iAudio->Des());
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1353
			TInt len = iAudio->Length();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1354
			file.Size(len);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1355
			file.Close();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1356
			fs.Close();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1357
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1358
#endif
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1359
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1360
			// a more forgiving test would be :
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1361
			//if ((actualLength <= expectedLength) &&
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1362
			//	(actualLength >= (expectedLength - iFrameSize)))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1363
			
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1364
			// if test is GSM then we expect it to be between 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1365
			// expected Length and (iSize - iHeaderSize)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1366
			if ((iTestFormat == EGsmWav) && 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1367
				(actualLength <= (iSize - iHeaderSize))	&& 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1368
				(actualLength >= expectedLength) )
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1369
				{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1370
				ret = EPass;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1371
				}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1372
			else if (iAudio->Length() == expectedLength)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1373
				{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1374
				ret = EPass;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1375
				}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1376
			else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1377
				{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1378
				INFO_PRINTF3(_L("Expected length %d, actual length %d"), expectedLength, actualLength);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1379
				
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1380
				TInt machineType;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1381
	            TInt err = HAL::Get(HALData::EMachineUid, machineType);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1382
	            if (err)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1383
	                {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1384
				    ERR_PRINTF1(_L("Error Getting Device information"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1385
				    iTestStepResult = EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1386
				    CActiveScheduler::Stop();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1387
				    }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1388
	            else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1389
	                {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1390
                    if ((machineType == 0x102864F7) && (sampleRate == 8000))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1391
                        {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1392
                            // If test is running on a NaviEngine and uses 8K sample rate
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1393
                            // then apply a tollerance when checking duration as we will
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1394
                            // have applied conversion function.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1395
                            if ((iAudio->Length() >= expectedLength - 1000) &&
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1396
                                 (iAudio->Length() <= expectedLength + 1000))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1397
                                {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1398
                                ret = EPass;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1399
                                }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1400
                        }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1401
	                }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1402
				}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1403
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1404
		else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1405
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1406
			expectedLength = iSize;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1407
			
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1408
			if(iAudio->Length() == expectedLength)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1409
				{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1410
				ret = EPass;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1411
				}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1412
			
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1413
			else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1414
				{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1415
				INFO_PRINTF3(_L("Expected length %d, actual length %d"), expectedLength, actualLength);
5
b220a9341636 2010wk46_01
hgs
parents: 0
diff changeset
  1416
				if (iError == KErrOverflow )
b220a9341636 2010wk46_01
hgs
parents: 0
diff changeset
  1417
				            {
b220a9341636 2010wk46_01
hgs
parents: 0
diff changeset
  1418
                            ret = EPass;
b220a9341636 2010wk46_01
hgs
parents: 0
diff changeset
  1419
				            }
0
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1420
				}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1421
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1422
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1423
		}
5
b220a9341636 2010wk46_01
hgs
parents: 0
diff changeset
  1424
	
b220a9341636 2010wk46_01
hgs
parents: 0
diff changeset
  1425
	if (iError == KErrOverflow)
b220a9341636 2010wk46_01
hgs
parents: 0
diff changeset
  1426
		{
b220a9341636 2010wk46_01
hgs
parents: 0
diff changeset
  1427
		INFO_PRINTF2(_L("Overflow happened and ignored = %d"), ret);
b220a9341636 2010wk46_01
hgs
parents: 0
diff changeset
  1428
		ret = EPass;
b220a9341636 2010wk46_01
hgs
parents: 0
diff changeset
  1429
		}
0
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1430
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1431
	if (ret != EPass)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1432
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1433
		ERR_PRINTF2( _L("CMdaAudioRecorderUtility failed with error %d"),iError );
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
	CleanupStack::PopAndDestroy(recUtil);	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1438
	User::After(KOneSecond);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1439
	return ret;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1440
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1441
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1442
//------------------------------------------------------------------
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1443
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1444
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1445
 * Constructor
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1446
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1447
CTestMmfAclntRecUrl::CTestMmfAclntRecUrl(const TDesC& aTestName, const TDesC& aSectName,const TDesC& aKeyName)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1448
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1449
	// store the name of this test case
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1450
	// this is the name that is used by the script file
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1451
	// Each test step initialises it's own name
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1452
	iTestStepName = aTestName;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1453
	iSectName = aSectName;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1454
	iKeyName = aKeyName;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1455
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1456
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1457
CTestMmfAclntRecUrl* CTestMmfAclntRecUrl::NewL(const TDesC& aTestName, const TDesC& aSectName,const TDesC& aKeyName)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1458
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1459
	CTestMmfAclntRecUrl* self = new (ELeave) CTestMmfAclntRecUrl(aTestName,aSectName,aKeyName);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1460
	return self;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1461
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1462
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1463
CTestMmfAclntRecUrl* CTestMmfAclntRecUrl::NewLC(const TDesC& aTestName, const TDesC& aSectName,const TDesC& aKeyName)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1464
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1465
	CTestMmfAclntRecUrl* self = CTestMmfAclntRecUrl::NewLC(aTestName,aSectName,aKeyName);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1466
	CleanupStack::PushL(self);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1467
	return self;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1468
	};
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1469
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1470
void CTestMmfAclntRecUrl::MoscoStateChangeEvent(CBase* /*aObject*/, 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1471
													TInt /*aPreviousState*/, 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1472
													TInt /*aCurrentState*/, 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1473
													TInt aErrorCode)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1474
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1475
	iError = aErrorCode;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1476
	INFO_PRINTF1( _L("CTestMmfAclntRecUrl : MMdaObjectStateChangeObserver Callback for CMdaAudioRecorderUtility complete"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1477
	INFO_PRINTF2( _L("iError %d"), iError);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1478
	CActiveScheduler::Stop();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1479
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1480
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1481
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1482
 * Open a URL
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1483
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1484
TVerdict CTestMmfAclntRecUrl::DoTestStepL( void )
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1485
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1486
	INFO_PRINTF1( _L("TestRecorder : Record URL"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1487
	TPtrC url;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1488
	if(!GetStringFromConfig(iSectName, iKeyName, url))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1489
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1490
		return EInconclusive;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1491
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1492
		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1493
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1494
	TVerdict ret = EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1495
	CMdaAudioRecorderUtility* recUtil = CMdaAudioRecorderUtility::NewL(*this);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1496
	CleanupStack::PushL(recUtil);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1497
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1498
	TRAP_IGNORE(recUtil->OpenUrlL(url, KUseDefaultIap, _L8("Audio/Wav")));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1499
	INFO_PRINTF1( _L("Initialise CMdaAudioRecorderUtility"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1500
	CActiveScheduler::Start();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1501
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1502
	if(iError == KErrNotSupported)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1503
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1504
		ret = EPass;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1505
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1506
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1507
	ERR_PRINTF2( _L("CMdaAudioRecorderUtility completed with error %d"),iError );
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1508
	CleanupStack::PopAndDestroy(recUtil);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1509
	return	ret;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1510
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1511
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1512
//------------------------------------------------------------------
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1513
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1514
CTestMmfAclntRecPosition::CTestMmfAclntRecPosition(const TDesC& aTestName, const TDesC& aSectName, const TTimeIntervalMicroSeconds& aPosition, TBool aNegative)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1515
	:CTestMmfAclntRecord(aTestName, aSectName, aNegative), iPosition(aPosition)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1516
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1517
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1518
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1519
CTestMmfAclntRecPosition* CTestMmfAclntRecPosition::NewL(const TDesC& aTestName, const TDesC& aSectName, const TTimeIntervalMicroSeconds& aPosition, TBool aNegative)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1520
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1521
	CTestMmfAclntRecPosition* self = new (ELeave) CTestMmfAclntRecPosition(aTestName, aSectName, aPosition, aNegative);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1522
	return self;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1523
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1524
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1525
TVerdict CTestMmfAclntRecPosition::DoTestL(CMdaAudioRecorderUtility* aRecUtil)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1526
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1527
	INFO_PRINTF1( _L("TestRecorder : Position"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1528
	TVerdict ret = EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1529
	TBool validPosition = EFalse;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1530
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1531
	//  Set position: middle of clip.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1532
	if (I64INT(iPosition.Int64()) == 0)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1533
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1534
		iPosition = I64INT(aRecUtil->Duration().Int64())/2;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1535
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1536
		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1537
	// Set position: end of clip.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1538
	if (I64INT(iPosition.Int64()) == -1)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1539
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1540
		iPosition = aRecUtil->Duration();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1541
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1542
		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1543
	aRecUtil->PlayL(); //Begin to Play otherwise position can not be set.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1544
	// Position is beyond the end of the clips duration.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1545
	// so check that the value is clipped.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1546
	if(aRecUtil->Duration() < iPosition)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1547
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1548
		aRecUtil->SetPosition(iPosition);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1549
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1550
		TInt64 temp = (aRecUtil->Duration().Int64() / KPcm16FrameInterval) - 1; // -1 for DevSound
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1551
		if(aRecUtil->Position().Int64() == (temp * KPcm16FrameInterval))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1552
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1553
			validPosition = ETrue;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1554
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1555
			
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1556
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1557
	else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1558
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1559
		aRecUtil->SetPosition(iPosition);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1560
		//CActiveScheduler::Start();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1561
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1562
		TInt64 temp = (iPosition.Int64() / KPcm16FrameInterval) - 1; // -1 for DevSound
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1563
		TInt64	thePosActual = aRecUtil->Position().Int64();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1564
		TInt64  thePosExpected = temp * KPcm16FrameInterval;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1565
		aRecUtil->Stop();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1566
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1567
		if (TimeComparison(I64INT(thePosActual), I64INT(thePosExpected), KExpectedDeviation))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1568
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1569
			validPosition = ETrue;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1570
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1571
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1572
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1573
	if ((iNegative) && (!validPosition))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1574
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1575
		ret = EPass;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1576
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1577
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1578
	// Postion was set to a valid value.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1579
	if(validPosition)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1580
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1581
		ret = EPass;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1582
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1583
	return ret;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1584
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1585
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1586
//------------------------------------------------------------------
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1587
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1588
CTestMmfAclntRecDuration::CTestMmfAclntRecDuration(const TDesC& aTestName, const TDesC& aSectName, TBool aNegative)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1589
	:CTestMmfAclntRecord(aTestName, aSectName, aNegative)	
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
CTestMmfAclntRecDuration* CTestMmfAclntRecDuration::NewL(const TDesC& aTestName, const TDesC& aSectName, TBool aNegative)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1594
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1595
	CTestMmfAclntRecDuration* self = new (ELeave) CTestMmfAclntRecDuration(aTestName, aSectName, aNegative);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1596
	return self;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1597
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1598
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1599
TVerdict CTestMmfAclntRecDuration::DoTestL(CMdaAudioRecorderUtility* aRecUtil)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1600
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1601
	INFO_PRINTF1( _L("TestRecorder : Duration"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1602
	TVerdict ret = EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1603
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1604
	if(iSectName == _L("SectionOggRec"))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1605
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1606
			if (I64INT(aRecUtil->Duration().Int64()) == KSoundFileLength)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1607
			ret = EPass;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1608
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1609
	else if (TimeComparison(I64INT(aRecUtil->Duration().Int64()), KSoundFileLength, KExpectedDeviation))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1610
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1611
		ret = EPass;	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1612
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1613
		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1614
	else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1615
		INFO_PRINTF3(_L("unexpected duration = %u, expected = %u"), I64INT(aRecUtil->Duration().Int64()), KSoundFileLength);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1616
	return ret;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1617
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1618
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1619
//------------------------------------------------------------------
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1620
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1621
CTestMmfAclntRecSetMeta::CTestMmfAclntRecSetMeta(const TDesC& aTestName, const TDesC& aSectName, TBool aNegative)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1622
	:CTestMmfAclntRecord(aTestName, aSectName, aNegative)	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1623
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1624
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1625
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1626
CTestMmfAclntRecSetMeta* CTestMmfAclntRecSetMeta::NewL(const TDesC& aTestName, const TDesC& aSectName, TBool aNegative)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1627
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1628
	CTestMmfAclntRecSetMeta* self = new (ELeave) CTestMmfAclntRecSetMeta(aTestName, aSectName, aNegative);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1629
	return self;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1630
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1631
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1632
_LIT(name,"<Copyright>");
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1633
_LIT(data,"<Symbian (c) 2002>");
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1634
_LIT(name2,"Artist");
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1635
_LIT(data2,"Test");
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1636
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1637
 * Set meta-information
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1638
  */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1639
TVerdict CTestMmfAclntRecSetMeta::DoTestL(CMdaAudioRecorderUtility* aRecUtil)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1640
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1641
	INFO_PRINTF1( _L("TestRecorder : Set Metadata"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1642
	TVerdict ret = EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1643
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1644
	// build a meta daat object
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1645
	CMMFMetaDataEntry* metaData[2];
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1646
	metaData[0] = CMMFMetaDataEntry::NewL(name,data);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1647
	CleanupStack::PushL(metaData[0]);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1648
	metaData[1] = CMMFMetaDataEntry::NewL(name2,data2);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1649
	CleanupStack::PushL(metaData[1]);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1650
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1651
	TInt numEntries;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1652
	TInt err = aRecUtil->GetNumberOfMetaDataEntries(numEntries);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1653
	if(err != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1654
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1655
		INFO_PRINTF2(_L("GetNumberOfMetaDataEntries() returned error %d"), err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1656
		numEntries = 0; // so we don't try and remove anything 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1657
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1658
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1659
	// *** JW adapted test - remove any existing metadata
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1660
	// this means that a modified test file will not cause inconclusive
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1661
	if(numEntries != 0)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1662
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1663
		INFO_PRINTF2(_L("Removing %d existing entries..."), numEntries);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1664
		for(TInt i = numEntries - 1; i >= 0; i--)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1665
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1666
			err = aRecUtil->RemoveMetaDataEntry(i);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1667
			if(err != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1668
				{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1669
				INFO_PRINTF3(_L("RemoveMetaDataEntry(%d) returned error %d"), i, err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1670
				}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1671
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1672
		aRecUtil->GetNumberOfMetaDataEntries(numEntries);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1673
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1674
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1675
	if(numEntries == 0)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1676
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1677
		TRAPD(err, aRecUtil->AddMetaDataEntryL(*metaData[0]));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1678
		if(err != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1679
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1680
			INFO_PRINTF2(_L("AddMetaDataEntryL(*metaData[0]) left with error %d"), err);	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1681
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1682
			
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1683
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1684
		TRAP(err, aRecUtil->AddMetaDataEntryL(*metaData[1]));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1685
		if(err != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1686
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1687
			INFO_PRINTF2(_L("AddMetaDataEntryL(*metaData[1]) left with error %d"), err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1688
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1689
			
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1690
		CleanupStack::PopAndDestroy(metaData[1]);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1691
		CleanupStack::PopAndDestroy(metaData[0]);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1692
		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1693
		if(err)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1694
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1695
			if(err == KErrNotSupported) // Audio Controller doesn't support - this is ok
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1696
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1697
				//
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1698
				// C-COVER Reports the following methods are not being called
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1699
				// Remove when metaData is supported
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1700
				TRAP(err,aRecUtil->GetNumberOfMetaDataEntries(numEntries));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1701
				CMMFMetaDataEntry* testData=NULL;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1702
				for(TInt i=0;i<numEntries;i++)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1703
					{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1704
					TRAP(err,testData = aRecUtil->GetMetaDataEntryL(0));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1705
					//REPLACE WITH ITSELF??
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1706
					TRAP(err,aRecUtil->ReplaceMetaDataEntryL(i,*testData));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1707
					TRAP(err,aRecUtil->RemoveMetaDataEntry(i));//@@@
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1708
					}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1709
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1710
				//
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1711
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1712
				INFO_PRINTF1(_L("Note : Audio Controller does not support metadata"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1713
				return EPass;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1714
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1715
			else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1716
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1717
				ERR_PRINTF1(_L("Unexpected error (expected KErrNotSupported)"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1718
				return EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1719
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1720
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1721
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1722
		aRecUtil->GetNumberOfMetaDataEntries(numEntries);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1723
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1724
		if(numEntries == 2)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1725
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1726
			CMMFMetaDataEntry* testData;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1727
			
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1728
			testData = aRecUtil->GetMetaDataEntryL(0);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1729
		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1730
			if((testData->Name() == name) && (testData->Value() == data))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1731
				{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1732
				ret = EPass;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1733
				}	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1734
				
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1735
			testData = aRecUtil->GetMetaDataEntryL(1);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1736
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1737
			if(!((testData->Name() == name2) &&	(testData->Value() == data2)))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1738
				{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1739
				ret = EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1740
				}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1741
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1742
		return ret;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1743
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1744
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1745
	// Audio file already contains meta data, and we couldn't remove it.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1746
	ERR_PRINTF1(_L("Audio file still contains metadata"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1747
	CleanupStack::PopAndDestroy(metaData[1]);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1748
	CleanupStack::PopAndDestroy(metaData[0]);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1749
	return EInconclusive;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1750
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1751
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1752
//------------------------------------------------------------------
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1753
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1754
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1755
 * Constructor
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1756
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1757
CTestMmfAclntRecPriority::CTestMmfAclntRecPriority(const TDesC& aTestName,const TDesC& aSectName)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1758
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1759
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1760
	// store the name of this test case
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1761
	// this is the name that is used by the script file
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1762
	// Each test step initialises it's own name
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1763
	iTestStepName = aTestName;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1764
	iSectName = aSectName;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1765
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1766
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1767
void CTestMmfAclntRecPriority::MchoComplete(TInt aID, TInt aError)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1768
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1769
	INFO_PRINTF1( _L("CTestMmfAclntRecPriority : MMdaObjectStateChangeObserver Callback for CMdaAudioRecorderUtility called"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1770
	if (iError != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1771
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1772
		iError = aError;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1773
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1774
		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1775
	INFO_PRINTF3( _L("iError %d ID %d"), iError, aID);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1776
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1777
	if(iFirstCallback == -1)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1778
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1779
		iFirstCallback = aID;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1780
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1781
		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1782
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1783
	if((--iCallbackCount) == 0)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1784
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1785
		CActiveScheduler::Stop();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1786
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1787
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1788
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1789
//------------------------------------------------------------------
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1790
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1791
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1792
 * Set Record priority
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1793
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1794
TVerdict CTestMmfAclntRecPriority::DoTestStepL( void )
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1795
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1796
	INFO_PRINTF1( _L("TestRecorder : Priority"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1797
	iError = KErrTimedOut;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1798
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1799
	TBuf<KSizeBuf>	filename;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1800
	TPtrC			filename1; 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1801
	if(!GetStringFromConfig(iSectName, _L("playerAudioFile"), filename1))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1802
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1803
		return EInconclusive;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1804
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1805
		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1806
	GetDriveName(filename);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1807
	filename.Append(filename1);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1808
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1809
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1810
    CMdaAudioRecorderUtility* recUtil[2];
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1811
	CStateCallbackHandler* callback[2];
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1812
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1813
	for(TInt i=0; i<2; i++)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1814
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1815
		callback[i] = new (ELeave) CStateCallbackHandler(i,this);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1816
		CleanupStack::PushL(callback[i]);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1817
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1818
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1819
	recUtil[0] = CMdaAudioRecorderUtility::NewL(*callback[0],NULL,EMdaPriorityNormal,EMdaPriorityPreferenceTimeAndQuality);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1820
	CleanupStack::PushL(recUtil[0]);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1821
	recUtil[1] = CMdaAudioRecorderUtility::NewL(*callback[1],NULL,EMdaPriorityMin,EMdaPriorityPreferenceNone);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1822
	CleanupStack::PushL(recUtil[1]);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1823
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1824
	INFO_PRINTF2(_L("CMdaAudioRecorderUtility[0]->OpenFileL(%S)"), &filename);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1825
	recUtil[0]->OpenFileL(filename);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1826
	// wait for initilisation callback #1
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1827
	iCallbackCount = 1;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1828
	INFO_PRINTF1( _L("Initialise CMdaAudioRecorderUtility #1"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1829
	CActiveScheduler::Start();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1830
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1831
	INFO_PRINTF2(_L("CMdaAudioRecorderUtility[1]->OpenFileL(%S)"), &filename);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1832
	recUtil[1]->OpenFileL(filename);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1833
	// wait for initilisation callback #2
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1834
	iCallbackCount = 1;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1835
	INFO_PRINTF1( _L("Initialise CMdaAudioRecorderUtility #2"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1836
	CActiveScheduler::Start();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1837
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1838
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1839
	if(iError == KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1840
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1841
		iError = KErrTimedOut;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1842
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1843
		recUtil[0]->PlayL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1844
		recUtil[1]->PlayL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1845
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1846
		INFO_PRINTF1( _L("Play CMdaAudioRecorderUtility"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1847
		INFO_PRINTF1( _L("Play CMdaAudioRecorderUtility"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1848
		// wait for play to complete
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1849
		iCallbackCount = 2;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1850
		iFirstCallback = -1;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1851
		CActiveScheduler::Start();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1852
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1853
		if((iError == KErrNone) && (iFirstCallback == 0))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1854
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1855
			CleanupStack::PopAndDestroy(4); // recUtil, callback
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1856
			return	EPass;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1857
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1858
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1859
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1860
	ERR_PRINTF2( _L("CMdaAudioRecorderUtility completed with error %d"),iError );
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1861
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1862
	CleanupStack::PopAndDestroy(4);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1863
	return	EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1864
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1865
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1866
//------------------------------------------------------------------
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1867
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1868
CTestMmfAclntRecBalance::CTestMmfAclntRecBalance(const TDesC& aTestName, const TDesC& aSectName, const TInt aBalance, TBool aNegative)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1869
	:CTestMmfAclntRecord(aTestName, aSectName, aNegative), iBalance(aBalance)	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1870
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1871
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1872
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1873
CTestMmfAclntRecBalance* CTestMmfAclntRecBalance::NewL(const TDesC& aTestName, const TDesC& aSectName,const TInt aBalance, TBool aNegative)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1874
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1875
	CTestMmfAclntRecBalance* self = new (ELeave) CTestMmfAclntRecBalance(aTestName, aSectName, aBalance, aNegative);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1876
	return self;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1877
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1878
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1879
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1880
 * Set recorder balance
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1881
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1882
TVerdict CTestMmfAclntRecBalance::DoTestL(CMdaAudioRecorderUtility* aRecUtil)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1883
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1884
	INFO_PRINTF2(_L("TestRecorder : Balance - (%d)"), iBalance);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1885
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1886
	TInt savedBalance = iBalance;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1887
	if (CheckPlaybackBalance(aRecUtil) == EPass)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1888
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1889
		iBalance = savedBalance;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1890
		if (CheckRecordBalance(aRecUtil) == EPass)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1891
			return EPass;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1892
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1893
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1894
	return EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1895
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1896
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1897
TVerdict CTestMmfAclntRecBalance::CheckPlaybackBalance(CMdaAudioRecorderUtility* aRecUtil)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1898
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1899
	TInt err = 0;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1900
	TUint theNumChanel = 0;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1901
	TRAP(err, theNumChanel = aRecUtil->DestinationNumberOfChannelsL());
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1902
	if(err != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1903
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1904
		return EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1905
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1906
		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1907
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1908
	TInt balance;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1909
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1910
	if (iBalance < KMinBalance)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1911
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1912
		err = aRecUtil->SetPlaybackBalance(iBalance);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1913
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1914
		if ((err == KErrArgument) && (iNegative))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1915
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1916
			return EPass;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1917
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1918
		else if ((err == KErrArgument) && (!iNegative))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1919
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1920
			return EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1921
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1922
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1923
		aRecUtil->GetPlaybackBalance(iBalance);	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1924
		if(iBalance == KMinBalance)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1925
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1926
			return EPass;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1927
			}	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1928
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1929
	else if (iBalance > KMaxBalance)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1930
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1931
		err = aRecUtil->SetPlaybackBalance(iBalance);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1932
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1933
		if ((err == KErrArgument) && (iNegative))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1934
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1935
			return EPass;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1936
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1937
		else if ((err == KErrArgument) && (!iNegative))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1938
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1939
			return EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1940
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1941
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1942
		aRecUtil->GetPlaybackBalance(iBalance);		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1943
		if(iBalance == KMaxBalance)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1944
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1945
			return EPass;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1946
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1947
			
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1948
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1949
	else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1950
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1951
		err = aRecUtil->SetPlaybackBalance(iBalance);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1952
		if(theNumChanel <= 1)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1953
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1954
			if(err != KErrNone)	// this is now supported
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1955
				return EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1956
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1957
		if ((err == KErrArgument) && (iNegative))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1958
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1959
			return EPass;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1960
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1961
		else if ((err == KErrArgument) && (!iNegative))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1962
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1963
			return EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1964
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1965
		else if(err != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1966
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1967
			return EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1968
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1969
			
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1970
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1971
		TInt	theRes = aRecUtil->GetPlaybackBalance(balance);	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1972
		if((theRes == KErrNone) && (balance == iBalance))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1973
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1974
			return EPass;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1975
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1976
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1977
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1978
	return EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1979
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1980
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1981
TVerdict CTestMmfAclntRecBalance::CheckRecordBalance(CMdaAudioRecorderUtility* aRecUtil)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1982
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1983
	TInt err = 0;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1984
	TUint theNumChanel = 0;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1985
	TRAP(err, theNumChanel = aRecUtil->DestinationNumberOfChannelsL());
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1986
	if(err != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1987
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1988
		return EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1989
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1990
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1991
	if (iBalance < KMinBalance)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1992
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1993
		err = aRecUtil->SetRecordBalance(iBalance);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1994
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1995
		if ((err == KErrArgument) && (iNegative))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1996
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1997
			return EPass;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1998
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1999
		else if ((err == KErrArgument) && (!iNegative))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2000
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2001
			return EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2002
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2003
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2004
		aRecUtil->GetRecordBalance(iBalance);			
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2005
		if(iBalance == KMinBalance)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2006
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2007
			return EPass;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2008
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2009
			
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2010
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2011
	else if (iBalance > KMaxBalance)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2012
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2013
		err = aRecUtil->SetRecordBalance(iBalance);	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2014
		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2015
		if ((err == KErrArgument) && (iNegative))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2016
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2017
			return EPass;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2018
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2019
		else if ((err == KErrArgument) && (!iNegative))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2020
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2021
			return EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2022
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2023
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2024
		aRecUtil->GetRecordBalance(iBalance);		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2025
		if(iBalance == KMaxBalance)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2026
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2027
			return EPass;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2028
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2029
			
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2030
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2031
	else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2032
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2033
		TInt balance;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2034
		err = aRecUtil->SetRecordBalance(iBalance);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2035
		if(theNumChanel <= 1)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2036
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2037
			if(err != KErrNone)		// this is now supported
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2038
				return EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2039
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2040
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2041
		if ((err == KErrArgument) && (iNegative))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2042
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2043
			return EPass;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2044
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2045
		else if ((err == KErrArgument) && (!iNegative))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2046
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2047
			return EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2048
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2049
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2050
		aRecUtil->GetRecordBalance(balance);		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2051
		if(balance == iBalance)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2052
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2053
			return EPass;
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
	return EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2058
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2059
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2060
//------------------------------------------------------------------
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2061
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2062
CTestMmfAclntRecLength::CTestMmfAclntRecLength(const TDesC& aTestName, const TDesC& aSectName, TBool aNegative)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2063
	:CTestMmfAclntRecord(aTestName, aSectName, aNegative)	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2064
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2065
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2066
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2067
CTestMmfAclntRecLength* CTestMmfAclntRecLength::NewL(const TDesC& aTestName, const TDesC& aSectName, TBool aNegative)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2068
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2069
	CTestMmfAclntRecLength* self = new (ELeave) CTestMmfAclntRecLength(aTestName, aSectName, aNegative);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2070
	return self;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2071
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2072
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2073
/** 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2074
 *Set maximum length of file in bytes and record
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2075
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2076
TVerdict CTestMmfAclntRecLength::DoTestL(CMdaAudioRecorderUtility* aRecUtil)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2077
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2078
	INFO_PRINTF1( _L("TestRecorder : SetMaxWriteLength"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2079
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2080
	TVerdict ret = EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2081
	TTimeIntervalMicroSeconds recTime(aRecUtil->RecordTimeAvailable());
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2082
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2083
	aRecUtil->SetMaxWriteLength(800);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2084
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2085
	if(aRecUtil->RecordTimeAvailable() != recTime)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2086
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2087
		ret = EPass;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2088
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2089
		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2090
	return	ret;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2091
	}
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
CTestMmfAclntRecFormats::CTestMmfAclntRecFormats(const TDesC& aTestName, const TDesC& aSectName, TBool aNegative)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2096
	:CTestMmfAclntRecord(aTestName, aSectName, aNegative)	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2097
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2098
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2099
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2100
CTestMmfAclntRecFormats* CTestMmfAclntRecFormats::NewL(const TDesC& aTestName, const TDesC& aSectName, TBool aNegative)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2101
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2102
	CTestMmfAclntRecFormats* self = new (ELeave) CTestMmfAclntRecFormats(aTestName, aSectName, aNegative);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2103
	return self;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2104
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2105
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2106
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2107
 * Get recordable formats.Test for supported mimetypes. 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2108
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2109
TVerdict CTestMmfAclntRecFormats::DoTestL(CMdaAudioRecorderUtility* aRecUtil)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2110
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2111
	INFO_PRINTF1( _L("TestRecorder : Formats"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2112
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2113
	TVerdict ret = EPass;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2114
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2115
	TInt recauMatches = 0;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2116
	TInt playauMatches = 0;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2117
	TInt recwavMatches = 0;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2118
	TInt playwavMathces	= 0;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2119
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2120
	const TInt KControllerAudioRecAuMatches = 4;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2121
	const TInt KControllerAudioPlayAuMatches = 4;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2122
	const TInt KControllerAudioRecWavMatches = 2;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2123
	// there are 2 .wav play plugins - the standard .WAV plugin and
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2124
	// the test MmfMp3Format plugin with 2 mime types each :
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2125
	const TInt KControllerAudioPlayWavMatches = 2;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2126
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2127
	RArray<TFourCC> codecs;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2128
	aRecUtil->GetSupportedDestinationDataTypesL(codecs);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2129
	TInt numCodecs = codecs.Count();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2130
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2131
	INFO_PRINTF2(_L("GetSupportedDestinationDataTypesL found %d codecs"), numCodecs);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2132
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2133
	// enhanced - to use CMMFControllerPluginSelectionParameters
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2134
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2135
	INFO_PRINTF1(_L("Querying record formats..."));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2136
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2137
	CMMFControllerPluginSelectionParameters* cSelect = CMMFControllerPluginSelectionParameters::NewLC();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2138
	CMMFFormatSelectionParameters* recFSelect = CMMFFormatSelectionParameters::NewLC();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2139
	CMMFFormatSelectionParameters* playFSelect = CMMFFormatSelectionParameters::NewLC();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2140
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2141
	RArray<TUid> mediaIds;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2142
	mediaIds.Append(KUidMediaTypeAudio);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2143
	cSelect->SetMediaIdsL(mediaIds, CMMFPluginSelectionParameters::EAllowOtherMediaIds);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2144
	cSelect->SetRequiredRecordFormatSupportL(*recFSelect); 	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2145
	cSelect->SetRequiredPlayFormatSupportL(*playFSelect); 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2146
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2147
	RMMFControllerImplInfoArray controllers; // Array to hold all the controllers support the match data
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2148
	CleanupResetAndDestroyPushL(controllers);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2149
	cSelect->ListImplementationsL(controllers);  // Populates the array with all the suitable controllers
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2150
	TInt numControllers = controllers.Count();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2151
	if(!numControllers)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2152
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2153
		ERR_PRINTF1(_L("Could not find any controllers"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2154
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2155
	else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2156
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2157
		INFO_PRINTF2(_L("Found %d controllers"), numControllers);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2158
		for(int i = 0; i < numControllers; i++)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2159
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2160
			INFO_PRINTF4(_L("- Controller: %d Uid: 0x%X  %S"),i, controllers[i]->Uid(), &controllers[i]->DisplayName());
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2161
			const RMMFFormatImplInfoArray& recFormats = controllers[i]->RecordFormats();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2162
			const RMMFFormatImplInfoArray& playFormats = controllers[i]->PlayFormats();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2163
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2164
			const CDesC8Array* fileExtensions = NULL;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2165
			const CDesC8Array* mimeTypes = NULL;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2166
			
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2167
			_LIT(KMimeTypeAudioBasic,	"audio/basic");
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2168
			_LIT(KMimeTypeAudioXAu, 	"audio/x-au");
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2169
			_LIT(KMimeTypeAudioAu, 		"audio/au");
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2170
			_LIT(KMimeTypeAudioXBasic,	"audio/x-basic");
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2171
			_LIT(KMimeTypeAudioWav, 	"audio/wav");
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2172
			_LIT(KMimeTypeAudioXWav, 	"audio/x-wav");
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2173
						
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2174
			_LIT(KWavFileExtension,		".wav");
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2175
			_LIT(KAuFileExtension,		".au");
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2176
			
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2177
				
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2178
			for(int recFormat = 0; recFormat < recFormats.Count(); recFormat++)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2179
				{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2180
				INFO_PRINTF2(_L("Record Format 0x%x"), recFormats[recFormat]->Uid());
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2181
				fileExtensions = &recFormats[recFormat]->SupportedFileExtensions();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2182
				INFO_PRINTF2(_L("File Extensions %d"), (fileExtensions ? fileExtensions->MdcaCount() : 0));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2183
				TBuf<24> fileType;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2184
				for(int fileExtn = 0; fileExtn < (fileExtensions ? fileExtensions->MdcaCount() : 0); fileExtn++)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2185
					{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2186
					fileType.Copy(fileExtensions->MdcaPoint(fileExtn));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2187
					INFO_PRINTF2(_L("-- %S"), &fileType);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2188
					}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2189
				
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2190
				mimeTypes = &recFormats[recFormat]->SupportedMimeTypes();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2191
				INFO_PRINTF2(_L("Mime Types: %d"), (mimeTypes ? mimeTypes->MdcaCount() : 0));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2192
				for(int mimeType = 0; mimeType < (mimeTypes ? mimeTypes->MdcaCount() : 0); mimeType++)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2193
					{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2194
					TBuf<24> ext16;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2195
					ext16.Copy(mimeTypes->MdcaPoint(mimeType));								
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2196
					if(fileType.Compare(KAuFileExtension)== KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2197
						{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2198
						switch (mimeType)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2199
							{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2200
							case 0:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2201
								if (ext16 == KMimeTypeAudioBasic)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2202
									{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2203
									recauMatches++;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2204
									}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2205
									
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2206
						 		else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2207
						 			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2208
						 			ret = EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2209
						 			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2210
									
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2211
								break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2212
							case 1:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2213
								if (ext16 == KMimeTypeAudioXAu)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2214
									{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2215
									recauMatches++;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2216
									}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2217
									
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2218
								else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2219
									{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2220
									ret = EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2221
									}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2222
									
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2223
								break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2224
							case 2:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2225
								if(ext16 == KMimeTypeAudioAu)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2226
									{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2227
									recauMatches++;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2228
									}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2229
									
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2230
								else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2231
									{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2232
									ret = EFail;	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2233
									}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2234
								break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2235
								
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2236
							case 3:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2237
								if(ext16 == KMimeTypeAudioXBasic)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2238
									{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2239
									recauMatches++;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2240
									}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2241
									
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2242
								else	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2243
									{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2244
									ret = EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2245
									}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2246
									
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2247
								break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2248
							default:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2249
								break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2250
							}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2251
						INFO_PRINTF2(_L("-- %S"), &ext16);								
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2252
						}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2253
					if(fileType.Compare(KWavFileExtension) == KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2254
						{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2255
						switch (mimeType)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2256
							{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2257
							case 0:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2258
								if(ext16 == KMimeTypeAudioWav)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2259
									{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2260
									recwavMatches++;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2261
									}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2262
									
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2263
								else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2264
									{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2265
									ret = EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2266
									}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2267
									
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2268
								break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2269
							case 1:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2270
								if(ext16 == KMimeTypeAudioXWav)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2271
									{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2272
									recwavMatches++;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2273
									}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2274
									
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2275
								else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2276
									{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2277
									ret = EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2278
									}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2279
								
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2280
								break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2281
								
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2282
							default:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2283
								break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2284
							}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2285
						INFO_PRINTF2(_L("-- %S"), &ext16);				
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2286
						}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2287
					} //mimetype
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2288
				} //recFormat
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2289
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2290
			for(int playFormat = 0; playFormat < playFormats.Count(); playFormat++)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2291
				{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2292
				INFO_PRINTF2(_L("Play Format 0x%x"), playFormats[playFormat]->Uid());
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2293
				fileExtensions = &playFormats[playFormat]->SupportedFileExtensions();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2294
				INFO_PRINTF2(_L("File Extensions %d"), (fileExtensions ? fileExtensions->MdcaCount() : 0));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2295
				TBuf<24> fileType;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2296
				for(int fileExtn = 0; fileExtn < (fileExtensions ? fileExtensions->MdcaCount() : 0); fileExtn++)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2297
					{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2298
					fileType.Copy(fileExtensions->MdcaPoint(fileExtn));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2299
					INFO_PRINTF2(_L("-- %S"), &fileType);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2300
					}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2301
				mimeTypes = &playFormats[playFormat]->SupportedMimeTypes();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2302
				INFO_PRINTF2(_L("Mime Types: %d"), (mimeTypes ? mimeTypes->MdcaCount() : 0));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2303
				for(int mimeType = 0; mimeType < (mimeTypes ? mimeTypes->MdcaCount() : 0); mimeType++)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2304
					{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2305
					TBuf<24> ext16;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2306
					ext16.Copy(mimeTypes->MdcaPoint(mimeType));							
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2307
					if(fileType.Compare(KAuFileExtension) == KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2308
						{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2309
						switch (mimeType)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2310
							{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2311
							case 0:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2312
								if (ext16 == KMimeTypeAudioBasic)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2313
									{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2314
									playauMatches++;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2315
									}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2316
									
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2317
								else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2318
									{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2319
									ret = EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2320
									}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2321
									
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2322
								break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2323
							case 1:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2324
								if (ext16 == KMimeTypeAudioXAu)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2325
									{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2326
									playauMatches++;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2327
									}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2328
									
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2329
								else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2330
									ret = EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2331
								break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2332
							case 2:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2333
								if(ext16 == KMimeTypeAudioAu)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2334
									playauMatches++;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2335
								else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2336
									ret = EFail;	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2337
								break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2338
							case 3:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2339
								if(ext16 == KMimeTypeAudioXBasic)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2340
									{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2341
									playauMatches++;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2342
									}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2343
								else	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2344
									ret = EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2345
								break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2346
							default:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2347
							break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2348
							}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2349
						INFO_PRINTF2(_L("-- %S"), &ext16);								
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2350
						}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2351
					if(fileType.Compare(KWavFileExtension)== KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2352
						{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2353
						switch (mimeType)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2354
							{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2355
							case 0:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2356
								if(ext16 == KMimeTypeAudioWav)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2357
									{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2358
									playwavMathces++;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2359
									}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2360
									
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2361
								else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2362
									ret = EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2363
								break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2364
							case 1:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2365
								if(ext16 == KMimeTypeAudioXWav)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2366
									{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2367
									playwavMathces++;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2368
									}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2369
									
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2370
								else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2371
									ret = EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2372
								break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2373
							default:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2374
								break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2375
							}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2376
						INFO_PRINTF2(_L("-- %S"), &ext16);				
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2377
						}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2378
					}//mimetype	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2379
				} //playFormat
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2380
			}	//controllers
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2381
		}//else condition
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2382
		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2383
	CleanupStack::PopAndDestroy(4);//controllers, recFSelect, playFSelect cSelect
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2384
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2385
	if((recauMatches != KControllerAudioRecAuMatches || playauMatches != KControllerAudioPlayAuMatches) ||
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2386
	(recwavMatches != KControllerAudioRecWavMatches || playwavMathces != KControllerAudioPlayWavMatches))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2387
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2388
		ret = EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2389
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2390
		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2391
	else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2392
		ret =  EPass;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2393
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2394
	return ret;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2395
	} //end of function
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2396
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2397
		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2398
//------------------------------------------------------------------
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2399
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2400
// Negative tests
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2401
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2402
//------------------------------------------------------------------
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2403
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2404
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2405
 * Constructor
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2406
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2407
CTestMmfAclntRecDelete::CTestMmfAclntRecDelete(const TDesC& aTestName, const TDesC& aSectName)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2408
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2409
	// store the name of this test case
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2410
	// this is the name that is used by the script file
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2411
	// Each test step initialises it's own name
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2412
	iTestStepName = aTestName; 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2413
	iSectName = aSectName;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2414
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2415
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2416
void CTestMmfAclntRecDelete::MoscoStateChangeEvent(CBase* /*aObject*/, TInt /*aPreviousState*/, TInt /*aCurrentState*/, TInt aErrorCode)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2417
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2418
	iError = aErrorCode;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2419
	INFO_PRINTF1( _L("CTestMmfAclntRecDelete : MMdaObjectStateChangeObserver Callback for CMdaAudioRecorderUtility complete"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2420
	INFO_PRINTF2( _L("iError %d "), iError);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2421
	CActiveScheduler::Stop();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2422
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2423
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2424
TVerdict CTestMmfAclntRecDelete::DoTestStepPreambleL()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2425
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2426
	TVerdict verdict = EPass;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2427
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2428
	// Delete the output file (will probably have been used by other tests)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2429
	RFs fs;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2430
	TInt err = fs.Connect();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2431
	if (err != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2432
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2433
		verdict = EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2434
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2435
	else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2436
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2437
		TBuf<KSizeBuf>	filename;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2438
		TPtrC			filename1; 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2439
		if (!GetStringFromConfig(iSectName, _L("outputAudioFile"), filename1))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2440
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2441
			verdict = EInconclusive;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2442
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2443
		else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2444
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2445
			GetDriveName(filename);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2446
			filename.Append(filename1);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2447
			err = fs.Delete(filename);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2448
			if (!((err == KErrNone) || (err == KErrNotFound)))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2449
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2450
				verdict = EInconclusive;
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
		fs.Close();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2455
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2456
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2457
	if (verdict == EPass)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2458
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2459
		verdict = CTestMmfAclntStep::DoTestStepPreambleL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2460
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2461
		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2462
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2463
	return verdict;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2464
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2465
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2466
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2467
 * Record utility - Delete object before record operation has completed.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2468
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2469
TVerdict CTestMmfAclntRecDelete::DoTestStepL( void )
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2470
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2471
	INFO_PRINTF1( _L("TestRecorder : Delete"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2472
	iError = KErrTimedOut;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2473
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2474
	TBuf<KSizeBuf>	filename;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2475
	TPtrC			filename1; 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2476
	if(!GetStringFromConfig(iSectName, _L("outputAudioFile"), filename1))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2477
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2478
		return EInconclusive;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2479
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2480
		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2481
	GetDriveName(filename);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2482
	filename.Append(filename1);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2483
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2484
	__MM_HEAP_MARK;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2485
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2486
	CMdaAudioRecorderUtility* recUtil = CMdaAudioRecorderUtility::NewL(*this);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2487
	CleanupStack::PushL(recUtil);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2488
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2489
	// Add create file for Ogg-tests
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2490
	if(iSectName == _L("SectionOggRec"))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2491
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2492
		RFs fs;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2493
		User::LeaveIfError(fs.Connect());
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2494
		RFile file;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2495
		User::LeaveIfError(file.Replace(fs,filename,EFileWrite));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2496
		file.Close();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2497
		fs.Close();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2498
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2499
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2500
	INFO_PRINTF2(_L("CMdaAudioRecorderUtility->OpenFileL(%S)"), &filename);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2501
	recUtil->OpenFileL(filename);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2502
	// wait
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2503
	INFO_PRINTF1( _L("Initialise CMdaAudioRecorderUtility"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2504
	CActiveScheduler::Start();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2505
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2506
	if (iError == KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2507
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2508
		TVerdict ret = EPass;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2509
		INFO_PRINTF1( _L("Record CMdaAudioRecorderUtility"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2510
		recUtil->RecordL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2511
		INFO_PRINTF1( _L("Destroy CMdaAudioRecorderUtility"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2512
		CleanupStack::PopAndDestroy(recUtil);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2513
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2514
		// Check that the file no longer exists
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2515
		RFs fs;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2516
		TInt err = fs.Connect();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2517
		if (err != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2518
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2519
			INFO_PRINTF2(_L("Error connecting to file server %d"), err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2520
			ret = EInconclusive;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2521
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2522
		else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2523
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2524
			TEntry entry;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2525
			if ((fs.Entry(filename, entry) == KErrNone) && (entry.iSize > 0))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2526
				{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2527
				ERR_PRINTF1(_L("ERROR: File exists and size is greater than ZERO"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2528
				ret = EFail;	// file exists - test fails	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2529
				}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2530
			else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2531
				{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2532
				ret = EPass;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2533
				}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2534
			fs.Close();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2535
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2536
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2537
		__MM_HEAP_MARKEND;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2538
		User::Heap().Check(); 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2539
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2540
		return ret;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2541
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2542
	CleanupStack::PopAndDestroy(recUtil);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2543
	return	EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2544
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2545
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2546
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2547
//------------------------------------------------------------------
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2548
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2549
CTestMmfAclntAudioRecordVolume::CTestMmfAclntAudioRecordVolume(const TDesC& aTestName, const TDesC& aSectName, TBool aNegative, const TInt aVolume)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2550
	: CTestMmfAclntRecord(aTestName, aSectName,aNegative), iVolume(aVolume)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2551
	{}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2552
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2553
CTestMmfAclntAudioRecordVolume* CTestMmfAclntAudioRecordVolume::NewL(const TDesC& aTestName, const TDesC& aSectName, TBool aNegative, const TInt aVolume)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2554
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2555
	CTestMmfAclntAudioRecordVolume* self = new (ELeave) CTestMmfAclntAudioRecordVolume(aTestName, aSectName,aNegative,aVolume);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2556
	return self;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2557
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2558
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2559
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2560
TVerdict CTestMmfAclntAudioRecordVolume::DoTestL(CMdaAudioRecorderUtility* aRecUtil)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2561
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2562
	INFO_PRINTF1( _L("TestRecordUtils : Audio Record Volume"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2563
	TVerdict ret = EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2564
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2565
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2566
	// Check maxvolume function
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2567
	if(iVolume == -1)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2568
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2569
		iVolume = aRecUtil->MaxVolume();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2570
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2571
	// Volume is truncated to maxvolume
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2572
	if(iVolume > aRecUtil->MaxVolume())
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2573
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2574
		TInt volume;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2575
		aRecUtil->SetVolume(iVolume);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2576
		aRecUtil->GetVolume(volume);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2577
		if(volume == aRecUtil->MaxVolume())
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2578
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2579
			ret = EPass;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2580
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2581
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2582
	// Volume is truncated to 0
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2583
	else if(iVolume < 0)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2584
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2585
		TInt volume;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2586
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2587
		aRecUtil->SetVolume(iVolume);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2588
		aRecUtil->GetVolume(volume);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2589
		if(volume == 0)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2590
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2591
			ret = EPass;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2592
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2593
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2594
	// Set volume and check
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2595
	else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2596
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2597
		TInt volume;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2598
		aRecUtil->SetVolume(iVolume);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2599
		aRecUtil->GetVolume(volume);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2600
		if(volume == iVolume)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2601
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2602
			ret = EPass;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2603
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2604
			
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2605
		else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2606
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2607
			INFO_PRINTF3( _L("Expected volume: %d, received volume : %d"), iVolume, volume);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2608
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2609
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2610
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2611
	return ret;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2612
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2613
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2614
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2615
CTestMmfAclntAudioRecordRamp::CTestMmfAclntAudioRecordRamp(const TDesC& aTestName, const TDesC& aSectName,TBool aNegative)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2616
	: CTestMmfAclntRecord(aTestName, aSectName,aNegative)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2617
	{}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2618
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2619
CTestMmfAclntAudioRecordRamp* CTestMmfAclntAudioRecordRamp::NewL(const TDesC& aTestName, const TDesC& aSectName,TBool aNegative)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2620
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2621
	CTestMmfAclntAudioRecordRamp* self = new (ELeave) CTestMmfAclntAudioRecordRamp(aTestName, aSectName,aNegative);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2622
	return self;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2623
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2624
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2625
TVerdict CTestMmfAclntAudioRecordRamp::DoTestL(CMdaAudioRecorderUtility* aRecUtil)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2626
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2627
	INFO_PRINTF1( _L("TestRecordUtils : Audio Ramp"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2628
	TVerdict ret = EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2629
	TTimeIntervalMicroSeconds ramp(100);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2630
	aRecUtil->SetVolumeRamp(ramp);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2631
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2632
	aRecUtil->RecordL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2633
	CActiveScheduler::Start(); // wait for open -> record
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2634
	if (iError != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2635
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2636
		// DEF127335
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2637
	   	// OggRecordController does not support recording into an already existing file.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2638
	   	// This is due to unavailability of APIs at the level of Ogg Vorbis C libraries.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2639
		if (iTestStepName == _L("MM-MMF-ACLNTOGG-I-0123-HP") && iError == KErrNotSupported)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2640
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2641
			INFO_PRINTF1(_L("Expected Result: OggRecordController returned KErrNotSupported(-5)"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2642
			return EPass;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2643
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2644
		else 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2645
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2646
			return EFail;	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2647
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2648
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2649
		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2650
	iReportedState = aRecUtil->State();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2651
	if(iReportedState == CMdaAudioClipUtility::ERecording )
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2652
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2653
		ret = EPass;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2654
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2655
		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2656
	User::After(KOneSecond);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2657
	aRecUtil->Stop();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2658
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2659
	return ret;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2660
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2661
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2662
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2663
//------------------------------------------------------------------
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2664
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2665
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2666
CTestMmfAclntRecordDestChannels::CTestMmfAclntRecordDestChannels(const TDesC& aTestName, const TDesC& aSectName,const TDesC& aKeyName, const TInt aNumberOfChannels,const TTestFormat aFormat, const TBool aCreateDes)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2667
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2668
	// store the name of this test case
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2669
	// this is the name that is used by the script file
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2670
	// Each test step initialises it's own name
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2671
	iTestStepName = aTestName;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2672
	iSectName = aSectName;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2673
	iKeyName = aKeyName;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2674
	iTestFormat = aFormat;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2675
	iCreateDes = aCreateDes;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2676
	iNumberOfChannels=aNumberOfChannels;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2677
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2678
	iSize = 0;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2679
	iAudio = NULL;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2680
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2681
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2682
CTestMmfAclntRecordDestChannels* CTestMmfAclntRecordDestChannels::NewL(const TDesC& aTestName, const TDesC& aSectName,const TDesC& aKeyName, const TInt aNumberOfChannels, const TTestFormat aFormat,const TBool aCreateDes)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2683
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2684
	CTestMmfAclntRecordDestChannels* self = new (ELeave) CTestMmfAclntRecordDestChannels(aTestName,aSectName,aKeyName,aNumberOfChannels,aFormat,aCreateDes);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2685
	return self;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2686
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2687
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2688
CTestMmfAclntRecordDestChannels* CTestMmfAclntRecordDestChannels::NewLC(const TDesC& aTestName, const TDesC& aSectName,const TDesC& aKeyName, const TInt aNumberOfChannels, const TTestFormat aFormat, const TBool aCreateDes)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2689
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2690
	CTestMmfAclntRecordDestChannels* self = CTestMmfAclntRecordDestChannels::NewLC(aTestName,aSectName,aKeyName,aNumberOfChannels,aFormat,aCreateDes);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2691
	CleanupStack::PushL(self);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2692
	return self;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2693
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2694
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2695
void CTestMmfAclntRecordDestChannels::MoscoStateChangeEvent(CBase* /*aObject*/, TInt aPreviousState, TInt aCurrentState, TInt aErrorCode)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2696
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2697
	iError = aErrorCode;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2698
	INFO_PRINTF4( _L("MMdaObjectStateChangeObserver: previous state: %d current state: %d error: %d"),aPreviousState, aCurrentState, aErrorCode);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2699
	CActiveScheduler::Stop();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2700
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2701
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2702
TVerdict CTestMmfAclntRecordDestChannels::DoTestStepPreambleL()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2703
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2704
	SetupFormatL(iTestFormat);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2705
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2706
	switch (iTestFormat) 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2707
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2708
		case EPcm16Wav:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2709
		case EAlawWav:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2710
		case EPcm8:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2711
			iHeaderSize = KWavFileUncompressedDataHeaderSize; //(see mmfwavformat.cpp, CreateSinkBufferOfSizeL())
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2712
			iFrameSize = 4096;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2713
			break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2714
		case EImaAdpcmWav:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2715
		case EImasPcmWav:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2716
			iHeaderSize = KWavFileCompressedDataHeaderSize + KImaAdpcmFactChunkSize;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2717
			iFrameSize = 4096;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2718
			break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2719
		case EMulawRaw:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2720
		case EPcmU8:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2721
		case EPcmU16:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2722
			iHeaderSize = 0;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2723
			iFrameSize = 4096;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2724
			break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2725
		case EGsmWav:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2726
			iHeaderSize = KWavFileCompressedDataHeaderSize + KGSMFactChunkSize;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2727
			iFrameSize = 4096;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2728
			break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2729
		default:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2730
			/*skip*/ ;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2731
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2732
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2733
	if(!iCreateDes)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2734
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2735
		RFs fs;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2736
		RFile file;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2737
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2738
		TBuf<KSizeBuf>	filename;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2739
		TPtrC			filename1; 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2740
		if(!GetStringFromConfig(iSectName, iKeyName, filename1))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2741
			return EInconclusive;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2742
		GetDriveName(filename);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2743
		filename.Append(filename1);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2744
		INFO_PRINTF2(_L("File for test - %S"), &filename);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2745
		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2746
		User::LeaveIfError(fs.Connect());
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2747
		User::LeaveIfError(file.Open(fs,filename,EFileRead));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2748
		CleanupClosePushL(file);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2749
		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2750
		User::LeaveIfError(file.Size(iSize));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2751
		INFO_PRINTF2(_L("size of file = %d\n"),iSize);//Statement Changed under DEF105143
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2752
		iAudio = HBufC8::NewMaxL(iSize);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2753
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2754
		// Read a file into a descriptor
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2755
		TPtr8 bufferDes(iAudio->Des());
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2756
		User::LeaveIfError(file.Read(bufferDes));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2757
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2758
		CleanupStack::PopAndDestroy(); //file
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2759
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2760
	return CTestMmfAclntStep::DoTestStepPreambleL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2761
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2762
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2763
TVerdict CTestMmfAclntRecordDestChannels::DoTestStepPostambleL()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2764
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2765
	delete iAudio;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2766
	return CTestMmfAclntStep::DoTestStepPostambleL();
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
 * Open a descriptor and record
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2771
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2772
TVerdict CTestMmfAclntRecordDestChannels::DoTestStepL( void )
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2773
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2774
	INFO_PRINTF1( _L("TestRecorder : Record Des"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2775
	TVerdict ret = EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2776
	HBufC8* audio = NULL;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2777
	TMdaDesClipLocation* location = NULL;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2778
	TInt err = KErrNone;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2779
	RArray<TUint> channels;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2780
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2781
	CMdaAudioRecorderUtility* recUtil = CMdaAudioRecorderUtility::NewL(*this);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2782
	CleanupStack::PushL(recUtil);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2783
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2784
	// Add create file for Ogg-tests
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2785
	if(iSectName == _L("SectionOggRec"))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2786
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2787
		TBuf<KSizeBuf>	filename;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2788
		TPtrC			filename1; 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2789
		if(!GetStringFromConfig(iSectName, iKeyName, filename1))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2790
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2791
			return EInconclusive;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2792
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2793
			
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2794
		GetDriveName(filename);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2795
		filename.Append(filename1);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2796
		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2797
		RFs fs;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2798
		User::LeaveIfError(fs.Connect());
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2799
		RFile file;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2800
		User::LeaveIfError(file.Replace(fs,filename,EFileWrite));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2801
		file.Close();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2802
		fs.Close();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2803
		recUtil->OpenFileL(filename);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2804
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2805
	else if(!iCreateDes)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2806
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2807
		audio=iAudio;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2808
		TPtr8 bufferDes(iAudio->Des());
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2809
		recUtil->OpenDesL(bufferDes);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2810
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2811
	else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2812
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2813
		iSize = KRecSize; // value is not been set yet.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2814
		audio = HBufC8::NewMaxLC(iSize);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2815
		TPtr8 bufferDes(audio->Des());
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2816
		bufferDes.SetLength(0);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2817
		location = new (ELeave) TMdaDesClipLocation(bufferDes);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2818
		recUtil->OpenL(location,iFormat,iCodec,&iAudioSettings);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2819
		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2820
		delete location; 		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2821
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2822
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2823
	iError = KErrTimedOut;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2824
	INFO_PRINTF1( _L("Initialise CMdaAudioRecorderUtility"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2825
	CActiveScheduler::Start();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2826
	TInt numChannels=-1;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2827
	if(iError == KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2828
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2829
		TRAP(err,recUtil->GetSupportedNumberOfChannelsL(channels));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2830
		if(err!=KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2831
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2832
			INFO_PRINTF2(_L("CMdaAudioRecorderUtility::GetSupportedNumberOfChannelsL leave with error %d"),err);		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2833
			if(iCreateDes)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2834
				{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2835
				CleanupStack::PopAndDestroy(audio);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2836
				}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2837
				
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2838
			CleanupStack::PopAndDestroy(recUtil);	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2839
			User::After(KOneSecond);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2840
			return ret;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2841
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2842
		TRAP(err,recUtil->SetDestinationNumberOfChannelsL(1));//@@@
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2843
		if(err!=KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2844
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2845
			INFO_PRINTF2(_L("CMdaAudioRecorderUtility::SetDestinationNumberOfChannelsL leave with error %d"),err);		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2846
			if(iCreateDes)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2847
				{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2848
				CleanupStack::PopAndDestroy(audio);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2849
				}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2850
				
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2851
			CleanupStack::PopAndDestroy(recUtil);	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2852
			User::After(KOneSecond);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2853
			return ret;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2854
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2855
		TRAP(err,numChannels = recUtil->DestinationNumberOfChannelsL());
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2856
		if(err!=KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2857
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2858
			INFO_PRINTF2(_L("CMdaAudioRecorderUtility::DestinationNumberOfChannelsL leave with error %d"),err);		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2859
			if(iCreateDes)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2860
				{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2861
				CleanupStack::PopAndDestroy(audio);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2862
				}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2863
				
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2864
			CleanupStack::PopAndDestroy(recUtil);	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2865
			User::After(KOneSecond);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2866
			return ret;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2867
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2868
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2869
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2870
	if(numChannels==iNumberOfChannels)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2871
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2872
		ret = EPass;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2873
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2874
		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2875
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2876
	if (ret != EPass)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2877
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2878
		ERR_PRINTF2( _L("CMdaAudioRecorderUtility failed with error %d"),iError );
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2879
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2880
		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2881
	if(iCreateDes)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2882
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2883
		CleanupStack::PopAndDestroy(audio);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2884
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2885
		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2886
	CleanupStack::PopAndDestroy(recUtil);	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2887
	User::After(KOneSecond);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2888
	return ret;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2889
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2890
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2891
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2892
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2893
//------------------------------------------------------------------
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2894
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2895
CTestMmfAclntRecordSetPriority::CTestMmfAclntRecordSetPriority(const TDesC& aTestName, const TDesC& aSectName, TBool aNegative)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2896
	: CTestMmfAclntRecord(aTestName, aSectName,aNegative)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2897
	{}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2898
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2899
CTestMmfAclntRecordSetPriority* CTestMmfAclntRecordSetPriority::NewL(const TDesC& aTestName, const TDesC& aSectName, TBool aNegative)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2900
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2901
	CTestMmfAclntRecordSetPriority* self = new (ELeave) CTestMmfAclntRecordSetPriority(aTestName, aSectName,aNegative);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2902
	return self;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2903
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2904
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2905
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2906
TVerdict CTestMmfAclntRecordSetPriority::DoTestL(CMdaAudioRecorderUtility* aRecUtil)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2907
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2908
	INFO_PRINTF1( _L("TestRecordUtils : SetPriority"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2909
	TVerdict ret = EPass;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2910
	TInt err = KErrNone;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2911
	TRAP(err,aRecUtil->SetPriority(EMdaPriorityMin,EMdaPriorityPreferenceNone));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2912
	if(err!=KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2913
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2914
		INFO_PRINTF2(_L("CMdaAudioRecorderUtility::SetPriority (1st call) leave with error %d"),err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2915
		ret = EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2916
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2917
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2918
	TRAP(err,aRecUtil->SetPriority(EMdaPriorityNormal,EMdaPriorityPreferenceTime));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2919
	if(err!=KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2920
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2921
		INFO_PRINTF2(_L("CMdaAudioRecorderUtility::SetPriority (2nd call) leave with error %d"),err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2922
		ret = EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2923
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2924
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2925
	TRAP(err,aRecUtil->SetPriority(EMdaPriorityMax,EMdaPriorityPreferenceTimeAndQuality));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2926
	if(err!=KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2927
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2928
		INFO_PRINTF2(_L("CMdaAudioRecorderUtility::SetPriority (3rd call) leave with error %d"),err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2929
		ret = EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2930
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2931
	return ret;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2932
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2933
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
CTestMmfAclntRecordDestSampleRate::CTestMmfAclntRecordDestSampleRate(const TDesC& aTestName, const TDesC& aSectName,const TDesC& aKeyName,const TTestFormat aFormat, const TBool aCreateDes)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2938
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2939
	// store the name of this test case
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2940
	// this is the name that is used by the script file
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2941
	// Each test step initialises it's own name
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2942
	iTestStepName = aTestName;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2943
	iSectName = aSectName;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2944
	iKeyName = aKeyName;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2945
	iTestFormat = aFormat;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2946
	iCreateDes = aCreateDes;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2947
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2948
	iSize = 0;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2949
	iAudio = NULL;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2950
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2951
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2952
CTestMmfAclntRecordDestSampleRate* CTestMmfAclntRecordDestSampleRate::NewL(const TDesC& aTestName, const TDesC& aSectName,const TDesC& aKeyName, const TTestFormat aFormat,const TBool aCreateDes)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2953
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2954
	CTestMmfAclntRecordDestSampleRate* self = new (ELeave) CTestMmfAclntRecordDestSampleRate(aTestName,aSectName,aKeyName,aFormat,aCreateDes);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2955
	return self;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2956
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2957
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2958
CTestMmfAclntRecordDestSampleRate* CTestMmfAclntRecordDestSampleRate::NewLC(const TDesC& aTestName, const TDesC& aSectName,const TDesC& aKeyName, const TTestFormat aFormat, const TBool aCreateDes)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2959
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2960
	CTestMmfAclntRecordDestSampleRate* self = CTestMmfAclntRecordDestSampleRate::NewLC(aTestName,aSectName,aKeyName,aFormat,aCreateDes);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2961
	CleanupStack::PushL(self);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2962
	return self;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2963
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2964
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2965
void CTestMmfAclntRecordDestSampleRate::MoscoStateChangeEvent(CBase* /*aObject*/, TInt aPreviousState, TInt aCurrentState, TInt aErrorCode)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2966
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2967
	iError = aErrorCode;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2968
	INFO_PRINTF4( _L("MMdaObjectStateChangeObserver: previous state: %d current state: %d error: %d"),aPreviousState, aCurrentState, aErrorCode);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2969
	CActiveScheduler::Stop();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2970
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2971
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2972
TVerdict CTestMmfAclntRecordDestSampleRate::DoTestStepPreambleL()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2973
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2974
	SetupFormatL(iTestFormat);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2975
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2976
	switch (iTestFormat) 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2977
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2978
		case EPcm16Wav:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2979
		case EAlawWav:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2980
		case EPcm8:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2981
			iHeaderSize = KWavFileUncompressedDataHeaderSize; //(see mmfwavformat.cpp, CreateSinkBufferOfSizeL())
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2982
			iFrameSize = 4096;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2983
			break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2984
		case EImaAdpcmWav:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2985
		case EImasPcmWav:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2986
			iHeaderSize = KWavFileCompressedDataHeaderSize + KImaAdpcmFactChunkSize;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2987
			iFrameSize = 4096;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2988
			break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2989
		case EMulawRaw:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2990
		case EPcmU8:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2991
		case EPcmU16:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2992
			iHeaderSize = 0;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2993
			iFrameSize = 4096;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2994
			break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2995
		case EGsmWav:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2996
			iHeaderSize = KWavFileCompressedDataHeaderSize + KGSMFactChunkSize;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2997
			iFrameSize = 4096;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2998
			break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2999
		default:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3000
			/*skip*/ ;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3001
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3002
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3003
	if(!iCreateDes)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3004
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3005
		RFs fs;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3006
		RFile file;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3007
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3008
		TBuf<KSizeBuf>	filename;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3009
		TPtrC			filename1; 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3010
		if(!GetStringFromConfig(iSectName, iKeyName, filename1))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3011
			return EInconclusive;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3012
		GetDriveName(filename);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3013
		filename.Append(filename1);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3014
		INFO_PRINTF2(_L("File for test - %S"), &filename);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3015
		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3016
		User::LeaveIfError(fs.Connect());
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3017
		User::LeaveIfError(file.Open(fs,filename,EFileRead));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3018
		CleanupClosePushL(file);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3019
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3020
		User::LeaveIfError(file.Size(iSize));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3021
		INFO_PRINTF2(_L("size of file = %d\n"),iSize);//Statement Changed under DEF105143
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3022
		iAudio = HBufC8::NewMaxL(iSize);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3023
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3024
		// Read a file into a descriptor
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3025
		TPtr8 bufferDes(iAudio->Des());
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3026
		User::LeaveIfError(file.Read(bufferDes));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3027
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3028
		CleanupStack::PopAndDestroy(); //file
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3029
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3030
	return CTestMmfAclntStep::DoTestStepPreambleL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3031
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3032
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3033
TVerdict CTestMmfAclntRecordDestSampleRate::DoTestStepPostambleL()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3034
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3035
	delete iAudio;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3036
	return CTestMmfAclntStep::DoTestStepPostambleL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3037
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3038
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3039
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3040
 * Open a descriptor and record
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3041
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3042
TVerdict CTestMmfAclntRecordDestSampleRate::DoTestStepL( void )
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3043
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3044
	INFO_PRINTF1( _L("TestRecorder : Destination SampleRate"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3045
	TVerdict ret = EPass;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3046
	HBufC8* audio = NULL;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3047
	TMdaDesClipLocation* location = NULL;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3048
	CMdaAudioRecorderUtility* recUtil = CMdaAudioRecorderUtility::NewL(*this);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3049
	CleanupStack::PushL(recUtil);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3050
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3051
	// Add create file for Ogg-tests
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3052
	if(iSectName == _L("SectionOggRec"))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3053
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3054
		TBuf<KSizeBuf>	filename;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3055
		TPtrC			filename1; 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3056
		if(!GetStringFromConfig(iSectName, iKeyName, filename1))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3057
			return EInconclusive;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3058
		GetDriveName(filename);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3059
		filename.Append(filename1);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3060
		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3061
		RFs fs;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3062
		User::LeaveIfError(fs.Connect());
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3063
		RFile file;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3064
		User::LeaveIfError(file.Replace(fs,filename,EFileWrite));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3065
		file.Close();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3066
		fs.Close();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3067
		recUtil->OpenFileL(filename);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3068
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3069
	else if(!iCreateDes)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3070
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3071
		audio=iAudio;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3072
		TPtr8 bufferDes(iAudio->Des());
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3073
		recUtil->OpenDesL(bufferDes);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3074
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3075
	else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3076
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3077
		iSize = KRecSize; // value is not been set yet.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3078
		audio = HBufC8::NewMaxLC(iSize);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3079
		TPtr8 bufferDes(audio->Des());
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3080
		bufferDes.SetLength(0);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3081
		location = new (ELeave) TMdaDesClipLocation(bufferDes);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3082
		recUtil->OpenL(location,iFormat,iCodec,&iAudioSettings);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3083
		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3084
		delete location;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3085
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3086
	CActiveScheduler::Start();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3087
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3088
	iError = KErrTimedOut;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3089
	TInt err = KErrNone;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3090
	RArray<TUint> rates;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3091
	TRAP(err,recUtil->GetSupportedSampleRatesL(rates));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3092
	if(err!=KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3093
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3094
		INFO_PRINTF2(_L("CMdaAudioRecorderUtility::GetSupportedSampleRatesL leave with error %d"),err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3095
		ret = EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3096
		if(iCreateDes)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3097
			CleanupStack::PopAndDestroy(audio);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3098
		CleanupStack::PopAndDestroy(recUtil);	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3099
		User::After(KOneSecond);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3100
		return ret;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3101
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3102
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3103
	TInt numRates = rates.Count();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3104
	for(TInt i=0;i<numRates;i++)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3105
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3106
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3107
		INFO_PRINTF2(_L("CMdaAudioRecorderUtility::SetDestinationSampleRateL(%d)"),rates[i]);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3108
		TUint sr = rates[i];
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3109
		TRAP(err,recUtil->SetDestinationSampleRateL(sr));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3110
		if(err!=KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3111
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3112
			INFO_PRINTF3(_L("CMdaAudioRecorderUtility::SetDestinationSampleRateL(%d) leave with error : %d"),sr,err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3113
			ret = EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3114
			break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3115
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3116
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3117
			TUint rate=0;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3118
			TRAP(err,rate = recUtil->DestinationSampleRateL());
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3119
			if(err!=KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3120
				{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3121
				INFO_PRINTF2(_L("CMdaAudioRecorderUtility::DestinationSampleRateL leave with error %d"),err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3122
				ret = EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3123
				}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3124
			else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3125
				{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3126
				if(rate!=rates[i])
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3127
					{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3128
					ret = EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3129
					INFO_PRINTF1(_L("Rate mismatch"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3130
					}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3131
					else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3132
					{	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3133
					INFO_PRINTF1(_L("Rates match"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3134
					}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3135
				}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3136
		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3137
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3138
	if(iCreateDes)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3139
		CleanupStack::PopAndDestroy(audio);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3140
	CleanupStack::PopAndDestroy(recUtil);	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3141
	User::After(KOneSecond);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3142
	return ret;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3143
	}	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3144
//------------------------------------------------------------------
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3145
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3146
CTestMmfAclntRecordDestBitRate::CTestMmfAclntRecordDestBitRate(const TDesC& aTestName, const TDesC& aSectName, TBool aNegative)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3147
	: CTestMmfAclntRecord(aTestName, aSectName, aNegative)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3148
	{}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3149
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3150
CTestMmfAclntRecordDestBitRate* CTestMmfAclntRecordDestBitRate::NewL(const TDesC& aTestName, const TDesC& aSectName, TBool aNegative)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3151
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3152
	CTestMmfAclntRecordDestBitRate* self = new (ELeave) CTestMmfAclntRecordDestBitRate(aTestName, aSectName, aNegative);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3153
	return self;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3154
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3155
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3156
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3157
TVerdict CTestMmfAclntRecordDestBitRate::DoTestL(CMdaAudioRecorderUtility* aRecUtil)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3158
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3159
	INFO_PRINTF1( _L("TestRecordUtils : Destination Bit Rate"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3160
	TVerdict ret = EPass;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3161
	TInt err = KErrNone;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3162
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3163
	// Add create file for Ogg-tests
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3164
	if(iSectName == _L("SectionOggRec"))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3165
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3166
		TPtrC filename;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3167
		if (!GetStringFromConfig(iSectName, _L("outputAudioFile"), filename))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3168
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3169
			INFO_PRINTF1(_L("Error getting filename from INI file"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3170
			return EInconclusive;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3171
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3172
		RFs fs;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3173
		User::LeaveIfError(fs.Connect());
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3174
		RFile file;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3175
		User::LeaveIfError(file.Replace(fs,filename,EFileWrite));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3176
		file.Close();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3177
		fs.Close();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3178
		// Open the file
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3179
		aRecUtil->OpenFileL(filename);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3180
		INFO_PRINTF2(_L("CMdaAudioRecorderUtility->OpenFileL(%S)"), &filename);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3181
		CActiveScheduler::Start();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3182
		if (iError != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3183
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3184
			INFO_PRINTF2(_L("Error opening file for recording"), iError);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3185
			return EInconclusive;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3186
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3187
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3188
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3189
	RArray<TUint> rates;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3190
	TRAP(err,aRecUtil->GetSupportedBitRatesL(rates));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3191
	// in Typhoon KErrNotSupported is expected
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3192
	if(err==KErrNotSupported)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3193
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3194
		//test the other bitrate functions for code coverage (and behaviour)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3195
		TRAP(err,aRecUtil->SetDestinationBitRateL(100)); // arbitrary value since KErrNotSupported is expected anyway
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3196
		if (err != KErrNotSupported)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3197
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3198
			return EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3199
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3200
			
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3201
		TInt rate=0;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3202
		TRAP(err, rate=aRecUtil->DestinationBitRateL());
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3203
		if (err != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3204
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3205
			return EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3206
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3207
			
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3208
		INFO_PRINTF3(_L("CMdaAudioRecorderUtility::GetSupportedBitRatesL() leave with error %d bitrate of %d"),err, rate);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3209
		ret = EPass;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3210
		return ret;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3211
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3212
	if(err!=KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3213
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3214
		INFO_PRINTF2(_L("CMdaAudioRecorderUtility::GetSupportedBitRatesL leave with error %d"),err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3215
		ret = EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3216
		return ret;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3217
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3218
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3219
	TInt numRates = rates.Count();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3220
	for(TInt i=0;i<numRates;i++)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3221
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3222
		INFO_PRINTF2(_L("CMdaAudioRecorderUtility::SetDestinationBitRateL (%d)"),rates[i]);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3223
		TRAP(err,aRecUtil->SetDestinationBitRateL(rates[i]));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3224
		if(err!=KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3225
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3226
			INFO_PRINTF2(_L("CMdaAudioRecorderUtility::SetDestinationBitRateL leave with error %d"),err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3227
			ret = EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3228
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3229
		else// no error, get rate
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3230
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3231
			TUint rate=0;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3232
			TRAP(err,rate = aRecUtil->DestinationBitRateL());
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3233
			if(err!=KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3234
				{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3235
				INFO_PRINTF2(_L("CMdaAudioRecorderUtility::DestinationBitRateL leave with error %d"),err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3236
				ret = EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3237
				}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3238
			else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3239
				{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3240
				if(rate!=rates[i])
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3241
					{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3242
					ret = EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3243
					INFO_PRINTF1(_L("Rate mismatch"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3244
					}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3245
					else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3246
					{	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3247
					INFO_PRINTF1(_L("Rates match"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3248
					}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3249
				}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3250
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3251
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3252
	return ret;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3253
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3254
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3255
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3256
//------------------------------------------------------------------
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
CTestMmfAclntRecordDestDataType::CTestMmfAclntRecordDestDataType(const TDesC& aTestName, const TDesC& aSectName,const TDesC& aKeyName, const TTestFormat aFormat, const TBool aCreateDes)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3261
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3262
	// store the name of this test case
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3263
	// this is the name that is used by the script file
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3264
	// Each test step initialises it's own name
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3265
	iTestStepName = aTestName;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3266
	iSectName = aSectName;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3267
	iKeyName = aKeyName;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3268
	iTestFormat = aFormat;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3269
	iCreateDes = aCreateDes;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3270
	iSize = 0;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3271
	iAudio = NULL;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3272
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3273
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3274
CTestMmfAclntRecordDestDataType* CTestMmfAclntRecordDestDataType::NewL(const TDesC& aTestName, const TDesC& aSectName,const TDesC& aKeyName, const TTestFormat aFormat,const TBool aCreateDes)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3275
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3276
	CTestMmfAclntRecordDestDataType* self = new (ELeave) CTestMmfAclntRecordDestDataType(aTestName,aSectName,aKeyName,aFormat,aCreateDes);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3277
	return self;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3278
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3279
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3280
CTestMmfAclntRecordDestDataType* CTestMmfAclntRecordDestDataType::NewLC(const TDesC& aTestName, const TDesC& aSectName,const TDesC& aKeyName, const TTestFormat aFormat, const TBool aCreateDes)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3281
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3282
	CTestMmfAclntRecordDestDataType* self = CTestMmfAclntRecordDestDataType::NewLC(aTestName,aSectName,aKeyName,aFormat,aCreateDes);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3283
	CleanupStack::PushL(self);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3284
	return self;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3285
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3286
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3287
void CTestMmfAclntRecordDestDataType::MoscoStateChangeEvent(CBase* /*aObject*/, TInt aPreviousState, TInt aCurrentState, TInt aErrorCode)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3288
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3289
	iError = aErrorCode;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3290
	INFO_PRINTF4( _L("MMdaObjectStateChangeObserver: previous state: %d current state: %d error: %d"),aPreviousState, aCurrentState, aErrorCode);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3291
	CActiveScheduler::Stop();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3292
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3293
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3294
TVerdict CTestMmfAclntRecordDestDataType::DoTestStepPreambleL()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3295
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3296
	SetupFormatL(iTestFormat);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3297
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3298
	switch (iTestFormat) 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3299
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3300
		case EPcm16Wav:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3301
		case EAlawWav:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3302
		case EPcm8:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3303
			iHeaderSize = KWavFileUncompressedDataHeaderSize; //(see mmfwavformat.cpp, CreateSinkBufferOfSizeL())
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3304
			iFrameSize = 4096;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3305
			break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3306
		case EImaAdpcmWav:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3307
		case EImasPcmWav:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3308
			iHeaderSize = KWavFileCompressedDataHeaderSize + KImaAdpcmFactChunkSize;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3309
			iFrameSize = 4096;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3310
			break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3311
		case EMulawRaw:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3312
		case EPcmU8:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3313
		case EPcmU16:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3314
			iHeaderSize = 0;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3315
			iFrameSize = 4096;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3316
			break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3317
		case EGsmWav:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3318
			iHeaderSize = KWavFileCompressedDataHeaderSize + KGSMFactChunkSize;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3319
			iFrameSize = 4096;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3320
			break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3321
		default:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3322
			/*skip*/ ;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3323
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3324
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3325
	if(!iCreateDes)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3326
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3327
		RFs fs;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3328
		RFile file;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3329
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3330
		TBuf<KSizeBuf>	filename;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3331
		TPtrC			filename1; 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3332
		if(!GetStringFromConfig(iSectName, iKeyName, filename1))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3333
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3334
			return EInconclusive;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3335
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3336
			
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3337
		GetDriveName(filename);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3338
		filename.Append(filename1);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3339
		INFO_PRINTF2(_L("File for test - %S"), &filename);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3340
		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3341
		User::LeaveIfError(fs.Connect());
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3342
		User::LeaveIfError(file.Open(fs,filename,EFileRead));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3343
		CleanupClosePushL(file);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3344
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3345
		User::LeaveIfError(file.Size(iSize));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3346
		INFO_PRINTF2(_L("size of file = %d\n"),iSize);//Statement Changed under DEF105143
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3347
		iAudio = HBufC8::NewMaxL(iSize);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3348
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3349
		// Read a file into a descriptor
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3350
		TPtr8 bufferDes(iAudio->Des());
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3351
		User::LeaveIfError(file.Read(bufferDes));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3352
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3353
		CleanupStack::PopAndDestroy(); //file
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3354
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3355
	return CTestMmfAclntStep::DoTestStepPreambleL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3356
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3357
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3358
TVerdict CTestMmfAclntRecordDestDataType::DoTestStepPostambleL()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3359
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3360
	delete iAudio;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3361
	return CTestMmfAclntStep::DoTestStepPostambleL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3362
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3363
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3364
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3365
 * Open a descriptor and record
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3366
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3367
TVerdict CTestMmfAclntRecordDestDataType::DoTestStepL( void )
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3368
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3369
	HBufC8* audio = NULL;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3370
	TMdaDesClipLocation* location = NULL;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3371
	TInt err = KErrNone;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3372
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3373
	CMdaAudioRecorderUtility* recUtil = CMdaAudioRecorderUtility::NewL(*this);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3374
	CleanupStack::PushL(recUtil);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3375
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3376
	// Add create file for Ogg-tests
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3377
	if(iSectName == _L("SectionOggRec"))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3378
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3379
		TBuf<KSizeBuf>	filename;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3380
		TPtrC			filename1; 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3381
		if(!GetStringFromConfig(iSectName, iKeyName, filename1))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3382
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3383
			return EInconclusive;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3384
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3385
			
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3386
		GetDriveName(filename);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3387
		filename.Append(filename1);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3388
		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3389
		RFs fs;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3390
		User::LeaveIfError(fs.Connect());
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3391
		RFile file;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3392
		User::LeaveIfError(file.Replace(fs,filename,EFileWrite));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3393
		file.Close();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3394
		fs.Close();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3395
		recUtil->OpenFileL(filename);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3396
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3397
	else if(!iCreateDes)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3398
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3399
		audio=iAudio;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3400
		TPtr8 bufferDes(iAudio->Des());
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3401
		recUtil->OpenDesL(bufferDes);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3402
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3403
	else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3404
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3405
		iSize = KRecSize; // value is not been set yet.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3406
		audio = HBufC8::NewMaxLC(iSize);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3407
		TPtr8 bufferDes(audio->Des());
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3408
		bufferDes.SetLength(0);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3409
		location = new (ELeave) TMdaDesClipLocation(bufferDes);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3410
		recUtil->OpenL(location,iFormat,iCodec,&iAudioSettings);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3411
		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3412
		delete location; 		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3413
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3414
	CActiveScheduler::Start();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3415
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3416
	iError = KErrTimedOut;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3417
	INFO_PRINTF1( _L("TestRecordUtils : Destination data type"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3418
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3419
	RArray<TFourCC> codecs;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3420
	recUtil->GetSupportedDestinationDataTypesL(codecs);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3421
	TInt numCodecs = codecs.Count();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3422
	TVerdict ret = EPass;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3423
	for(TInt i=0;i<numCodecs;i++)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3424
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3425
		TRAP(err,recUtil->SetDestinationDataTypeL(codecs[i]));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3426
		if(err!=KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3427
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3428
			INFO_PRINTF2(_L("CMdaAudioRecorderUtility::SetDestinationDataTypeL leave with error %d"),err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3429
			if(iCreateDes)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3430
				CleanupStack::PopAndDestroy(audio);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3431
			CleanupStack::PopAndDestroy(recUtil);	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3432
			User::After(KOneSecond);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3433
			return ret;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3434
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3435
		TFourCC dataType;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3436
		TRAP(err,dataType = recUtil->DestinationDataTypeL());
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3437
		if(err!=KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3438
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3439
			INFO_PRINTF2(_L("CMdaAudioRecorderUtility::DestinationDataTypeL leave with error %d"),err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3440
			if(iCreateDes)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3441
				CleanupStack::PopAndDestroy(audio);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3442
			CleanupStack::PopAndDestroy(recUtil);	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3443
			User::After(KOneSecond);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3444
			return ret;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3445
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3446
		if(dataType!=codecs[i])
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3447
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3448
			ret = EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3449
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3450
		else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3451
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3452
			INFO_PRINTF1(_L("CMdaAudioRecorderUtility::DestinationDataType set-get OK"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3453
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3454
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3455
	if(iCreateDes)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3456
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3457
		CleanupStack::PopAndDestroy(audio);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3458
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3459
		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3460
	CleanupStack::PopAndDestroy(recUtil);	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3461
	User::After(KOneSecond);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3462
	return ret;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3463
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3464
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3465
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3466
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3467
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3468
//------------------------------------------------------------------
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3469
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3470
CTestMmfAclntRecordDestFormat::CTestMmfAclntRecordDestFormat(const TDesC& aTestName, const TDesC& aSectName, TBool aNegative, const TUid aFormat)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3471
	: CTestMmfAclntRecord(aTestName, aSectName, aNegative), iFormat(aFormat)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3472
	{}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3473
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3474
CTestMmfAclntRecordDestFormat* CTestMmfAclntRecordDestFormat::NewL(const TDesC& aTestName, const TDesC& aSectName, TBool aNegative, const TUid aFormat)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3475
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3476
	CTestMmfAclntRecordDestFormat* self = new (ELeave) CTestMmfAclntRecordDestFormat(aTestName, aSectName, aNegative, aFormat);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3477
	return self;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3478
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3479
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3480
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3481
TVerdict CTestMmfAclntRecordDestFormat::DoTestL(CMdaAudioRecorderUtility* aRecUtil)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3482
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3483
	// GET --> SET --> GET
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3484
	INFO_PRINTF1( _L("TestRecordUtils : Destination format"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3485
	TVerdict ret = EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3486
	TInt err = KErrNone;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3487
	TRAP(err,iFormat = aRecUtil->DestinationFormatL());
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3488
	if(err!=KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3489
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3490
		INFO_PRINTF2(_L("CMdaAudioRecorderUtility::DestinationFormatL leave with error %d"),err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3491
		return ret;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3492
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3493
	TRAP(err,aRecUtil->SetDestinationFormatL(iFormat));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3494
	if(err!=KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3495
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3496
		INFO_PRINTF2(_L("CMdaAudioRecorderUtility::SetDestinationFormatL leave with error %d"),err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3497
		return ret;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3498
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3499
	TUid format;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3500
	TRAP(err,format = aRecUtil->DestinationFormatL());
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3501
	if(err!=KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3502
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3503
		INFO_PRINTF2(_L("CMdaAudioRecorderUtility::DestinationFormatL leave with error %d"),err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3504
		return ret;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3505
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3506
	if(format==iFormat)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3507
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3508
		ret = EPass;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3509
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3510
		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3511
	return ret;
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
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3517
CTestMmfAclntRecordAudioDeviceMode::CTestMmfAclntRecordAudioDeviceMode(const TDesC& aTestName, const TDesC& aSectName, TBool aNegative)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3518
	: CTestMmfAclntRecord(aTestName, aSectName, aNegative)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3519
	{}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3520
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3521
CTestMmfAclntRecordAudioDeviceMode* CTestMmfAclntRecordAudioDeviceMode::NewL(const TDesC& aTestName, const TDesC& aSectName, TBool aNegative)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3522
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3523
	CTestMmfAclntRecordAudioDeviceMode* self = new (ELeave) CTestMmfAclntRecordAudioDeviceMode(aTestName, aSectName, aNegative);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3524
	return self;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3525
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3526
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3527
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3528
TVerdict CTestMmfAclntRecordAudioDeviceMode::DoTestL(CMdaAudioRecorderUtility* aRecUtil)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3529
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3530
	INFO_PRINTF1( _L("TestRecordUtils : SetAudioDeviceMode"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3531
	INFO_PRINTF1( _L("This function is provided for binary compatibility, but does not have any effect from 7.0s"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3532
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3533
	// Set the audio device mode. This function is provided for binary compatibility, but
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3534
	// does not have any effect from 7.0s
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3535
	aRecUtil->SetAudioDeviceMode(CMdaAudioRecorderUtility::EDefault);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3536
	aRecUtil->SetAudioDeviceMode(CMdaAudioRecorderUtility::ETelephonyOrLocal);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3537
	aRecUtil->SetAudioDeviceMode(CMdaAudioRecorderUtility::ETelephonyMixed);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3538
	aRecUtil->SetAudioDeviceMode(CMdaAudioRecorderUtility::ETelephonyNonMixed);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3539
	aRecUtil->SetAudioDeviceMode(CMdaAudioRecorderUtility::ELocal);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3540
	TVerdict ret = EPass;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3541
	return ret;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3542
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3543
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3544
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3545
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3546
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3547
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3548
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3549
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3550
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3551
//
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3552
//
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3553
//	CMdaAudioInputStream Integration Tests //
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3554
//
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3555
//
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3556
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3557
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3558
 * Standard static NewL() taking a callback function
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3559
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3560
CCallBackTimer* CCallBackTimer::NewL(TCallBack aCallBack, TPriority aPriority)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3561
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3562
	CCallBackTimer* self = new(ELeave) CCallBackTimer(aCallBack, aPriority);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3563
	CleanupStack::PushL(self);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3564
	self->ConstructL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3565
	CleanupStack::Pop(); // self
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3566
	return self;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3567
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3568
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3569
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3570
 * Private c'tor
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3571
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3572
CCallBackTimer::CCallBackTimer(TCallBack aCallBack, TPriority aPriority)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3573
: CTimer(aPriority),
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3574
iCallBack(aCallBack)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3575
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3576
	CActiveScheduler::Add(this);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3577
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3578
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3579
/*
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3580
 * Callback on timer complete
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3581
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3582
void CCallBackTimer::RunL()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3583
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3584
	iCallBack.CallBack();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3585
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3586
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3587
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3588
_LIT(KStreamRawFile,"c:\\AclntITestData\\test.raw");
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3589
_LIT(KRecordStreamRawFile,"c:\\AclntITestData\\streamrecorded.raw");
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3590
CTestStepAudInStream* CTestStepAudInStream::NewL()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3591
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3592
	CTestStepAudInStream* s = new(ELeave) CTestStepAudInStream();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3593
	CleanupStack::PushL(s);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3594
	s->ConstructL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3595
	CleanupStack::Pop();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3596
	return s;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3597
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3598
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3599
CTestStepAudInStream::CTestStepAudInStream() : iError(KErrNone), iState(EStopped)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3600
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3601
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3602
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3603
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3604
void CTestStepAudInStream::ConstructL()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3605
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3606
	// reset the buffer
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3607
	for(TInt i=0; i<KRecNumBuffer; i++)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3608
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3609
		iBufferList[i] = KNullDesC8;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3610
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3611
	iStartBuf=iEndBuf=0;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3612
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3613
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3614
CTestStepAudInStream::~CTestStepAudInStream()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3615
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3616
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3617
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3618
void CTestStepAudInStream::MaiscOpenComplete(TInt aError)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3619
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3620
	iError = aError;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3621
	CActiveScheduler::Stop();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3622
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3623
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3624
void CTestStepAudInStream::MaiscRecordComplete(TInt aError)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3625
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3626
	iError = aError;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3627
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3628
	iWriteBufferActive->Cancel();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3629
	TInt filePosition=0;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3630
	iFile.Seek(ESeekStart, filePosition);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3631
	iFile.Close();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3632
	CActiveScheduler::Stop();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3633
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3634
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3635
void CTestStepAudInStream::MaiscBufferCopied(TInt aError, const TDesC8& /*aBuffer*/)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3636
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3637
	iError = aError;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3638
	if(aError != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3639
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3640
		return;   
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3641
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3642
	// Assume aBuffer == iBufferList[iEndBuf]
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3643
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3644
	// Increment iEndBuf
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3645
	if(iEndBuf==KRecNumBuffer-1)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3646
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3647
		iEndBuf = 0;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3648
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3649
		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3650
	else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3651
		iEndBuf++;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3652
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3653
	// Starting writing out the buffers if we're not already
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3654
	if(!iWriteBufferActive->IsActive())
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3655
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3656
		iWriteBufferActive->Write(iBufferList[iStartBuf]);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3657
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3658
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3659
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3660
void CTestStepAudInStream::StartReadL()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3661
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3662
	// Issue reads on all available buffers
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3663
	for (TInt ii=0; ii<KRecNumBuffer; ii++)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3664
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3665
		iAudInStream->ReadL(iBufferList[ii]);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3666
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3667
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3668
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3669
void CTestStepAudInStream::Read1BufL()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3670
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3671
	// Issue reads on 1 available buffer
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3672
	iAudInStream->ReadL(iBufferList[0]);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3673
	}	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3674
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3675
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3676
CTestStepAudInStream::CWriteBufferActive::CWriteBufferActive() : CActive(0)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3677
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3678
	CActiveScheduler::Add(this);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3679
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3680
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3681
CTestStepAudInStream::CWriteBufferActive::~CWriteBufferActive()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3682
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3683
	Cancel();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3684
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3685
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3686
void CTestStepAudInStream::CWriteBufferActive::RunL()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3687
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3688
	//ASSERT it wrote OK
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3689
	iParent->ProcessDataL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3690
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3691
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3692
TInt CTestStepAudInStream::CWriteBufferActive::RunError(TInt aError) 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3693
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3694
	iParent->iError = aError;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3695
	CActiveScheduler::Stop();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3696
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3697
	return KErrNone;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3698
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3699
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3700
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3701
void CTestStepAudInStream::CWriteBufferActive::DoCancel()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3702
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3703
	// do nothing
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3704
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3705
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3706
void CTestStepAudInStream::CWriteBufferActive::Write(const TDesC8& aBuffer)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3707
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3708
	iParent->iFile.Write(aBuffer, iStatus);      // read the 1st data trunk
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3709
	SetActive();		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3710
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3711
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3712
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3713
void CTestStepAudInStream::ProcessDataL()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3714
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3715
	// Set the next buffer to handle
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3716
	iBufferList[iStartBuf] = KNullDesC8; // done with that one
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3717
	// Issue another read to input stream
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3718
	iAudInStream->ReadL(iBufferList[iStartBuf]);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3719
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3720
	// Increment iStartBuf
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3721
	if(iStartBuf==KRecNumBuffer-1)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3722
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3723
		iStartBuf=0;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3724
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3725
		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3726
	else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3727
		iStartBuf++;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3728
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3729
	if (iBufferList[iStartBuf] != KNullDesC8)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3730
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3731
		// Still more to write
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3732
		iWriteBufferActive->Write(iBufferList[iStartBuf]);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3733
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3734
	else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3735
		CActiveScheduler::Stop();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3736
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3737
	// else just wait for more recorded data to come through
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3738
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3739
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3740
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3741
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3742
 * Test step Preamble.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3743
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3744
 * @xxxx
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3745
 * 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3746
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3747
 enum TVerdict CTestStepAudInStream::DoTestStepPreambleL(void)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3748
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3749
	 enum TVerdict verdict;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3750
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3751
	// reset the buffer [in case new test reuses previous object]
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3752
	for(TInt i=0; i<KRecNumBuffer; i++)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3753
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3754
		iBufferList[i] = KNullDesC8;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3755
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3756
	iStartBuf=iEndBuf=0;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3757
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3758
	 // this installs the scheduler
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3759
	 verdict = CTestMmfAclntStep::DoTestStepPreambleL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3760
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3761
	// create the active object
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3762
	iWriteBufferActive = new(ELeave) CWriteBufferActive();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3763
	iWriteBufferActive->iParent = this;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3764
	iFs.Connect();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3765
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3766
	TRAPD(err, iAudInStream = CMdaAudioInputStream::NewL(*this) );
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3767
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3768
	if (err != KErrNone ||
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3769
		iAudInStream == NULL )
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3770
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3771
		return EInconclusive;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3772
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3773
		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3774
	 	 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3775
	 return verdict;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3776
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3777
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3778
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3779
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3780
 * Test step Postamble.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3781
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3782
 * @xxxx
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3783
 * 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3784
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3785
enum TVerdict CTestStepAudInStream::DoTestStepPostambleL(void)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3786
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3787
	iFs.Close();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3788
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3789
	delete iAudInStream;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3790
	iAudInStream = NULL;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3791
	delete iWriteBufferActive;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3792
	iWriteBufferActive = NULL;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3793
	//[ Destroy the scheduler ]
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3794
	return CTestMmfAclntStep::DoTestStepPostambleL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3795
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3796
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3797
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3798
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3799
 * Do the test step.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3800
 * Each test step must supply an implementation for DoTestStepL.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3801
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3802
 * @return	"TVerdict"
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3803
 *			The result of the test step
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3804
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3805
 * @xxxx
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3806
 * 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3807
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3808
TVerdict CTestStepAudInStream::DoTestStepL()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3809
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3810
	iTestStepResult = EPass;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3811
	TInt err = KErrNone;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3812
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3813
	if (iError != KErrNone )
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3814
		 return EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3815
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3816
	err = iFile.Replace( iFs, KRecordStreamRawFile, EFileWrite ) ;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3817
	if (err != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3818
		return EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3819
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3820
	StartReadL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3821
	CActiveScheduler::Start();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3822
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3823
	iFile.Close();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3824
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3825
	INFO_PRINTF1(_L("finished with this test step"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3826
	// test steps return a result
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3827
	return iTestStepResult;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3828
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3829
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3830
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3831
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3832
CTestStepAudInStreamNoUECap* CTestStepAudInStreamNoUECap::NewL(const TDesC& aTestName)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3833
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3834
	CTestStepAudInStreamNoUECap* self = new(ELeave) CTestStepAudInStreamNoUECap(aTestName);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3835
	return self;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3836
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3837
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3838
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3839
CTestStepAudInStreamNoUECap::CTestStepAudInStreamNoUECap(const TDesC& aTestName)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3840
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3841
	iTestStepResult = EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3842
	// store the name of this test case
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3843
	// this is the name that is used by the script file
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3844
	iTestStepName = aTestName;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3845
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3846
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3847
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3848
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3849
CTestStepAudInStreamNoUECap::~CTestStepAudInStreamNoUECap()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3850
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3851
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3852
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3853
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3854
void CTestStepAudInStreamNoUECap::MaiscOpenComplete(TInt aError)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3855
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3856
	iError = aError;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3857
	CActiveScheduler::Stop();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3858
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3859
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3860
void CTestStepAudInStreamNoUECap::MaiscBufferCopied(TInt /*aError*/, const TDesC8& /*aBuffer*/)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3861
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3862
	INFO_PRINTF1(_L("MMdaAudioInputStreamCallback::MaiscBufferCopied was not supposed to be called"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3863
	iTestStepResult = EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3864
	CActiveScheduler::Stop();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3865
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3866
void CTestStepAudInStreamNoUECap::MaiscRecordComplete(TInt aError)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3867
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3868
	INFO_PRINTF2(_L("MMdaAudioInputStreamCallback::MaiscRecordComplete was called with aError = %d"),aError);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3869
	iMaiscRecordCompleteError = aError;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3870
	CActiveScheduler::Stop();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3871
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3872
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3873
TVerdict CTestStepAudInStreamNoUECap::DoTestStepL()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3874
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3875
	TInt err = KErrNone;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3876
	iTestStepResult = EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3877
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3878
	// Printing to the console and log file
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3879
	INFO_PRINTF1(_L("this test calls MediaAudioClientInputStream::ReadL func with NO UserEnvironment capability"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3880
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3881
	iAudInStream->Open(NULL);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3882
	CActiveScheduler::Start();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3883
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3884
	if (iError != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3885
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3886
		INFO_PRINTF2(_L("DEBUG LEAVE 1: error = %d"),iError);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3887
		return EInconclusive;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3888
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3889
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3890
	iFile.Replace( iFs, KRecordStreamRawFile, EFileWrite ) ;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3891
	if (err != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3892
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3893
		INFO_PRINTF2(_L("DEBUG LEAVE 2: error = %d"),err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3894
		return EInconclusive;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3895
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3896
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3897
	iState=ERecording;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3898
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3899
	// start feeding the input stream
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3900
	TRAP(err, Read1BufL());
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3901
	CActiveScheduler::Start();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3902
	if ( (err == KErrNone && iMaiscRecordCompleteError == KErrPermissionDenied) || err == KErrPermissionDenied )
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3903
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3904
		INFO_PRINTF2(_L("Feeding input stream without UserEnvironent cap left with expected error = %d"),err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3905
		iTestStepResult = EPass;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3906
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3907
	else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3908
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3909
		INFO_PRINTF1(_L("Failed this test step with error %d"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3910
		INFO_PRINTF2(_L("Expected error = %d"),KErrPermissionDenied);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3911
		INFO_PRINTF1(_L("The requesting client should not have the UserEnvironment cap in this test"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3912
		iTestStepResult = EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3913
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3914
	// test steps return a result
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3915
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3916
	return iTestStepResult;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3917
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3918
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3919
CTestStepAudInStreamWithUECap* CTestStepAudInStreamWithUECap::NewL(const TDesC& aTestName)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3920
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3921
	CTestStepAudInStreamWithUECap* self = new(ELeave) CTestStepAudInStreamWithUECap(aTestName);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3922
	return self;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3923
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3924
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3925
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3926
CTestStepAudInStreamWithUECap::CTestStepAudInStreamWithUECap(const TDesC& aTestName)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3927
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3928
	iTestStepResult = EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3929
	// store the name of this test case
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3930
	// this is the name that is used by the script file
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3931
	iTestStepName = aTestName;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3932
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3933
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3934
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3935
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3936
CTestStepAudInStreamWithUECap::~CTestStepAudInStreamWithUECap()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3937
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3938
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3939
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3940
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3941
void CTestStepAudInStreamWithUECap::MaiscOpenComplete(TInt aError)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3942
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3943
	iError = aError;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3944
	CActiveScheduler::Stop();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3945
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3946
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3947
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3948
void CTestStepAudInStreamWithUECap::MaiscBufferCopied(TInt aError, const TDesC8& /*aBuffer*/)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3949
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3950
	//if weve stopped recording, each unused buffer will be returned with KErrAbort
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3951
	if(iState == EStopped && aError == KErrAbort)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3952
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3953
		return;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3954
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3955
		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3956
	iError = aError;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3957
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3958
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3959
void CTestStepAudInStreamWithUECap::MaiscRecordComplete(TInt aError)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3960
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3961
	iError = aError;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3962
	CActiveScheduler::Stop();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3963
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3964
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3965
TVerdict CTestStepAudInStreamWithUECap::DoTestStepL()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3966
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3967
	// Printing to the console and log file
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3968
	INFO_PRINTF1(_L("This test calls MediaAudioClientInputStream::ReadL func with at list the UserEnvironment capability"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3969
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3970
	iAudInStream->Open(NULL);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3971
	CActiveScheduler::Start();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3972
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3973
	if (iError != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3974
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3975
		INFO_PRINTF2(_L("DEBUG LEAVE 1: error = %d"),iError);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3976
		return EInconclusive;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3977
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3978
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3979
	TInt err = iFile.Replace( iFs, KRecordStreamRawFile, EFileWrite ) ;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3980
	if (err != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3981
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3982
		INFO_PRINTF2(_L("DEBUG LEAVE 2: error = %d"),err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3983
		return EInconclusive;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3984
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3985
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3986
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3987
	iState=ERecording;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3988
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3989
	// start feeding the input stream
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3990
	TRAP(err, Read1BufL());
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3991
	CActiveScheduler::Start();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3992
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3993
	if (err != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3994
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3995
		INFO_PRINTF2(_L("Test Failed with: error = %d"),iError);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3996
		return EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3997
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3998
		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3999
	return EPass;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4000
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4001
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4002
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4003
CTestStepAudInStreamSetGain* CTestStepAudInStreamSetGain::NewL(const TDesC& aTestName)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4004
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4005
	CTestStepAudInStreamSetGain* self = new(ELeave) CTestStepAudInStreamSetGain(aTestName);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4006
	return self;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4007
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4008
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4009
CTestStepAudInStreamSetGain::CTestStepAudInStreamSetGain(const TDesC& aTestName)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4010
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4011
	iTestStepResult = EPass;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4012
	// store the name of this test case
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4013
	// this is the name that is used by the script file
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4014
	iTestStepName = aTestName;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4015
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4016
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4017
CTestStepAudInStreamSetGain::~CTestStepAudInStreamSetGain()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4018
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4019
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4020
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4021
void CTestStepAudInStreamSetGain::MaiscOpenComplete(TInt /*aError*/)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4022
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4023
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4024
void CTestStepAudInStreamSetGain::MaiscBufferCopied(TInt /*aError*/, const TDesC8& /*aBuffer*/)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4025
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4026
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4027
void CTestStepAudInStreamSetGain::MaiscRecordComplete(TInt /*aError*/)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4028
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4029
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4030
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4031
enum TVerdict CTestStepAudInStreamSetGain::DoTestStepPreambleL(void)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4032
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4033
	enum TVerdict verdict;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4034
	 // this installs the scheduler
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4035
	verdict = CTestMmfAclntStep::DoTestStepPreambleL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4036
	INFO_PRINTF2(_L("Test step %S DoTestStepPreambleL"),&iTestStepName);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4037
	TInt err = KErrNone;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4038
	TRAP(err, iAudInStream = CMdaAudioInputStream::NewL(*this));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4039
	if (err != KErrNone || iAudInStream == NULL )
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4040
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4041
		return EInconclusive;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4042
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4043
		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4044
	return verdict;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4045
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4046
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4047
enum TVerdict CTestStepAudInStreamSetGain::DoTestStepPostambleL(void)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4048
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4049
	delete iAudInStream;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4050
	iAudInStream = NULL;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4051
	//[ Destroy the scheduler ]
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4052
	INFO_PRINTF2(_L("Test step %S DoTestStepPostambleL"),&iTestStepName);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4053
	return CTestMmfAclntStep::DoTestStepPostambleL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4054
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4055
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4056
TVerdict CTestStepAudInStreamSetGain::DoTestStepL()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4057
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4058
	INFO_PRINTF1( _L("TestAudioInputStream : Gain"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4059
	INFO_PRINTF2( _L("TestAudioInputStream : MaxGain()(%d)"),iAudInStream->MaxGain());
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4060
	TInt gain = iAudInStream->MaxGain()/2;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4061
	if (gain < 0)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4062
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4063
		return EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4064
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4065
		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4066
	//set the volume
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4067
	INFO_PRINTF2( _L("TestAudioInputStream : SetGain(%d)"),gain);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4068
	iAudInStream->SetGain(gain);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4069
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4070
	//get the volume
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4071
	TInt rgain = iAudInStream->Gain();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4072
	if (gain != rgain ) 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4073
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4074
		 return EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4075
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4076
		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4077
	INFO_PRINTF2( _L("TestAudioInputStream : Gain() returned %d"),rgain);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4078
	INFO_PRINTF1(_L("finished with this test step"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4079
	// test steps return a result
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4080
	return iTestStepResult;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4081
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4082
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4083
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4084
//
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4085
//
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4086
//
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4087
CTestStepAudInStreamSetPriority* CTestStepAudInStreamSetPriority::NewL(const TDesC& aTestName)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4088
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4089
	CTestStepAudInStreamSetPriority* self = new(ELeave) CTestStepAudInStreamSetPriority(aTestName);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4090
	return self;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4091
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4092
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4093
CTestStepAudInStreamSetPriority::CTestStepAudInStreamSetPriority(const TDesC& aTestName)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4094
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4095
	iTestStepResult = EPass;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4096
	// store the name of this test case
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4097
	// this is the name that is used by the script file
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4098
	iTestStepName = aTestName;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4099
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4100
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4101
CTestStepAudInStreamSetPriority::~CTestStepAudInStreamSetPriority()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4102
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4103
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4104
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4105
void CTestStepAudInStreamSetPriority::MaiscOpenComplete(TInt aError)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4106
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4107
	iError = aError;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4108
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4109
void CTestStepAudInStreamSetPriority::MaiscBufferCopied(TInt aError, const TDesC8& /*aBuffer*/)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4110
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4111
	iError = aError;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4112
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4113
void CTestStepAudInStreamSetPriority::MaiscRecordComplete(TInt aError)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4114
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4115
	iError = aError;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4116
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4117
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4118
enum TVerdict CTestStepAudInStreamSetPriority::DoTestStepPreambleL(void)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4119
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4120
	enum TVerdict verdict;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4121
	 // this installs the scheduler
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4122
	verdict = CTestMmfAclntStep::DoTestStepPreambleL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4123
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4124
	TInt err = KErrNone;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4125
	TRAP(err, iAudInStream = CMdaAudioInputStream::NewL(*this));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4126
	if (err != KErrNone || iAudInStream == NULL )
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4127
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4128
		return EInconclusive;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4129
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4130
		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4131
	return verdict;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4132
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4133
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4134
enum TVerdict CTestStepAudInStreamSetPriority::DoTestStepPostambleL(void)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4135
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4136
	delete iAudInStream;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4137
	iAudInStream = NULL;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4138
	//[ Destroy the scheduler ]
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4139
	return CTestMmfAclntStep::DoTestStepPostambleL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4140
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4141
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4142
TVerdict CTestStepAudInStreamSetPriority::DoTestStepL()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4143
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4144
	INFO_PRINTF1( _L("TestAudioInputStream : Priority"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4145
	iAudInStream->SetPriority(EMdaPriorityMin, EMdaPriorityPreferenceTime);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4146
	iAudInStream->SetPriority(EMdaPriorityMax, EMdaPriorityPreferenceQuality);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4147
	INFO_PRINTF1(_L("finished with this test step"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4148
	// test steps return a result
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4149
	return iTestStepResult;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4150
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4151
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4152
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4153
//
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4154
//
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4155
//
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4156
CTestStepAudInStreamSetBalance* CTestStepAudInStreamSetBalance::NewL(const TDesC& aTestName)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4157
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4158
	CTestStepAudInStreamSetBalance* self = new(ELeave) CTestStepAudInStreamSetBalance(aTestName);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4159
	return self;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4160
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4161
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4162
CTestStepAudInStreamSetBalance::CTestStepAudInStreamSetBalance(const TDesC& aTestName)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4163
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4164
	iTestStepResult = EPass;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4165
	// store the name of this test case
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4166
	// this is the name that is used by the script file
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4167
	iTestStepName = aTestName;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4168
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4169
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4170
CTestStepAudInStreamSetBalance::~CTestStepAudInStreamSetBalance()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4171
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4172
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4173
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4174
void CTestStepAudInStreamSetBalance::MaiscOpenComplete(TInt /*aError*/)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4175
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4176
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4177
void CTestStepAudInStreamSetBalance::MaiscBufferCopied(TInt /*aError*/, const TDesC8& /*aBuffer*/)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4178
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4179
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4180
void CTestStepAudInStreamSetBalance::MaiscRecordComplete(TInt /*aError*/)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4181
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4182
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4183
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4184
enum TVerdict CTestStepAudInStreamSetBalance::DoTestStepPreambleL(void)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4185
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4186
	enum TVerdict verdict;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4187
	 // this installs the scheduler
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4188
	verdict = CTestMmfAclntStep::DoTestStepPreambleL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4189
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4190
	TInt err = KErrNone;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4191
	TRAP(err, iAudInStream = CMdaAudioInputStream::NewL(*this));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4192
	if (err != KErrNone || iAudInStream == NULL )
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4193
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4194
		return EInconclusive;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4195
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4196
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4197
	return verdict;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4198
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4199
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4200
enum TVerdict CTestStepAudInStreamSetBalance::DoTestStepPostambleL(void)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4201
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4202
	delete iAudInStream;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4203
	iAudInStream = NULL;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4204
	//[ Destroy the scheduler ]
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4205
	return CTestMmfAclntStep::DoTestStepPostambleL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4206
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4207
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4208
TVerdict CTestStepAudInStreamSetBalance::DoTestStepL()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4209
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4210
	TInt bal=0;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4211
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4212
	TRAPD(err, iAudInStream->SetBalanceL()); // default KMMFBalanceCenter
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4213
	if (err != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4214
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4215
		return EFail; // we expect this _will_ be supported for Typhoon
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4216
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4217
		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4218
	//get the balance
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4219
	TRAP(err, bal = iAudInStream->GetBalanceL());
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4220
	if (err != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4221
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4222
		return EFail; // we expect this _will_ be supported for Typhoon
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4223
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4224
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4225
	if (bal != KMMFBalanceCenter )
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4226
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4227
		return EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4228
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4229
		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4230
	TRAP(err, iAudInStream->SetBalanceL(KMMFBalanceMaxRight));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4231
	if (err != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4232
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4233
		return EFail; // we expect this _will_ be supported for Typhoon
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4234
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4235
		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4236
	//get the balance
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4237
	TRAP(err, bal = iAudInStream->GetBalanceL());
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4238
	if (err != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4239
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4240
		return EFail; // we expect this _will_ be supported for Typhoon
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4241
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4242
		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4243
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4244
	if (bal != KMMFBalanceMaxRight)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4245
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4246
		return EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4247
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4248
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4249
	TRAP(err, iAudInStream->SetBalanceL(KMMFBalanceMaxLeft));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4250
	if (err != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4251
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4252
		return EFail; // we expect this _will_ be supported for Typhoon
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4253
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4254
		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4255
	//get the balance
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4256
	TRAP(err, bal = iAudInStream->GetBalanceL());
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4257
	if (err != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4258
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4259
		return EFail; // we expect this _will_ be supported for Typhoon
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4260
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4261
		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4262
	if (bal != KMMFBalanceMaxLeft )
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4263
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4264
		return EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4265
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4266
		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4267
	// In of bounds
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4268
	/*
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4269
	iAudInStream->SetBalance(KMMFBalanceMaxLeft+10);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4270
	//check condition
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4271
	*/
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4272
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4273
	INFO_PRINTF1(_L("finished with this test step"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4274
	// test steps return a result
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4275
	return iTestStepResult;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4276
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4277
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4278
//
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4279
//
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4280
//
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4281
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4282
LOCAL_C TInt stopActiveScheduler(TAny*)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4283
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4284
	CActiveScheduler::Stop();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4285
	return FALSE;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4286
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4287
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4288
CTestStepAudInStreamGetBytes* CTestStepAudInStreamGetBytes::NewL(const TDesC& aTestName)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4289
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4290
	CTestStepAudInStreamGetBytes* self = new(ELeave) CTestStepAudInStreamGetBytes(aTestName);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4291
	return self;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4292
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4293
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4294
CTestStepAudInStreamGetBytes::CTestStepAudInStreamGetBytes(const TDesC& aTestName)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4295
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4296
	iTestStepResult = EPass;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4297
	// store the name of this test case
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4298
	// this is the name that is used by the script file
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4299
	iTestStepName = aTestName;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4300
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4301
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4302
CTestStepAudInStreamGetBytes::~CTestStepAudInStreamGetBytes()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4303
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4304
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4305
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4306
void CTestStepAudInStreamGetBytes::MaiscOpenComplete(TInt aError)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4307
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4308
	iError = aError;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4309
	CActiveScheduler::Stop();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4310
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4311
void CTestStepAudInStreamGetBytes::MaiscBufferCopied(TInt aError, const TDesC8& /*aBuffer*/)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4312
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4313
	//if weve stopped recording, each unused buffer will be returned with KErrAbort
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4314
	if(iState == EStopped && aError == KErrAbort)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4315
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4316
		return;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4317
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4318
		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4319
	iError = aError;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4320
	++iBuffersUsed;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4321
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4322
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4323
void CTestStepAudInStreamGetBytes::MaiscRecordComplete(TInt aError)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4324
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4325
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4326
	if(aError != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4327
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4328
		iError = aError;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4329
		CActiveScheduler::Stop();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4330
		return;   
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4331
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4332
	// Assume aBuffer == iBufferList[iEndBuf]
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4333
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4334
	// Increment iEndBuf
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4335
	if(iEndBuf==KRecNumBuffer-1)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4336
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4337
		iEndBuf = 0;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4338
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4339
		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4340
	else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4341
		iEndBuf++;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4342
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4343
	// Starting writing out the buffers if we're not already
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4344
	if(!iWriteBufferActive->IsActive())
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4345
		iWriteBufferActive->Write(iBufferList[iStartBuf]);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4346
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4347
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4348
enum TVerdict CTestStepAudInStreamGetBytes::DoTestStepPreambleL(void)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4349
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4350
	iTestStepResult = EPass;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4351
	enum TVerdict verdict;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4352
	// this installs the scheduler
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4353
	verdict = CTestStepAudInStream::DoTestStepPreambleL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4354
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4355
	// Printing to the console and log file
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4356
	INFO_PRINTF1(_L("this test gets the bytes rendered by the H/W until this moment: GetBytes()"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4357
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4358
	iAudInStream->Open(NULL);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4359
	CActiveScheduler::Start();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4360
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4361
	if (iError != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4362
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4363
		INFO_PRINTF2(_L("DEBUG LEAVE 1: error = %d"),iError);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4364
		return EInconclusive;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4365
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4366
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4367
	TInt err = iFile.Replace( iFs, KRecordStreamRawFile, EFileWrite ) ;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4368
	if (err != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4369
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4370
		INFO_PRINTF2(_L("DEBUG LEAVE 2: error = %d"),err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4371
		return EInconclusive;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4372
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4373
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4374
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4375
	iState=ERecording;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4376
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4377
	// start feeding the input stream
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4378
	StartReadL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4379
	CIdle* idleStopper = CIdle::NewL(CActive::EPriorityStandard);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4380
	idleStopper->Start(TCallBack(stopActiveScheduler));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4381
	CActiveScheduler::Start();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4382
	delete idleStopper;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4383
	if (iError != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4384
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4385
		INFO_PRINTF2(_L("DEBUG LEAVE 3: error = %d"),iError);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4386
		return EInconclusive;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4387
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4388
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4389
	return verdict;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4390
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4391
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4392
enum TVerdict CTestStepAudInStreamGetBytes::DoTestStepPostambleL(void)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4393
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4394
	iFile.Close();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4395
	delete iAudInStream;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4396
	iAudInStream = NULL;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4397
	//[ Destroy the scheduler ]
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4398
	return CTestMmfAclntStep::DoTestStepPostambleL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4399
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4400
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4401
TVerdict CTestStepAudInStreamGetBytes::DoTestStepL()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4402
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4403
	TInt bytes1 = iAudInStream->GetBytes();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4404
	INFO_PRINTF2(_L("bytes1 = %d"), bytes1);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4405
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4406
	CCallBackTimer* callBackTimer = CCallBackTimer::NewL(TCallBack(stopActiveScheduler));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4407
	callBackTimer->After(1000000);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4408
	CActiveScheduler::Start();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4409
	callBackTimer->Cancel(); // in case something else stopped the AS
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4410
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4411
	if (iError != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4412
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4413
		ERR_PRINTF2(_L("First call to GetBytes() returned error %d"), iError);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4414
		delete callBackTimer;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4415
		return EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4416
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4417
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4418
	TInt bytes2 = iAudInStream->GetBytes();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4419
	INFO_PRINTF2(_L("bytes2 = %d"), bytes2);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4420
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4421
	callBackTimer->After(1000000);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4422
	CActiveScheduler::Start();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4423
	callBackTimer->Cancel();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4424
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4425
	if (iError != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4426
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4427
		ERR_PRINTF2(_L("Second call to GetBytes() returned error %d"), iError);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4428
		delete callBackTimer;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4429
		return EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4430
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4431
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4432
	delete callBackTimer;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4433
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4434
	//Stop will kick off the write of the data to file through CWriteBufferActive, which will stop
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4435
	//ActiveSheduler when written
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4436
	iState=EStopped; //required so that acceptable KErrAbort in MaiscBufferCopied are handled properly
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4437
	iAudInStream->Stop();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4438
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4439
	// Starting writing out the buffers if we're not already
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4440
	if(!iWriteBufferActive->IsActive())
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4441
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4442
		iWriteBufferActive->Write(iBufferList[iStartBuf]);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4443
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4444
		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4445
	CActiveScheduler::Start();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4446
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4447
	TInt bytes3 = iAudInStream->GetBytes();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4448
	INFO_PRINTF2(_L("bytes3 = %d"), bytes3);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4449
	if (iError != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4450
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4451
		ERR_PRINTF2(_L("Third call to GetBytes() returned error %d"), iError);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4452
		return EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4453
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4454
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4455
	TInt fileSize;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4456
	User::LeaveIfError(iFile.Size(fileSize));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4457
	ERR_PRINTF2(_L("filesize %d"), fileSize);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4458
	INFO_PRINTF4(_L("GetBytes returned sizes %d, %d, %d"), bytes1, bytes2, bytes3);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4459
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4460
	INFO_PRINTF3(_L("Recording Complete used %d of the %d buffers available"),iBuffersUsed,KRecNumBuffer);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4461
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4462
	if (bytes1 > bytes2 || bytes2 > bytes3)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4463
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4464
		return EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4465
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4466
		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4467
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4468
	if (bytes3 != fileSize)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4469
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4470
		ERR_PRINTF3(_L("Error : bytes3 %d != filesize %d"), bytes3, fileSize);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4471
		return EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4472
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4473
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4474
	INFO_PRINTF1(_L("finished with this test step"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4475
	// test steps return a result
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4476
	return iTestStepResult;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4477
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4478
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4479
//
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4480
//
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4481
//
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4482
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4483
CTestStepAudInStreamSglBuf* CTestStepAudInStreamSglBuf::NewL(const TDesC& aTestName)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4484
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4485
	CTestStepAudInStreamSglBuf* self = new(ELeave) CTestStepAudInStreamSglBuf(aTestName);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4486
	return self;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4487
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4488
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4489
CTestStepAudInStreamSglBuf::CTestStepAudInStreamSglBuf(const TDesC& aTestName) 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4490
	: CTestStepAudInStreamGetBytes(aTestName),
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4491
	  iBufferPtr(NULL, 0)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4492
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4493
	iTestStepResult = EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4494
	// store the name of this test case
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4495
	// this is the name that is used by the script file
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4496
	iTestStepName = aTestName;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4497
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4498
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4499
CTestStepAudInStreamSglBuf::~CTestStepAudInStreamSglBuf()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4500
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4501
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4502
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4503
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4504
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4505
 * Test step Preamble.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4506
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4507
 * @xxxx
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4508
 * 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4509
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4510
enum TVerdict CTestStepAudInStreamSglBuf::DoTestStepPreambleL(void)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4511
	{	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4512
	iTestStepResult = EPass;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4513
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4514
	// this installs the scheduler
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4515
	iTestStepResult = CTestStepAudInStream::DoTestStepPreambleL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4516
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4517
	// Printing to the console and log file
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4518
	INFO_PRINTF1(_L("this test gets the bytes rendered by the H/W until this moment: GetBytes()"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4519
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4520
	iAudInStream->SetSingleBufferMode(ETrue);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4521
	iAudInStream->Open(NULL);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4522
	CActiveScheduler::Start();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4523
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4524
	if (iError != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4525
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4526
		INFO_PRINTF2(_L("DEBUG LEAVE 1: error = %d"),iError);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4527
		return EInconclusive;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4528
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4529
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4530
	iError = iFile.Replace( iFs, KRecordStreamRawFile, EFileWrite ) ;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4531
	if (iError != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4532
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4533
		INFO_PRINTF2(_L("DEBUG LEAVE 2: error = %d"),iError);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4534
		return EInconclusive;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4535
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4536
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4537
	iState=ERecording;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4538
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4539
	// start feeding the input stream
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4540
	Read1BufL(); // single buffer
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4541
	CIdle* idleStopper = CIdle::NewL(CActive::EPriorityStandard);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4542
	idleStopper->Start(TCallBack(stopActiveScheduler));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4543
	CActiveScheduler::Start();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4544
	delete idleStopper;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4545
	if (iError != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4546
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4547
		INFO_PRINTF2(_L("DEBUG LEAVE 3: error = %d"),iError);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4548
		return EInconclusive;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4549
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4550
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4551
	return iTestStepResult;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4552
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4553
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4554
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4555
void CTestStepAudInStreamSglBuf::Read1BufL()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4556
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4557
	// Issue reads on 1 available buffer
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4558
	iBufferPtr.Set(const_cast<TUint8*>(iSingleBuffer.Ptr()), 0, iSingleBuffer.MaxLength());
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4559
	iAudInStream->ReadL(iBufferPtr);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4560
	}	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4561
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4562
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4563
void CTestStepAudInStreamSglBuf::MaiscBufferCopied(TInt aError, const TDesC8& aBuffer)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4564
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4565
	CTestStepAudInStreamGetBytes::MaiscBufferCopied(aError, aBuffer);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4566
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4567
   	TInt lengthRecorded = iSingleBuffer.Length()+aBuffer.Length();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4568
   	iSingleBuffer.SetLength(lengthRecorded);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4569
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4570
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4571
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4572
void CTestStepAudInStreamSglBuf::MaiscRecordComplete(TInt aError)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4573
	{	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4574
	// Starting writing out the buffer if we're not already
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4575
	if(!iWriteBufferActive->IsActive())
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4576
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4577
		iWriteBufferActive->Write(iSingleBuffer);		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4578
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4579
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4580
	CTestStepAudInStreamGetBytes::MaiscRecordComplete(aError);		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4581
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4582
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4583
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4584
TVerdict CTestStepAudInStreamSglBuf::DoTestStepL()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4585
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4586
	TInt bytes1 = iAudInStream->GetBytes();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4587
	INFO_PRINTF2(_L("bytes1 = %d"), bytes1);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4588
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4589
	CCallBackTimer* callBackTimer = CCallBackTimer::NewL(TCallBack(stopActiveScheduler));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4590
	callBackTimer->After(1000000);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4591
	CActiveScheduler::Start();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4592
	callBackTimer->Cancel(); // in case something else stopped the AS
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4593
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4594
	if (iError != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4595
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4596
		ERR_PRINTF2(_L("First call to GetBytes() returned error %d"), iError);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4597
		delete callBackTimer;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4598
		return EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4599
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4600
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4601
	TInt bytes2 = iAudInStream->GetBytes();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4602
	INFO_PRINTF2(_L("bytes2 = %d"), bytes2);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4603
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4604
	callBackTimer->After(1000000);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4605
	CActiveScheduler::Start();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4606
	callBackTimer->Cancel();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4607
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4608
	if (iError != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4609
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4610
		ERR_PRINTF2(_L("Second call to GetBytes() returned error %d"), iError);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4611
		delete callBackTimer;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4612
		return EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4613
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4614
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4615
	delete callBackTimer;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4616
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4617
	//Stop will kick off the write of the data to file through CWriteBufferActive, which will stop
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4618
	//ActiveSheduler when written
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4619
	iState=EStopped; //required so that acceptable KErrAbort in MaiscBufferCopied are handled properly
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4620
	iAudInStream->Stop();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4621
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4622
	// Starting writing out the buffers if we're not already
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4623
	if(!iWriteBufferActive->IsActive())
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4624
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4625
		iWriteBufferActive->Write(iSingleBuffer);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4626
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4627
		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4628
	CActiveScheduler::Start();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4629
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4630
	TInt bytes3 = iAudInStream->GetBytes();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4631
	INFO_PRINTF2(_L("bytes3 = %d"), bytes3);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4632
	if (iError != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4633
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4634
		ERR_PRINTF2(_L("Third call to GetBytes() returned error %d"), iError);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4635
		return EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4636
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4637
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4638
	TInt fileSize;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4639
	User::LeaveIfError(iFile.Size(fileSize));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4640
	ERR_PRINTF2(_L("filesize %d"), fileSize);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4641
	INFO_PRINTF4(_L("GetBytes returned sizes %d, %d, %d"), bytes1, bytes2, bytes3);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4642
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4643
	INFO_PRINTF2(_L("Recording Complete using a single buffer of size %d bytes"), KRecBufferSglBufSize);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4644
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4645
	if (bytes1 > bytes2 || bytes2 > bytes3)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4646
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4647
		return EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4648
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4649
		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4650
	if (bytes3 != fileSize)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4651
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4652
		ERR_PRINTF3(_L("Error : bytes3 %d != filesize %d"), bytes3, fileSize);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4653
		return EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4654
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4655
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4656
	INFO_PRINTF1(_L("finished with this test step"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4657
	// test steps return a result
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4658
	return iTestStepResult;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4659
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4660
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4661
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4662
void CTestStepAudInStreamSglBuf::ProcessDataL()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4663
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4664
	// wait for more recorded data to come through
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4665
	CActiveScheduler::Stop();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4666
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4667
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4668
//
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4669
//
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4670
//
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4671
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4672
CTestStepAudInStreamSetProp* CTestStepAudInStreamSetProp::NewL(const TDesC& aTestName)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4673
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4674
	CTestStepAudInStreamSetProp* self = new(ELeave) CTestStepAudInStreamSetProp(aTestName);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4675
	return self;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4676
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4677
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4678
CTestStepAudInStreamSetProp::CTestStepAudInStreamSetProp(const TDesC& aTestName)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4679
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4680
	iTestStepResult = EPass;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4681
	// store the name of this test case
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4682
	// this is the name that is used by the script file
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4683
	iTestStepName = aTestName;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4684
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4685
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4686
CTestStepAudInStreamSetProp::~CTestStepAudInStreamSetProp()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4687
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4688
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4689
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4690
void CTestStepAudInStreamSetProp::MaiscOpenComplete(TInt aError)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4691
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4692
	iError = aError;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4693
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4694
void CTestStepAudInStreamSetProp::MaiscBufferCopied(TInt aError, const TDesC8& /*aBuffer*/)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4695
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4696
	iError = aError;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4697
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4698
void CTestStepAudInStreamSetProp::MaiscRecordComplete(TInt aError)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4699
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4700
	iError = aError;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4701
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4702
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4703
enum TVerdict CTestStepAudInStreamSetProp::DoTestStepPreambleL(void)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4704
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4705
	enum TVerdict verdict;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4706
	 // this installs the scheduler
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4707
	verdict = CTestMmfAclntStep::DoTestStepPreambleL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4708
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4709
	TInt err = KErrNone;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4710
	TRAP(err, iAudInStream = CMdaAudioInputStream::NewL(*this));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4711
	if (err != KErrNone || iAudInStream == NULL )
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4712
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4713
		return EInconclusive;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4714
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4715
		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4716
	return verdict;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4717
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4718
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4719
enum TVerdict CTestStepAudInStreamSetProp::DoTestStepPostambleL(void)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4720
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4721
	delete iAudInStream;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4722
	iAudInStream = NULL;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4723
	//[ Destroy the scheduler ]
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4724
	return CTestMmfAclntStep::DoTestStepPostambleL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4725
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4726
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4727
TVerdict CTestStepAudInStreamSetProp::DoTestStepL()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4728
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4729
	INFO_PRINTF1( _L("TestAudioInputStream : SetAudioProperties"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4730
	iTestStepResult = EPass;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4731
	TInt err = KErrNone;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4732
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4733
	// test 1
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4734
	TRAP(err, iAudInStream->SetAudioPropertiesL(TMdaAudioDataSettings::ESampleRate8000Hz,TMdaAudioDataSettings::EChannelsMono) );
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4735
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4736
	if (!(err == KErrNone || 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4737
		  err == KErrNotSupported) )
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4738
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4739
		return EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4740
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4741
		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4742
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4743
	// test2
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4744
	TRAP(err, iAudInStream->SetAudioPropertiesL(TMdaAudioDataSettings::ESampleRate44100Hz,TMdaAudioDataSettings::EChannelsStereo) );
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4745
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4746
	if (!(err == KErrNone || 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4747
		  err == KErrNotSupported) )
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4748
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4749
		return EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4750
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4751
		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4752
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4753
	INFO_PRINTF1(_L("finished with this test step"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4754
	// test steps return a result
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4755
	return iTestStepResult;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4756
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4757
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4758
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4759
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4760
//
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4761
//
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4762
//	CMdaAudioOutputStream Integration Tests //
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4763
//
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4764
//
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4765
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4766
// base class for some audio Ouput stream tests
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4767
CTestStepAudOutStream* CTestStepAudOutStream::NewL()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4768
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4769
	CTestStepAudOutStream* s = new(ELeave) CTestStepAudOutStream();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4770
	CleanupStack::PushL(s);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4771
	s->ConstructL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4772
	CleanupStack::Pop();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4773
	return s;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4774
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4775
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4776
CTestStepAudOutStream::CTestStepAudOutStream() : iError(KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4777
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4778
	iIsAllDataRead = EFalse;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4779
	iIsAllDataWritten = EFalse;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4780
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4781
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4782
void CTestStepAudOutStream::ConstructL()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4783
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4784
	// reset the buffer
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4785
	for(TInt i=0; i<KNumBuffer; i++)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4786
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4787
		iBufferList[i] = KNullDesC8;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4788
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4789
	iStartBuf=iEndBuf=0;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4790
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4791
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4792
CTestStepAudOutStream::~CTestStepAudOutStream()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4793
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4794
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4795
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4796
void CTestStepAudOutStream::MaoscOpenComplete(TInt aError)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4797
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4798
	iError = aError;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4799
	CActiveScheduler::Stop();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4800
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4801
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4802
void CTestStepAudOutStream::MaoscPlayComplete(TInt aError)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4803
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4804
	if (iIsAllDataWritten && (aError == KErrNone || aError == KErrUnderflow))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4805
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4806
		iError = KErrNone;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4807
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4808
		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4809
	else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4810
		iError = aError;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4811
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4812
	iReadBufferActive->Cancel();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4813
	TInt filePosition=0;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4814
	iFile.Seek(ESeekStart, filePosition);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4815
	iFile.Close();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4816
	CActiveScheduler::Stop();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4817
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4818
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4819
void CTestStepAudOutStream::MaoscBufferCopied(TInt aError, const TDesC8& /*aBuffer*/)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4820
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4821
	iError = aError;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4822
	if(aError)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4823
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4824
			//need add for deal with exception
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4825
			return;   
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4826
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4827
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4828
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4829
	// adjust the buffer
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4830
	iBufferList[iStartBuf] = KNullDesC8;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4831
	if(iStartBuf==KNumBuffer-1)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4832
		iStartBuf = 0;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4833
	else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4834
		iStartBuf++;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4835
 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4836
	if (iIsAllDataRead && iStartBuf == iEndBuf)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4837
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4838
		iIsAllDataWritten = ETrue;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4839
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4840
	else if(!iReadBufferActive->IsActive())
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4841
		iReadBufferActive->Read();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4842
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4843
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4844
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4845
CTestStepAudOutStream::CReadBufferActive::CReadBufferActive() : CActive(0)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4846
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4847
	CActiveScheduler::Add(this);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4848
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4849
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4850
CTestStepAudOutStream::CReadBufferActive::~CReadBufferActive()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4851
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4852
	Cancel();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4853
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4854
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4855
void CTestStepAudOutStream::CReadBufferActive::RunL()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4856
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4857
	iParent->ProcessDataL(iBuffer);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4858
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4859
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4860
TInt CTestStepAudOutStream::CReadBufferActive::RunError(TInt aError) 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4861
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4862
	iParent->iError = aError;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4863
	CActiveScheduler::Stop();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4864
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4865
	return KErrNone;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4866
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4867
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4868
void CTestStepAudOutStream::CReadBufferActive::DoCancel()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4869
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4870
	// do nothing
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4871
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4872
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4873
void CTestStepAudOutStream::CReadBufferActive::Read()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4874
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4875
	iParent->iFile.Read(iBuffer, iStatus);      // read the 1st data trunk
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4876
	SetActive();		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4877
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4878
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4879
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4880
void CTestStepAudOutStream::ProcessDataL(TBuf8<KBufferSize>& aData)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4881
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4882
	if(aData.Length())
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4883
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4884
		if(iBufferList[iEndBuf]==KNullDesC8)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4885
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4886
			iBufferList[iEndBuf] = aData;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4887
			iAudOutStream->WriteL(iBufferList[iEndBuf]);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4888
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4889
			// adjust the buffer
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4890
			if(iEndBuf==KNumBuffer-1)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4891
				{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4892
				iEndBuf=0;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4893
				}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4894
				
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4895
			else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4896
				{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4897
				iEndBuf++;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4898
				}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4899
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4900
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4901
		if(iBufferList[iEndBuf]==KNullDesC8)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4902
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4903
			iReadBufferActive->Read();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4904
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4905
		// else all our buffers are full
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4906
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4907
	else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4908
		iIsAllDataRead = ETrue;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4909
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4910
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4911
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4912
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4913
 * Test step Preamble.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4914
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4915
 * @xxxx
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4916
 * 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4917
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4918
 enum TVerdict CTestStepAudOutStream::DoTestStepPreambleL(void)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4919
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4920
	enum TVerdict verdict;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4921
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4922
	// reset the buffer [incase new test reuses previous object]
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4923
	for(TInt i=0; i<KNumBuffer; i++)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4924
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4925
		iBufferList[i] = KNullDesC8;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4926
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4927
	iStartBuf=iEndBuf=0;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4928
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4929
	 // this installs the scheduler
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4930
	verdict = CTestMmfAclntStep::DoTestStepPreambleL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4931
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4932
	// create the active object
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4933
	iReadBufferActive = new(ELeave) CReadBufferActive();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4934
	iReadBufferActive->iParent = this;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4935
	iFs.Connect();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4936
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4937
	TRAPD(err, iAudOutStream = CMdaAudioOutputStream::NewL(*this) );
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4938
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4939
	if (err != KErrNone ||
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4940
		iAudOutStream == NULL )
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4941
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4942
		return EInconclusive;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4943
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4944
		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4945
	return verdict;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4946
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4947
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4948
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4949
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4950
 * Test step Postamble.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4951
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4952
 * @xxxx
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4953
 * 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4954
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4955
enum TVerdict CTestStepAudOutStream::DoTestStepPostambleL(void)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4956
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4957
	iFs.Close();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4958
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4959
	delete iAudOutStream;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4960
	iAudOutStream = NULL;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4961
	delete iReadBufferActive;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4962
	iReadBufferActive = NULL;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4963
	//[ Destroy the scheduler ]
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4964
	return CTestMmfAclntStep::DoTestStepPostambleL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4965
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4966
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4967
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4968
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4969
 * Do the test step.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4970
 * Each test step must supply an implementation for DoTestStepL.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4971
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4972
 * @return	"TVerdict"
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4973
 *			The result of the test step
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4974
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4975
 * @xxxx
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4976
 * 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4977
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4978
TVerdict CTestStepAudOutStream::DoTestStepL()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4979
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4980
	iTestStepResult = EPass;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4981
	//TInt err = KErrNone;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4982
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4983
	iAudOutStream->Open(NULL);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4984
	CActiveScheduler::Start();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4985
	iAudOutStream->SetVolume(iAudOutStream->MaxVolume()>>1); // half volume
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4986
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4987
	if (iError != KErrNone )
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4988
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4989
	return EFail;	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4990
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4991
		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4992
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4993
	TInt err = KErrNone;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4994
	err = iFile.Open(iFs, KStreamRawFile, EFileRead);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4995
	if (err != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4996
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4997
		return EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4998
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4999
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5000
	iReadBufferActive->Read();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5001
	CActiveScheduler::Start();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5002
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5003
	// wait sometime to finish and then close the file
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5004
	User::After(1200000);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5005
	iFile.Close();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5006
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5007
	INFO_PRINTF1(_L("finished with this test step"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5008
	// test steps return a result
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5009
	return iTestStepResult;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5010
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5011
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5012
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5013
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5014
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5015
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5016
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5017
CTestStepAudOutStreamSetProp* CTestStepAudOutStreamSetProp::NewL(const TDesC& aTestName)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5018
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5019
	CTestStepAudOutStreamSetProp* self = new(ELeave) CTestStepAudOutStreamSetProp(aTestName);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5020
	return self;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5021
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5022
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5023
CTestStepAudOutStreamSetProp::CTestStepAudOutStreamSetProp(const TDesC& aTestName)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5024
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5025
	iTestStepResult = EPass;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5026
	// store the name of this test case
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5027
	// this is the name that is used by the script file
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5028
	iTestStepName = aTestName;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5029
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5030
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5031
CTestStepAudOutStreamSetProp::~CTestStepAudOutStreamSetProp()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5032
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5033
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5034
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5035
enum TVerdict CTestStepAudOutStreamSetProp::DoTestStepPreambleL(void)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5036
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5037
	enum TVerdict verdict;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5038
	 // this installs the scheduler
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5039
	verdict = CTestStepAudOutStream::DoTestStepPreambleL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5040
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5041
	// if the parent preamble fails, we must fail too
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5042
	if (verdict != EPass)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5043
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5044
		return verdict;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5045
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5046
		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5047
	 // Printing to the console and log file
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5048
	INFO_PRINTF1(_L("this test is setting the audio properties of an Audio Output Stream Utility Class"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5049
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5050
	iAudOutStream->Open(NULL);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5051
	CActiveScheduler::Start();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5052
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5053
	return verdict;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5054
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5055
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5056
TVerdict CTestStepAudOutStreamSetProp::DoTestStepL()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5057
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5058
	TInt err = KErrNone;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5059
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5060
	// test 1
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5061
	TRAP(err, iAudOutStream->SetAudioPropertiesL(TMdaAudioDataSettings::ESampleRate8000Hz,TMdaAudioDataSettings::EChannelsMono) );
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5062
	if (!(err == KErrNone || 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5063
		  err == KErrNotSupported) )
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5064
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5065
		return EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5066
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5067
		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5068
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5069
	// test2
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5070
	// fails with the enum values, correct?
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5071
	TRAP(err, iAudOutStream->SetAudioPropertiesL(TMdaAudioDataSettings::ESampleRate44100Hz,TMdaAudioDataSettings::EChannelsStereo) );
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5072
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5073
	if (!(err == KErrNone || 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5074
		  err == KErrNotSupported) )
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5075
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5076
		return EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5077
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5078
		 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5079
	else 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5080
		 return EPass;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5081
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5082
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5083
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5084
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5085
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5086
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5087
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5088
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5089
CTestStepAudOutStreamOpen* CTestStepAudOutStreamOpen::NewL(const TDesC& aTestName)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5090
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5091
	CTestStepAudOutStreamOpen* self = new(ELeave) CTestStepAudOutStreamOpen(aTestName);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5092
	return self;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5093
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5094
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5095
CTestStepAudOutStreamOpen::CTestStepAudOutStreamOpen(const TDesC& aTestName)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5096
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5097
	iTestStepResult = EPass;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5098
	// store the name of this test case
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5099
	// this is the name that is used by the script file
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5100
	iTestStepName = aTestName;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5101
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5102
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5103
enum TVerdict CTestStepAudOutStreamOpen::DoTestStepPreambleL(void)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5104
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5105
	enum TVerdict verdict;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5106
	// this installs the scheduler and initialises the iAudOutStream
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5107
	verdict = CTestStepAudOutStream::DoTestStepPreambleL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5108
	INFO_PRINTF1(_L("this test is openning an Audio Output Stream Utility Class"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5109
	return verdict;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5110
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5111
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5112
TVerdict CTestStepAudOutStreamOpen::DoTestStepL()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5113
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5114
	TInt err = KErrNone;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5115
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5116
	TMdaAudioDataSettings settings;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5117
	settings.Query();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5118
	settings.iSampleRate = TMdaAudioDataSettings::ESampleRate8000Hz; // ESampleRateAnyInRange
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5119
	settings.iChannels = TMdaAudioDataSettings::EChannelsStereo;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5120
	settings.iFlags = TMdaAudioDataSettings::ENoNetworkRouting;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5121
	settings.iVolume = 0;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5122
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5123
	iAudOutStream->Open(&settings);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5124
	CActiveScheduler::Start();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5125
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5126
	if (iAudOutStream == NULL)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5127
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5128
		err = KErrNotReady;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5129
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5130
		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5131
	if (iError != KErrNone ||
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5132
		err != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5133
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5134
		return EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5135
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5136
		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5137
	else 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5138
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5139
		return EPass;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5140
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5141
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5142
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5143
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5144
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5145
CTestStepAudOutStreamSetVol* CTestStepAudOutStreamSetVol::NewL(const TDesC& aTestName)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5146
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5147
	CTestStepAudOutStreamSetVol* self = new(ELeave) CTestStepAudOutStreamSetVol(aTestName);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5148
	return self;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5149
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5150
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5151
CTestStepAudOutStreamSetVol::CTestStepAudOutStreamSetVol(const TDesC& aTestName)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5152
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5153
	iTestStepResult = EPass;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5154
	// store the name of this test case
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5155
	// this is the name that is used by the script file
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5156
	iTestStepName = aTestName;	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5157
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5158
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5159
CTestStepAudOutStreamSetVol::~CTestStepAudOutStreamSetVol()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5160
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5161
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5162
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5163
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5164
 * Implementation of the MMdaAudioOuputStreamCallback interface functions
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5165
 **/
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5166
void CTestStepAudOutStreamSetVol::MaoscOpenComplete(TInt /*aError*/)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5167
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5168
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5169
void CTestStepAudOutStreamSetVol::MaoscBufferCopied(TInt /*aError*/, const TDesC8& /*aBuffer*/)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5170
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5171
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5172
void CTestStepAudOutStreamSetVol::MaoscPlayComplete(TInt /*aError*/)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5173
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5174
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5175
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5176
enum TVerdict CTestStepAudOutStreamSetVol::DoTestStepPreambleL(void)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5177
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5178
	enum TVerdict verdict;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5179
	 // this installs the scheduler
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5180
	verdict = CTestMmfAclntStep::DoTestStepPreambleL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5181
	// Printing to the console and log file
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5182
	INFO_PRINTF1(_L("this test is setting the volume of an Audio Output Stream Utility Class"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5183
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5184
	TRAPD(err, iAudOutStream = CMdaAudioOutputStream::NewL(*this) );
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5185
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5186
	if (err != KErrNone ||
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5187
		iAudOutStream == NULL)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5188
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5189
		return EInconclusive;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5190
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5191
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5192
	return verdict;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5193
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5194
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5195
enum TVerdict CTestStepAudOutStreamSetVol::DoTestStepPostambleL(void)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5196
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5197
	delete iAudOutStream;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5198
	iAudOutStream = NULL;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5199
	//[ Destroy the scheduler ]
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5200
	return CTestMmfAclntStep::DoTestStepPostambleL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5201
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5202
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5203
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5204
TVerdict CTestStepAudOutStreamSetVol::DoTestStepL()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5205
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5206
	TInt vol = iAudOutStream->MaxVolume()/2;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5207
	if (vol < 0)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5208
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5209
		return EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5210
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5211
		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5212
	//set the volume
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5213
	iAudOutStream->SetVolume(vol);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5214
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5215
	//get the volume
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5216
	TInt rvol = iAudOutStream->Volume();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5217
	if (vol != rvol )
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5218
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5219
		return EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5220
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5221
		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5222
	else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5223
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5224
		iTestStepResult = EPass;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5225
		}	 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5226
		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5227
	INFO_PRINTF1(_L("finished with this test step"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5228
	// test steps return a result
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5229
	return iTestStepResult;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5230
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5231
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5232
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5233
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5234
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5235
CTestStepAudOutStreamSetBalance* CTestStepAudOutStreamSetBalance::NewL(const TDesC& aTestName)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5236
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5237
	CTestStepAudOutStreamSetBalance* self = new(ELeave) CTestStepAudOutStreamSetBalance(aTestName);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5238
	return self;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5239
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5240
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5241
CTestStepAudOutStreamSetBalance::CTestStepAudOutStreamSetBalance(const TDesC& aTestName)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5242
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5243
	iTestStepResult = EPass;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5244
	// store the name of this test case
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5245
	// this is the name that is used by the script file
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5246
	iTestStepName = aTestName;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5247
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5248
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5249
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5250
CTestStepAudOutStreamSetBalance::~CTestStepAudOutStreamSetBalance()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5251
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5252
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5253
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5254
void CTestStepAudOutStreamSetBalance::MaoscOpenComplete(TInt /*aError*/)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5255
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5256
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5257
void CTestStepAudOutStreamSetBalance::MaoscBufferCopied(TInt /*aError*/, const TDesC8& /*aBuffer*/)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5258
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5259
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5260
void CTestStepAudOutStreamSetBalance::MaoscPlayComplete(TInt /*aError*/)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5261
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5262
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5263
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5264
enum TVerdict CTestStepAudOutStreamSetBalance::DoTestStepPreambleL(void)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5265
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5266
	enum TVerdict verdict;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5267
	// this installs the scheduler
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5268
	verdict = CTestMmfAclntStep::DoTestStepPreambleL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5269
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5270
	// Printing to the console and log file
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5271
	INFO_PRINTF1(_L("this test is setting and getting the balance of an Audio Output Stream Utility Class"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5272
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5273
	TRAPD(err, iAudOutStream = CMdaAudioOutputStream::NewL(*this) );
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5274
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5275
	if (err != KErrNone ||
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5276
		iAudOutStream == NULL )
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5277
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5278
		return EInconclusive;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5279
		}	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5280
		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5281
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5282
	return verdict;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5283
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5284
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5285
enum TVerdict CTestStepAudOutStreamSetBalance::DoTestStepPostambleL(void)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5286
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5287
	delete iAudOutStream;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5288
	iAudOutStream = NULL;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5289
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5290
	//[ Destroy the scheduler ]
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5291
	return CTestMmfAclntStep::DoTestStepPostambleL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5292
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5293
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5294
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5295
TVerdict CTestStepAudOutStreamSetBalance::DoTestStepL()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5296
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5297
	TInt bal = 0;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5298
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5299
	TRAPD(err, iAudOutStream->SetBalanceL()); // default KMMFBalanceCenter
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5300
	if (err != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5301
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5302
		return EFail; // we expect this _will_ be supported for Typhoon
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5303
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5304
		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5305
	//get the balance
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5306
	TRAP(err, bal = iAudOutStream->GetBalanceL());
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5307
	if (err != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5308
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5309
		return EFail; // we expect this _will_ be supported for Typhoon
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5310
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5311
		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5312
	if (bal != KMMFBalanceCenter)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5313
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5314
		return EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5315
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5316
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5317
	TRAP(err, iAudOutStream->SetBalanceL(KMMFBalanceMaxRight));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5318
	if (err != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5319
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5320
		return EFail; // we expect this _will_ be supported for Typhoon
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5321
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5322
		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5323
	//get the balance
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5324
	TRAP(err, bal = iAudOutStream->GetBalanceL());
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5325
	if (err != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5326
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5327
		return EFail; // we expect this _will_ be supported for Typhoon
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5328
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5329
		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5330
	if (bal != KMMFBalanceMaxRight)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5331
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5332
		return EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5333
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5334
		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5335
	TRAP(err, iAudOutStream->SetBalanceL(KMMFBalanceMaxLeft));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5336
	if (err != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5337
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5338
		return EFail; // we expect this _will_ be supported for Typhoon
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5339
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5340
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5341
	//get the balance
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5342
	TRAP(err, bal = iAudOutStream->GetBalanceL());
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5343
	if (err != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5344
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5345
		return EFail; // we expect this _will_ be supported for Typhoon
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5346
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5347
		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5348
	if (bal != KMMFBalanceMaxLeft)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5349
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5350
		return EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5351
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5352
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5353
	INFO_PRINTF1(_L("finished with this test step"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5354
	// test steps return a result
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5355
	return iTestStepResult;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5356
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5357
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5358
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5359
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5360
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5361
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5362
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5363
CTestStepAudOutStreamSetPrior* CTestStepAudOutStreamSetPrior::NewL(const TDesC& aTestName)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5364
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5365
	CTestStepAudOutStreamSetPrior* self = new(ELeave) CTestStepAudOutStreamSetPrior(aTestName);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5366
	return self;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5367
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5368
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5369
CTestStepAudOutStreamSetPrior::CTestStepAudOutStreamSetPrior(const TDesC& aTestName)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5370
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5371
	iTestStepResult = EPass;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5372
	// store the name of this test case
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5373
	// this is the name that is used by the script file
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5374
	iTestStepName = aTestName;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5375
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5376
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5377
CTestStepAudOutStreamSetPrior::~CTestStepAudOutStreamSetPrior()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5378
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5379
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5380
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5381
enum TVerdict CTestStepAudOutStreamSetPrior::DoTestStepPreambleL(void)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5382
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5383
	enum TVerdict verdict;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5384
	// this installs the scheduler
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5385
	verdict = CTestStepAudOutStream::DoTestStepPreambleL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5386
	// Printing to the console and log file
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5387
	INFO_PRINTF1(_L("this test is setting the audio priorities of an Audio Output Stream Utility Class"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5388
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5389
	// if the parent preamble fails, we must fail too
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5390
	if (verdict != EPass)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5391
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5392
		return verdict;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5393
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5394
		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5395
	iAudOutStream->Open(NULL);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5396
	CActiveScheduler::Start();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5397
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5398
	TInt err = KErrNone;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5399
	if(iAudOutStream==NULL)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5400
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5401
		err = KErrNotReady;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5402
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5403
		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5404
	if (iError != KErrNone ||
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5405
		err != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5406
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5407
		 return EInconclusive;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5408
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5409
		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5410
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5411
	return verdict;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5412
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5413
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5414
enum TVerdict CTestStepAudOutStreamSetPrior::DoTestStepPostambleL(void)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5415
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5416
	//[ Destroy the scheduler ]
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5417
	return CTestStepAudOutStream::DoTestStepPostambleL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5418
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5419
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5420
TVerdict CTestStepAudOutStreamSetPrior::DoTestStepL()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5421
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5422
	// test 1
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5423
	iAudOutStream->SetPriority(EMdaPriorityMin, EMdaPriorityPreferenceTime);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5424
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5425
	// test2
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5426
	iAudOutStream->SetPriority(EMdaPriorityMax, EMdaPriorityPreferenceQuality);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5427
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5428
	INFO_PRINTF1(_L("finished with this test step"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5429
	// test steps return a result
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5430
	return iTestStepResult;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5431
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5432
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5433
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5434
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5435
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5436
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5437
CTestStepAudOutStreamStop* CTestStepAudOutStreamStop::NewL(const TDesC& aTestName)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5438
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5439
	CTestStepAudOutStreamStop* self = new(ELeave) CTestStepAudOutStreamStop(aTestName);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5440
	return self;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5441
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5442
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5443
CTestStepAudOutStreamStop::CTestStepAudOutStreamStop(const TDesC& aTestName)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5444
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5445
	iTestStepResult = EPass;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5446
	// store the name of this test case
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5447
	// this is the name that is used by the script file
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5448
	iTestStepName = aTestName;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5449
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5450
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5451
CTestStepAudOutStreamStop::~CTestStepAudOutStreamStop()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5452
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5453
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5454
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5455
enum TVerdict CTestStepAudOutStreamStop::DoTestStepPreambleL(void)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5456
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5457
	iTestStepResult = EPass;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5458
	enum TVerdict verdict;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5459
	// this installs the scheduler
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5460
	verdict = CTestStepAudOutStream::DoTestStepPreambleL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5461
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5462
	// if the parent preamble fails, we must fail too
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5463
	if (verdict != EPass)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5464
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5465
		return verdict;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5466
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5467
		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5468
	// Printing to the console and log file
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5469
	INFO_PRINTF1(_L("this test is stopping a playing Audio Output Stream Utility Class: Stop()"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5470
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5471
	iAudOutStream->Open(NULL);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5472
	CActiveScheduler::Start();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5473
	iAudOutStream->SetVolume(iAudOutStream->MaxVolume()>>1); // half volume
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5474
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5475
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5476
	TInt err = KErrNone;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5477
	if(iAudOutStream==NULL)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5478
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5479
		err=KErrNotReady;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5480
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5481
		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5482
	if (iError != KErrNone ||
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5483
		err != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5484
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5485
		return EInconclusive;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5486
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5487
		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5488
	err = iFile.Open(iFs, KStreamRawFile, EFileRead);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5489
	if (err != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5490
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5491
		return EInconclusive;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5492
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5493
		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5494
	// start feeding the outputStream
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5495
	iReadBufferActive->Read(); // finally calls CMdaAudioOutputStream::WriteL(...)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5496
	CIdle* idleStopper = CIdle::NewL(CActive::EPriorityStandard);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5497
	idleStopper->Start(TCallBack(stopActiveScheduler));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5498
	CActiveScheduler::Start();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5499
	delete idleStopper;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5500
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5501
	if(iAudOutStream==NULL)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5502
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5503
		err = KErrNotReady;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5504
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5505
		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5506
	if (err != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5507
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5508
		return EInconclusive;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5509
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5510
		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5511
	return verdict;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5512
}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5513
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5514
enum TVerdict CTestStepAudOutStreamStop::DoTestStepPostambleL(void)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5515
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5516
	iFile.Close();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5517
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5518
	//[ Destroy the scheduler, delete the iAudOutStream, close the file system
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5519
	return CTestStepAudOutStream::DoTestStepPostambleL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5520
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5521
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5522
TInt StopAudOutStream(TAny* aAudOutStream)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5523
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5524
	REINTERPRET_CAST(CMdaAudioOutputStream*, aAudOutStream)->Stop();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5525
	return FALSE;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5526
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5527
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5528
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5529
TVerdict CTestStepAudOutStreamStop::DoTestStepL()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5530
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5531
	TInt err = KErrNone;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5532
	// stream is playing now from preamble
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5533
	// wait a fraction of the stream duration before stopping
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5534
	CCallBackTimer* callBackTimer = CCallBackTimer::NewL(TCallBack(StopAudOutStream, iAudOutStream));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5535
	callBackTimer->After(1000000);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5536
	CActiveScheduler::Start();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5537
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5538
	if(iAudOutStream==NULL)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5539
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5540
		err=KErrNotReady;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5541
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5542
		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5543
	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
  5544
		err != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5545
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5546
		INFO_PRINTF2(_L("Test failed with error %d"), iError);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5547
		return EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5548
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5549
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5550
	INFO_PRINTF1(_L("finished with this test step"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5551
	// test steps return a result
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5552
	return iTestStepResult;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5553
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5554
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5555
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5556
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5557
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5558
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5559
CTestStepAudOutStreamPosition* CTestStepAudOutStreamPosition::NewL(const TDesC& aTestName)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5560
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5561
	CTestStepAudOutStreamPosition* self = new(ELeave) CTestStepAudOutStreamPosition(aTestName);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5562
	return self;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5563
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5564
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5565
CTestStepAudOutStreamPosition::CTestStepAudOutStreamPosition(const TDesC& aTestName)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5566
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5567
	iTestStepResult = EPass;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5568
	// store the name of this test case
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5569
	// this is the name that is used by the script file
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5570
	iTestStepName = aTestName;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5571
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5572
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5573
CTestStepAudOutStreamPosition::~CTestStepAudOutStreamPosition()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5574
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5575
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5576
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5577
enum TVerdict CTestStepAudOutStreamPosition::DoTestStepPreambleL(void)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5578
{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5579
	iTestStepResult = EPass;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5580
	enum TVerdict verdict;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5581
	// this installs the scheduler
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5582
	verdict = CTestStepAudOutStream::DoTestStepPreambleL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5583
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5584
	// if the parent preamble fails, we must fail too
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5585
	if (verdict != EPass)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5586
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5587
		return verdict;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5588
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5589
		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5590
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5591
	// Printing to the console and log file
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5592
	INFO_PRINTF1(_L("this test is getting the position of a playing Audio Output Stream Utility Class: Position()"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5593
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5594
	iAudOutStream->Open(NULL);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5595
	CActiveScheduler::Start();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5596
	iAudOutStream->SetVolume(iAudOutStream->MaxVolume()>>1); // half volume
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5597
	TInt err = KErrNone;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5598
	if(iAudOutStream==NULL)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5599
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5600
		err = KErrNotReady;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5601
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5602
		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5603
	if (iError != KErrNone ||
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5604
		err != KErrNone )
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5605
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5606
		return EInconclusive;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5607
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5608
		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5609
	err = iFile.Open(iFs, KStreamRawFile, EFileRead);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5610
	if (err != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5611
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5612
		return EInconclusive;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5613
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5614
		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5615
	// start feeding the outputStream
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5616
	iReadBufferActive->Read(); // finally calls CMdaAudioOutputStream::WriteL(...)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5617
	CIdle* idleStopper = CIdle::NewL(CActive::EPriorityStandard);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5618
	idleStopper->Start(TCallBack(stopActiveScheduler));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5619
	CActiveScheduler::Start();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5620
	delete idleStopper;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5621
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5622
	if(iAudOutStream==NULL)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5623
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5624
		err = KErrNotReady;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5625
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5626
		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5627
	if (err != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5628
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5629
		return EInconclusive;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5630
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5631
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5632
	return verdict;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5633
}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5634
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5635
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5636
enum TVerdict CTestStepAudOutStreamPosition::DoTestStepPostambleL(void)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5637
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5638
	iFile.Close();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5639
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5640
	//[ Destroy the scheduler, delete the iAudOutStream, close the file system
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5641
	return CTestStepAudOutStream::DoTestStepPostambleL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5642
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5643
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5644
TVerdict CTestStepAudOutStreamPosition::DoTestStepL()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5645
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5646
	if(iAudOutStream==NULL)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5647
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5648
		return EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5649
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5650
		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5651
	// Get the position before and after a 5s play;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5652
	// We are asking for a two seconds play window, but due to scheduling issues etc, 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5653
	// we may not get exactly what we want. However we can more accurately find out 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5654
	// what we got by asking for the elapsed clock ticks during that time.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5655
	// This test fails if waittime < 5 seconds, needs more wait time to calculate accuractely
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5656
	const TInt KWaitTime = 5000000; // 5s
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5657
	CCallBackTimer* callBackTimer = CCallBackTimer::NewL(TCallBack(stopActiveScheduler), CActive::EPriorityStandard);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5658
	callBackTimer->After(KWaitTime);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5659
	const TTimeIntervalMicroSeconds pos1 = iAudOutStream->Position();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5660
	const TInt tick1 = User::TickCount();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5661
	CActiveScheduler::Start();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5662
	delete callBackTimer;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5663
	const TTimeIntervalMicroSeconds pos2 = iAudOutStream->Position();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5664
	const TInt tick2 = User::TickCount();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5665
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5666
	// How much did the postion move by, and in how much time?
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5667
	TInt tickPeriod = 0;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5668
	if (HAL::Get(HALData::ESystemTickPeriod, tickPeriod) != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5669
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5670
		return EInconclusive;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5671
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5672
		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5673
	const TInt64 KDiffPosition = pos2.Int64() - pos1.Int64();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5674
	const TInt KElapsedTime = (tick2 - tick1) * tickPeriod;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5675
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5676
	// Is the position diff inside an acceptable range?
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5677
	const TReal KTolerance = 0.2; // 20%
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5678
	const TInt KDelta = static_cast<TInt>(static_cast<TReal>(KElapsedTime) * KTolerance); // yuk
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5679
	const TInt KMin = KElapsedTime - KDelta;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5680
	const TInt KMax = KElapsedTime + KDelta;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5681
	INFO_PRINTF5 (_L("Step One:\tActual: %ld, Expected: %d, Min: %d, Max: %d"), KDiffPosition, KElapsedTime, KMin, KMax);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5682
	if ((KDiffPosition < KMin) || (KDiffPosition > KMax))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5683
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5684
		return EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5685
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5686
		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5687
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5688
	CIdle* idleStopper = CIdle::NewL(CActive::EPriorityStandard);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5689
	idleStopper->Start(TCallBack(StopAudOutStream, iAudOutStream));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5690
	CActiveScheduler::Start();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5691
	delete idleStopper;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5692
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5693
	if (iError != KErrCancel)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5694
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5695
		// KErrCancel (KErrAbort is supposed to be returned ny the MaoscBufferCopied??)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5696
		INFO_PRINTF2(_L("Test failed with error %d"), iError);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5697
		return EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5698
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5699
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5700
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5701
	// Get the position. For a stopped stream, this should always be zero.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5702
	TTimeIntervalMicroSeconds pos = iAudOutStream->Position();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5703
	INFO_PRINTF2(_L("Step Two:\tActual: %ld, Expected: 0"), pos.Int64());
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5704
	if (pos.Int64() != 0)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5705
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5706
		return EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5707
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5708
		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5709
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5710
	//xxx try cotinuing playing and get positions while playing if there is more time.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5711
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5712
	INFO_PRINTF1(_L("finished with this test step"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5713
	// test steps return a result
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5714
	return EPass;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5715
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5716
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5717
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5718
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5719
CTestStepAudOutStreamGetBytes* CTestStepAudOutStreamGetBytes::NewL(const TDesC& aTestName)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5720
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5721
	CTestStepAudOutStreamGetBytes* self = new(ELeave) CTestStepAudOutStreamGetBytes(aTestName);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5722
	return self;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5723
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5724
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5725
CTestStepAudOutStreamGetBytes::CTestStepAudOutStreamGetBytes(const TDesC& aTestName)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5726
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5727
	iTestStepResult = EPass;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5728
	// store the name of this test case
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5729
	// this is the name that is used by the script file
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5730
	iTestStepName = aTestName;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5731
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5732
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5733
CTestStepAudOutStreamGetBytes::~CTestStepAudOutStreamGetBytes()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5734
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5735
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5736
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5737
enum TVerdict CTestStepAudOutStreamGetBytes::DoTestStepPreambleL(void)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5738
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5739
	iTestStepResult = EPass;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5740
	enum TVerdict verdict;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5741
	// this installs the scheduler
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5742
	verdict = CTestStepAudOutStream::DoTestStepPreambleL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5743
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5744
	// if the parent preamble fails, we must fail too
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5745
	if (verdict != EPass)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5746
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5747
		return verdict;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5748
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5749
		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5750
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5751
	// Printing to the console and log file
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5752
	INFO_PRINTF1(_L("this test gets the bytes rendered by the H/W until this moment: GetBytes()"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5753
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5754
	iAudOutStream->Open(NULL);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5755
	CActiveScheduler::Start();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5756
	iAudOutStream->SetVolume(iAudOutStream->MaxVolume()>>1); // half volume
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5757
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5758
	TInt err = KErrNone;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5759
	if(iAudOutStream==NULL)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5760
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5761
		err = KErrNotReady;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5762
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5763
		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5764
	if (iError != KErrNone ||
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5765
		err != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5766
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5767
		return EInconclusive;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5768
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5769
		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5770
	err = iFile.Open(iFs, KStreamRawFile, EFileRead);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5771
	if (err != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5772
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5773
		return EInconclusive;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5774
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5775
		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5776
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5777
	// start feeding the outputStream
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5778
	iReadBufferActive->Read(); // finally calls CMdaAudioOutputStream::WriteL(...)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5779
	CIdle* idleStopper = CIdle::NewL(CActive::EPriorityStandard);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5780
	idleStopper->Start(TCallBack(stopActiveScheduler));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5781
	CActiveScheduler::Start();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5782
	delete idleStopper;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5783
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5784
	if(iAudOutStream==NULL)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5785
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5786
		err = KErrNotReady;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5787
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5788
		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5789
	if (err != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5790
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5791
		return EInconclusive;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5792
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5793
		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5794
	return verdict;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5795
}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5796
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5797
enum TVerdict CTestStepAudOutStreamGetBytes::DoTestStepPostambleL(void)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5798
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5799
	iFile.Close();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5800
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5801
	//[ Destroy the scheduler, delete the iAudOutStream, close the file system
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5802
	return CTestStepAudOutStream::DoTestStepPostambleL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5803
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5804
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5805
TVerdict CTestStepAudOutStreamGetBytes::DoTestStepL()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5806
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5807
	TInt bytes1 = iAudOutStream->GetBytes();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5808
	CCallBackTimer* callBackTimer = CCallBackTimer::NewL(TCallBack(stopActiveScheduler));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5809
	callBackTimer->After(2000000);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5810
	CActiveScheduler::Start();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5811
	if (iError != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5812
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5813
		INFO_PRINTF2(_L("Test failed with error %d"), iError);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5814
		return EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5815
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5816
	callBackTimer->Cancel(); // in case something else stopped the AS
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5817
	TInt bytes2 = iAudOutStream->GetBytes();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5818
	callBackTimer->After(2000000);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5819
	CActiveScheduler::Start();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5820
	if (iError != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5821
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5822
		INFO_PRINTF2(_L("Test failed with error %d"), iError);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5823
		return EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5824
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5825
	delete callBackTimer;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5826
	TInt bytes3 = iAudOutStream->GetBytes();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5827
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5828
	TInt fileSize;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5829
	User::LeaveIfError(iFile.Size(fileSize));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5830
	CActiveScheduler::Start(); // wait for sample to finish
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5831
	TInt bytes4 = iAudOutStream->GetBytes();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5832
	if (bytes1 >= bytes2 || bytes2 >= bytes3 || bytes3 >= bytes4)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5833
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5834
		return EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5835
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5836
		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5837
	if (bytes4 != fileSize)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5838
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5839
		return EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5840
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5841
		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5842
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5843
	INFO_PRINTF1(_L("finished with this test step"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5844
	// test steps return a result
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5845
	return iTestStepResult;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5846
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5847
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5848
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5849
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5850
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5851
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5852
//------------------------------------------------------------------
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5853
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5854
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5855
 * Constructor baseclass 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5856
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5857
CTestMmfAclntRecNoPlayback::CTestMmfAclntRecNoPlayback(const TDesC& aTestName, const TDesC& aSectName,const TDesC& aKeyName)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5858
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5859
	// store the name of this test case
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5860
	// this is the name that is used by the script file
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5861
	// Each test step initialises it's own name
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5862
	iTestStepName = aTestName;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5863
	iSectName = aSectName;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5864
	iKeyName = aKeyName;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5865
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5866
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5867
void CTestMmfAclntRecNoPlayback::MoscoStateChangeEvent(CBase* /*aObject*/, TInt /*aPreviousState*/, TInt aCurrentState, TInt aErrorCode)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5868
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5869
	iError = aErrorCode;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5870
	INFO_PRINTF1( _L("CTestMmfAclntRecNoPlayback : MMdaObjectStateChangeObserver Callback for CMdaAudioRecorderUtility complete"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5871
	INFO_PRINTF2( _L("iError %d "), iError);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5872
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5873
	//dont stop the playing track
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5874
	if (aCurrentState != CMdaAudioClipUtility::EPlaying || iError != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5875
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5876
		CActiveScheduler::Stop();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5877
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5878
		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5879
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5880
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5881
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5882
TVerdict CTestMmfAclntRecNoPlayback::DoTestStepPreambleL() 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5883
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5884
	TVerdict ret = EPass;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5885
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5886
	// Make sure file doesn't exist (maybe from a previous test)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5887
	TParse fullFileName;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5888
	TBuf<KSizeBuf>	filename;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5889
	TPtrC			filename1; 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5890
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5891
	if(!GetStringFromConfig(iSectName, iKeyName, filename1))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5892
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5893
		return EInconclusive;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5894
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5895
		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5896
	GetDriveName(filename);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5897
	filename.Append(filename1);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5898
		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5899
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5900
	// parse the filenames
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5901
	if(!fullFileName.Set(filename, &KDefault, NULL))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5902
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5903
		RFs fs;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5904
		User::LeaveIfError(fs.Connect());
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5905
		fs.SetAtt(fullFileName.FullName(), 0, KEntryAttReadOnly); 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5906
		TInt error = fs.Delete(fullFileName.FullName());
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5907
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5908
		if(error == KErrPathNotFound)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5909
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5910
			error = fs.MkDirAll(fullFileName.DriveAndPath());
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5911
			INFO_PRINTF2(_L("Path for file %S was been created"), &fullFileName.FullName());	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5912
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5913
		else  if(error == KErrNotFound)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5914
			INFO_PRINTF2(_L("No need to delete %S"), &fullFileName.FullName());	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5915
		else if(error==KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5916
			INFO_PRINTF2(_L("Deleted %S"), &fullFileName.FullName());	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5917
		else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5918
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5919
			ret = EInconclusive;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5920
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5921
		fs.Close();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5922
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5923
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5924
	if((ret == EInconclusive) || (ret == EFail))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5925
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5926
		return ret;	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5927
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5928
		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5929
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5930
	return CTestMmfAclntStep::DoTestStepPreambleL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5931
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5932
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5933
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5934
TVerdict CTestMmfAclntRecNoPlayback::DoTestStepPostambleL() 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5935
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5936
	if(IsFileTest())
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5937
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5938
		// Cleanup after the test
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5939
		TParse fullFileName;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5940
		TBuf<KSizeBuf>	filename;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5941
		TPtrC			filename1; 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5942
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5943
		if(!GetStringFromConfig(iSectName, iKeyName, filename1))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5944
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5945
			return EInconclusive;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5946
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5947
			
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5948
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5949
		GetDriveName(filename);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5950
		filename.Append(filename1);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5951
			
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5952
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5953
		// parse the filenames
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5954
		if(!fullFileName.Set(filename, &KDefault, NULL))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5955
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5956
			RFs fs;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5957
			User::LeaveIfError(fs.Connect());
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5958
			fs.SetAtt(fullFileName.FullName(), 0, KEntryAttReadOnly); 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5959
			TInt error = fs.Delete(fullFileName.FullName());
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5960
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5961
			if(error != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5962
				{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5963
				INFO_PRINTF2(_L("Failed to delete %S"), &fullFileName.FullName());	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5964
				}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5965
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5966
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5967
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5968
	return CTestMmfAclntStep::DoTestStepPostambleL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5969
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5970
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5971
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5972
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5973
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5974
TVerdict CTestMmfAclntRecNoPlayback::DoTestStepL()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5975
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5976
	TVerdict testStatus = EPass;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5977
	TInt trapRet = KErrNone;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5978
	TInt ret = KErrNone;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5979
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5980
	const TInt durError = 2000000; //2 second
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5981
	const TInt posnError = 250000; //1/4 second
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5982
	const TInt cropError = 250000; //1/4 second
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5983
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5984
	iRecorder = CMdaAudioRecorderUtilityLC();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5985
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5986
	if(!iRecorder)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5987
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5988
		testStatus = EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5989
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5990
		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5991
	//Should always work, must be done before play or record to ensure in EPrimed state
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5992
	if(testStatus == EPass)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5993
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5994
		TRAP(trapRet,iRecorder->SetPriority(EMdaPriorityMin,EMdaPriorityPreferenceNone));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5995
		if(trapRet != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5996
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5997
			INFO_PRINTF2(_L("SetPriority leave with error %d"),trapRet);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5998
			testStatus = EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5999
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6000
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6001
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6002
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6003
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6004
	if(testStatus == EPass)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6005
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6006
		iError = KErrTimedOut;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6007
		iRecorder->RecordL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6008
		INFO_PRINTF1( _L("Record CMdaAudioRecorderUtility"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6009
		CActiveScheduler::Start(); // open -> record
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6010
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6011
		User::After(KTenSeconds);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6012
		iRecorder->Stop();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6013
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6014
		testStatus =  RecordSuccessfull();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6015
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6016
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6017
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6018
	//Can't detect difference in these interfaces with no play controller
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6019
	//void ClearPlayWindow();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6020
	//void SetRepeats(....);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6021
	//void Pause();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6022
	//void SetMaxWriteLength(TInt aMaxWriteLength /*= KMdaClipLocationMaxWriteLengthNone*/);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6023
	//void SetVolumeRamp(const TTimeIntervalMicroSeconds& aRampDuration);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6024
	//void SetPlayWindow(const TTimeIntervalMicroSeconds& aStart, const TTimeIntervalMicroSeconds& aEnd);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6025
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6026
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6027
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6028
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6029
	//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6030
	//These interfaces should always WORK if there is a record or playback controller
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6031
	//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6032
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6033
	if(testStatus == EPass)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6034
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6035
		TTimeIntervalMicroSeconds setPosn(KTwoSeconds);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6036
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6037
		iRecorder->SetPosition(setPosn);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6038
		TTimeIntervalMicroSeconds getPosn = iRecorder->Position();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6039
		INFO_PRINTF3(_L("got position %d should be %d"),I64LOW(getPosn.Int64()), KTwoSeconds);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6040
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6041
		if((getPosn.Int64()  < setPosn.Int64()-posnError) &&
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6042
		   (getPosn.Int64()  > setPosn.Int64()+posnError))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6043
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6044
			INFO_PRINTF1(_L("Position fail"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6045
			testStatus = EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6046
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6047
		}	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6048
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6049
	if(testStatus == EPass)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6050
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6051
		TTimeIntervalMicroSeconds duration = iRecorder->Duration();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6052
		INFO_PRINTF3(_L("got duration %d should be %d"),I64LOW(duration.Int64()), KTenSeconds);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6053
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6054
		if((duration.Int64()  > KTenSeconds+durError) ||
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6055
		   (duration.Int64()  < KTenSeconds-durError))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6056
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6057
			INFO_PRINTF1(_L("Duration fail"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6058
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6059
		}	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6060
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6061
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6062
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6063
	//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6064
	//These interfaces should WORK if there is a record controller but no playback controller
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6065
	//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6066
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6067
	if(testStatus == EPass)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6068
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6069
		TInt gain;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6070
		iRecorder->SetGain(2);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6071
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6072
		ret = iRecorder->GetGain(gain);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6073
		if((ret != KErrNone) || (gain != 2))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6074
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6075
			INFO_PRINTF1(_L("Gain fail"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6076
			testStatus = EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6077
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6078
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6079
	if(testStatus == EPass)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6080
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6081
		TTimeIntervalMicroSeconds croppedDuration;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6082
		TTimeIntervalMicroSeconds originalDuration;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6083
		TTimeIntervalMicroSeconds setPosn(KTwoSeconds);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6084
		iRecorder->SetPosition(setPosn);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6085
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6086
		originalDuration = iRecorder->Duration();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6087
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6088
		if((originalDuration.Int64()  > KTenSeconds+durError) ||
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6089
		   (originalDuration.Int64()  < KTenSeconds-durError))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6090
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6091
			INFO_PRINTF1(_L("getting Duration for CropL fail"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6092
			testStatus = EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6093
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6094
		else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6095
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6096
			TRAP(trapRet, iRecorder->CropFromBeginningL());
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6097
			if(trapRet == KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6098
				{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6099
				croppedDuration = iRecorder->Duration();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6100
				INFO_PRINTF3(_L("got duration %d should be %d"),I64LOW(croppedDuration.Int64()), originalDuration.Int64()-KTwoSeconds);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6101
				}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6102
			if((trapRet != KErrNone) || 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6103
				((croppedDuration.Int64()  > originalDuration.Int64()-KTwoSeconds+cropError) ||
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6104
				(croppedDuration.Int64()  < originalDuration.Int64()-KTwoSeconds-cropError)))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6105
				{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6106
				INFO_PRINTF1(_L("Crop fail"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6107
				testStatus = EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6108
				}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6109
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6110
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6111
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6112
	if(testStatus == EPass)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6113
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6114
		TTimeIntervalMicroSeconds zero(0);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6115
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6116
		TTimeIntervalMicroSeconds recTimeAvail = iRecorder->RecordTimeAvailable();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6117
		if(recTimeAvail == zero)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6118
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6119
			INFO_PRINTF1(_L("RecordTimeAvailable fail"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6120
			testStatus = EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6121
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6122
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6123
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6124
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6125
	if(testStatus == EPass)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6126
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6127
		TInt bal = KMMFBalanceMaxRight;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6128
		ret = iRecorder->SetRecordBalance(KMMFBalanceMaxLeft);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6129
		if(ret == KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6130
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6131
			bal = KMMFBalanceMaxRight;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6132
			ret = iRecorder->GetRecordBalance(bal);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6133
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6134
		if((bal != KMMFBalanceMaxLeft) || (ret != KErrNone))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6135
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6136
			INFO_PRINTF1(_L("Balance tests fail"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6137
			testStatus = EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6138
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6139
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6140
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6141
	//Haven't got a format that supports these - trace into code.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6142
	/*
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6143
	if(testStatus == EPass)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6144
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6145
		TInt metaEntries;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6146
		CMMFMetaDataEntry* metaEntry = NULL;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6147
		CMMFMetaDataEntry* newMetaEntry = CMMFMetaDataEntry::NewL(_L("dummy meta"), _L("dummy val"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6148
		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6149
		iRecorder->GetNumberOfMetaDataEntries(metaEntries);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6150
		TRAP(trapRet, metaEntry = iRecorder->GetMetaDataEntryL(1));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6151
		TRAP(trapRet, iRecorder->AddMetaDataEntryL(*newMetaEntry));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6152
		TRAP(trapRet, iRecorder->ReplaceMetaDataEntryL(1, *newMetaEntry));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6153
		iRecorder->RemoveMetaDataEntry(1);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6154
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6155
	*/
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6156
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6157
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6158
	if(testStatus == EPass)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6159
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6160
		RArray<TFourCC> codecs;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6161
		TRAP(trapRet, iRecorder->GetSupportedDestinationDataTypesL(codecs));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6162
		if((trapRet == KErrNone) && (codecs.Count() > 0) && IsFileTest())
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6163
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6164
			TRAP(trapRet, iRecorder->SetDestinationDataTypeL(codecs[0]));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6165
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6166
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6167
		if((trapRet == KErrNone) && (codecs.Count() > 0))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6168
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6169
			TFourCC dataType;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6170
			TRAP(trapRet, dataType = iRecorder->DestinationDataTypeL());
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6171
			if((trapRet != KErrNone) || (IsFileTest() && (dataType != codecs[0])))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6172
				testStatus = EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6173
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6174
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6175
		if((trapRet != KErrNone) || (testStatus == EFail))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6176
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6177
			INFO_PRINTF1(_L("DestinationDataTypes fail"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6178
			testStatus = EFail; 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6179
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6180
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6181
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6182
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6183
	//These methods are not available for our formats and will therefore always fail - trace into code
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6184
	/*
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6185
	if(testStatus == EPass)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6186
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6187
		RArray<TUint> bitRates;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6188
		TUint bitRate = 0;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6189
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6190
		TRAP(trapRet, iRecorder->GetSupportedBitRatesL(bitRates));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6191
		if((trapRet == KErrNone) && (bitRates.Count() >0))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6192
			TRAP(trapRet, iRecorder->SetDestinationBitRateL(bitRates[0]));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6193
		if((trapRet == KErrNone) && (bitRates.Count() >0))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6194
			TRAP(trapRet, bitRate = iRecorder->DestinationBitRateL());
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6195
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6196
		if((trapRet != KErrNone) || (bitRate != bitRates[0]))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6197
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6198
			INFO_PRINTF1(_L("BitRates fail"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6199
			testStatus = EFail; 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6200
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6201
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6202
		*/
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6203
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6204
	if(testStatus == EPass)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6205
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6206
		RArray<TUint> sampleRates;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6207
		TUint sampleRate = 0;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6208
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6209
		TRAP(trapRet, iRecorder->GetSupportedSampleRatesL(sampleRates));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6210
		if((trapRet == KErrNone) && (sampleRates.Count() >0))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6211
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6212
			TRAP(trapRet, iRecorder->SetDestinationSampleRateL(sampleRates[0]));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6213
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6214
			
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6215
		if((trapRet == KErrNone) && (sampleRates.Count() >0))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6216
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6217
			TRAP(trapRet, sampleRate = iRecorder->DestinationSampleRateL());
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6218
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6219
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6220
		if((trapRet != KErrNone) || (sampleRate != sampleRates[0]))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6221
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6222
			INFO_PRINTF1(_L("SampleRates fail"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6223
			testStatus = EFail; 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6224
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6225
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6226
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6227
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6228
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6229
	if(testStatus == EPass)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6230
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6231
		RArray<TUint> channels;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6232
		TUint channel = 0;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6233
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6234
		TRAP(trapRet, iRecorder->GetSupportedNumberOfChannelsL(channels));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6235
		if((trapRet == KErrNone) && (channels.Count() >0))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6236
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6237
			TRAP(trapRet, iRecorder->SetDestinationNumberOfChannelsL(channels[0]));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6238
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6239
			
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6240
		if((trapRet == KErrNone) && (channels.Count() >0))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6241
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6242
			TRAP(trapRet, channel = iRecorder->DestinationNumberOfChannelsL());
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6243
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6244
			
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6245
		if((trapRet != KErrNone) || (channel != channels[0]))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6246
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6247
			INFO_PRINTF1(_L("channels fail"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6248
			testStatus = EFail; 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6249
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6250
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6251
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6252
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6253
	if(testStatus == EPass)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6254
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6255
		TUid currentFormat = KNullUid;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6256
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6257
		TRAP(trapRet, currentFormat = iRecorder->DestinationFormatL());
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6258
		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6259
		/*can't do this, causes segmentation violation - trace into code
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6260
		TUid newFormat = {KMmfUidFormatRAWWrite};
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6261
		if(trapRet == KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6262
			TRAP(trapRet, iRecorder->SetDestinationFormatL(newFormat));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6263
		if(trapRet == KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6264
			TRAP(trapRet, iRecorder->SetDestinationFormatL(currentFormat));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6265
		*/
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6266
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6267
		if(trapRet != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6268
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6269
			INFO_PRINTF1(_L("format fail"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6270
			testStatus = EFail; 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6271
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6272
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6273
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6274
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6275
//  These would pass when a record controller is present, also need test controller - trace into code
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6276
//	TInt RecordControllerCustomCommandSync(const TMMFMessageDestinationPckg& aDestination, TInt aFunction, const TDesC8& aDataTo1, const TDesC8& aDataTo2, TDes8& aDataFrom);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6277
//	TInt RecordControllerCustomCommandSync(const TMMFMessageDestinationPckg& aDestination, TInt aFunction, const TDesC8& aDataTo1, const TDesC8& aDataTo2);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6278
//	void RecordControllerCustomCommandAsync(const TMMFMessageDestinationPckg& aDestination, TInt aFunction, const TDesC8& aDataTo1, const TDesC8& aDataTo2, TDes8& aDataFrom, TRequestStatus& aStatus);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6279
//	void RecordControllerCustomCommandAsync(const TMMFMessageDestinationPckg& aDestination, TInt aFunction, const TDesC8& aDataTo1, const TDesC8& aDataTo2, TRequestStatus& aStatus);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6280
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6281
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6282
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6283
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6284
	//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6285
	//These interfaces should FAIL if there is a record controller but no playback controller
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6286
	//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6287
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6288
	if(testStatus == EPass)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6289
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6290
		TRAP(trapRet, iRecorder->PlayL())
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6291
		if(trapRet != KErrNotSupported)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6292
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6293
			INFO_PRINTF1(_L("Play fail"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6294
			testStatus = EFail; 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6295
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6296
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6297
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6298
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6299
	if(testStatus == EPass)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6300
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6301
		TInt maxVol = iRecorder->MaxVolume();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6302
		if(maxVol != 0)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6303
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6304
			INFO_PRINTF1(_L("MaxVolume fail"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6305
			testStatus = EFail; 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6306
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6307
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6308
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6309
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6310
	if(testStatus == EPass)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6311
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6312
		iRecorder->SetVolume(1);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6313
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6314
		TInt vol;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6315
		ret = iRecorder->GetVolume(vol);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6316
		if(ret != KErrNotSupported)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6317
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6318
			INFO_PRINTF1(_L("GetVolume fail"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6319
			testStatus = EFail; 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6320
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6321
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6322
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6323
	if(testStatus == EPass)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6324
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6325
		TInt bal;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6326
		TInt ret = iRecorder->SetPlaybackBalance(KMMFBalanceMaxRight);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6327
		if(ret != KErrNotSupported)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6328
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6329
			INFO_PRINTF1(_L("SetPlaybackBalance fail"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6330
			testStatus = EFail; 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6331
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6332
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6333
		ret = iRecorder->GetPlaybackBalance(bal);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6334
		if(ret != KErrNotSupported)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6335
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6336
			INFO_PRINTF1(_L("GetPlaybackBalance fail"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6337
			testStatus = EFail; 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6338
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6339
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6340
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6341
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6342
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6343
	if(testStatus == EPass)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6344
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6345
		TMMFMessageDestinationPckg dummyPckg;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6346
		TInt dummyFunc = 100;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6347
		TBuf8<8> dummyBuff;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6348
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6349
		ret = iRecorder->PlayControllerCustomCommandSync(dummyPckg, dummyFunc, dummyBuff, dummyBuff, dummyBuff);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6350
		if(ret != KErrNotSupported)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6351
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6352
			INFO_PRINTF1(_L("PlayControllerCustomCommandSync - 1 fail"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6353
			testStatus = EFail; 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6354
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6355
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6356
		ret = iRecorder->PlayControllerCustomCommandSync(dummyPckg, dummyFunc, dummyBuff, dummyBuff);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6357
		if(ret != KErrNotSupported)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6358
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6359
			INFO_PRINTF1(_L("PlayControllerCustomCommandSync -2 fail"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6360
			testStatus = EFail; 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6361
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6362
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6363
		CTestMmfAclntAOCallback* aoCallback =  new CTestMmfAclntAOCallback(this);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6364
		CleanupStack::PushL(aoCallback);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6365
		aoCallback->PublicSetActive();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6366
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6367
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6368
		iRecorder->PlayControllerCustomCommandAsync(dummyPckg, dummyFunc, dummyBuff, dummyBuff, dummyBuff, aoCallback->iStatus);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6369
		CActiveScheduler::Start();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6370
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6371
		if(iError != KErrNotSupported)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6372
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6373
			INFO_PRINTF1(_L("PlayControllerCustomCommandAsync -1 fail"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6374
			testStatus = EFail; 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6375
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6376
		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6377
		aoCallback->PublicSetActive();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6378
		iRecorder->PlayControllerCustomCommandAsync(dummyPckg, dummyFunc, dummyBuff, dummyBuff, aoCallback->iStatus);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6379
		CActiveScheduler::Start();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6380
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6381
		if(iError != KErrNotSupported)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6382
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6383
			INFO_PRINTF1(_L("PlayControllerCustomCommandAsync -2 fail"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6384
			testStatus = EFail; 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6385
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6386
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6387
		CleanupStack::Pop(aoCallback);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6388
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6389
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6390
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6391
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6392
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6393
	CleanupStack::PopAndDestroy(iRecorder);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6394
	User::After(KOneSecond);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6395
	return	testStatus;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6396
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6397
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6398
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6399
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6400
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6401
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6402
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6403
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6404
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6405
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6406
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6407
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6408
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6409
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6410
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6411
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6412
//------------------------------------------------------------------
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6413
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6414
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6415
 * Constructor
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6416
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6417
CTestMmfAclntRecNoPlaybackForceFormat::CTestMmfAclntRecNoPlaybackForceFormat(const TDesC& aTestName, const TDesC& aSectName,const TDesC& aKeyName, const TMdaClipFormat& aFormat)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6418
: CTestMmfAclntRecNoPlayback(aTestName, aSectName, aKeyName)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6419
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6420
	iFormat = aFormat;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6421
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6422
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6423
CTestMmfAclntRecNoPlaybackForceFormat* CTestMmfAclntRecNoPlaybackForceFormat::NewL(const TDesC& aTestName, const TDesC& aSectName,const TDesC& aKeyName, const TMdaClipFormat& aFormat)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6424
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6425
	CTestMmfAclntRecNoPlaybackForceFormat* self = new (ELeave) CTestMmfAclntRecNoPlaybackForceFormat(aTestName,aSectName,aKeyName,aFormat);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6426
	return self;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6427
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6428
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6429
CTestMmfAclntRecNoPlaybackForceFormat* CTestMmfAclntRecNoPlaybackForceFormat::NewLC(const TDesC& aTestName, const TDesC& aSectName,const TDesC& aKeyName, const TMdaClipFormat& aFormat)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6430
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6431
	CTestMmfAclntRecNoPlaybackForceFormat* self = CTestMmfAclntRecNoPlaybackForceFormat::NewLC(aTestName,aSectName,aKeyName,aFormat);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6432
	CleanupStack::PushL(self);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6433
	return self;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6434
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6435
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6436
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6437
CMdaAudioRecorderUtility* CTestMmfAclntRecNoPlaybackForceFormat::CMdaAudioRecorderUtilityLC()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6438
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6439
	INFO_PRINTF1( _L("Create CMdaAudioRecorderUtility with a file and forcing format"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6440
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6441
	if(!GetStringFromConfig(iSectName, iKeyName, iFilename))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6442
		return NULL;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6443
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6444
	CMdaAudioRecorderUtility* recUtil = CMdaAudioRecorderUtility::NewL(*this);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6445
	CleanupStack::PushL(recUtil);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6446
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6447
	TMdaFileClipLocation location(iFilename);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6448
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6449
	recUtil->OpenL(&location,&iFormat);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6450
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6451
	INFO_PRINTF1( _L("Initialise CMdaAudioRecorderUtility"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6452
	CActiveScheduler::Start();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6453
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6454
	if(iError != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6455
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6456
		CleanupStack::PopAndDestroy(recUtil);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6457
		recUtil = NULL;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6458
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6459
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6460
	return	recUtil;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6461
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6462
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6463
TVerdict CTestMmfAclntRecNoPlaybackForceFormat::RecordSuccessfull()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6464
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6465
	TVerdict testStatus = EPass;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6466
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6467
	if(iError == KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6468
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6469
		RFs fs;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6470
		RFile file;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6471
		TInt size = 0;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6472
		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6473
		iError = fs.Connect();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6474
		if (iError == KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6475
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6476
			iError = file.Open(fs,iFilename,EFileRead);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6477
			
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6478
			if (iError == KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6479
				{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6480
				iError = file.Size(size);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6481
					
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6482
				if (iError != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6483
					{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6484
					INFO_PRINTF1(_L("Unable to get size of file!"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6485
					}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6486
				}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6487
			else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6488
				{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6489
				INFO_PRINTF1(_L("Unable to open file."));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6490
				return EInconclusive;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6491
				}	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6492
			
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6493
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6494
		else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6495
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6496
			INFO_PRINTF1(_L("Unable to connect to file system."));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6497
			return EInconclusive;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6498
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6499
		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6500
		if(size == 0)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6501
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6502
			testStatus = EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6503
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6504
			
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6505
		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6506
		file.Close();	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6507
		fs.Close();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6508
		CleanupStack::PopAndDestroy(); //file
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6509
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6510
	else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6511
		testStatus = EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6512
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6513
	return testStatus;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6514
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6515
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6516
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6517
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6518
CTestMmfAclntRecNoPlaybackForceFormatDesc* CTestMmfAclntRecNoPlaybackForceFormatDesc::NewL(const TDesC& aTestName, const TDesC& aSectName,const TDesC& aKeyName, const TMdaClipFormat& aFormat)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6519
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6520
	CTestMmfAclntRecNoPlaybackForceFormatDesc* self = new (ELeave) CTestMmfAclntRecNoPlaybackForceFormatDesc(aTestName,aSectName,aKeyName,aFormat);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6521
	return self;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6522
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6523
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6524
CTestMmfAclntRecNoPlaybackForceFormatDesc* CTestMmfAclntRecNoPlaybackForceFormatDesc::NewLC(const TDesC& aTestName, const TDesC& aSectName,const TDesC& aKeyName, const TMdaClipFormat& aFormat)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6525
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6526
	CTestMmfAclntRecNoPlaybackForceFormatDesc* self = CTestMmfAclntRecNoPlaybackForceFormatDesc::NewLC(aTestName,aSectName,aKeyName,aFormat);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6527
	CleanupStack::PushL(self);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6528
	return self;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6529
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6530
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6531
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6532
CMdaAudioRecorderUtility* CTestMmfAclntRecNoPlaybackForceFormatDesc::CMdaAudioRecorderUtilityLC()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6533
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6534
	const TInt KMaxFileSize = 200000;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6535
	INFO_PRINTF1( _L("Create CMdaAudioRecorderUtility with a descriptor and forcing format"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6536
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6537
	if(!GetStringFromConfig(iSectName, iKeyName, iFilename))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6538
		User::Leave(KErrNotFound);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6539
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6540
	CMdaAudioRecorderUtility* recUtil = CMdaAudioRecorderUtility::NewL(*this);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6541
	CleanupStack::PushL(recUtil);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6542
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6543
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6544
	HBufC8* iBuf = HBufC8::NewL( KMaxFileSize );
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6545
	CleanupStack::PushL(iBuf);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6546
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6547
	iFileDesc = new (ELeave) TPtr8( NULL, 0 );
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6548
	CleanupStack::PushL(iFileDesc);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6549
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6550
	iFileDesc->Set( iBuf->Des());
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6551
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6552
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6553
	TMdaDesClipLocation location(*iFileDesc);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6554
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6555
	recUtil->OpenL(&location,&iFormat);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6556
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6557
	INFO_PRINTF1( _L("Initialise CMdaAudioRecorderUtility"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6558
	CActiveScheduler::Start();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6559
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6560
	if(iError != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6561
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6562
		User::Leave(KErrNotFound);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6563
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6564
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6565
	CleanupStack::Pop(iFileDesc);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6566
	CleanupStack::Pop(iBuf);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6567
	return	recUtil;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6568
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6569
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6570
TVerdict CTestMmfAclntRecNoPlaybackForceFormatDesc::RecordSuccessfull()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6571
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6572
	TVerdict testStatus = EPass;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6573
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6574
	TInt len = iFileDesc->Length();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6575
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6576
	if(len == 0)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6577
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6578
		testStatus = EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6579
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6580
		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6581
	return testStatus;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6582
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6583
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6584
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6585
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6586
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6587
//------------------------------------------------------------------
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6588
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6589
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6590
CTestMmfAclntRecNoPlaybackFile* CTestMmfAclntRecNoPlaybackFile::NewL(const TDesC& aTestName, const TDesC& aSectName,const TDesC& aKeyName)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6591
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6592
	CTestMmfAclntRecNoPlaybackFile* self = new (ELeave) CTestMmfAclntRecNoPlaybackFile(aTestName,aSectName,aKeyName);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6593
	return self;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6594
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6595
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6596
CTestMmfAclntRecNoPlaybackFile* CTestMmfAclntRecNoPlaybackFile::NewLC(const TDesC& aTestName, const TDesC& aSectName,const TDesC& aKeyName)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6597
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6598
	CTestMmfAclntRecNoPlaybackFile* self = CTestMmfAclntRecNoPlaybackFile::NewLC(aTestName,aSectName,aKeyName);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6599
	CleanupStack::PushL(self);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6600
	return self;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6601
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6602
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6603
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6604
CMdaAudioRecorderUtility* CTestMmfAclntRecNoPlaybackFile::CMdaAudioRecorderUtilityLC()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6605
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6606
	INFO_PRINTF1( _L("Create CMdaAudioRecorderUtility with a file"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6607
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6608
	if(!GetStringFromConfig(iSectName, iKeyName, iFilename))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6609
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6610
		return NULL;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6611
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6612
		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6613
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6614
	CMdaAudioRecorderUtility* recUtil = CMdaAudioRecorderUtility::NewL(*this);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6615
	CleanupStack::PushL(recUtil);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6616
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6617
	recUtil->OpenFileL(iFilename);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6618
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6619
	INFO_PRINTF1( _L("Initialise CMdaAudioRecorderUtility"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6620
	CActiveScheduler::Start();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6621
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6622
	if(iError != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6623
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6624
		CleanupStack::PopAndDestroy(recUtil);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6625
		recUtil = NULL;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6626
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6627
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6628
	return	recUtil;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6629
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6630
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6631
TVerdict CTestMmfAclntRecNoPlaybackFile::RecordSuccessfull()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6632
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6633
	TVerdict testStatus = EPass;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6634
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6635
	if(iError == KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6636
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6637
		RFs fs;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6638
		RFile file;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6639
		TInt size = 0;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6640
		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6641
		iError = fs.Connect();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6642
		if (iError == KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6643
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6644
			iError = file.Open(fs,iFilename,EFileRead);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6645
			
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6646
			if (iError == KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6647
				{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6648
				iError = file.Size(size);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6649
					
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6650
				if (iError != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6651
					{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6652
					INFO_PRINTF1(_L("Unable to get size of file!"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6653
					}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6654
				}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6655
			else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6656
				{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6657
				INFO_PRINTF1(_L("Unable to open file."));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6658
				return EInconclusive;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6659
				}	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6660
			
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6661
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6662
		else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6663
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6664
			INFO_PRINTF1(_L("Unable to connect to file system."));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6665
			return EInconclusive;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6666
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6667
		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6668
		if(size == 0)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6669
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6670
			testStatus = EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6671
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6672
			
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6673
		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6674
		file.Close();	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6675
		fs.Close();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6676
		CleanupStack::PopAndDestroy(); //file
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6677
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6678
		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6679
	else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6680
		testStatus = EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6681
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6682
	return testStatus;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6683
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6684
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6685
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6686
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6687
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6688
CTestMmfAclntRecNoPlaybackDesc* CTestMmfAclntRecNoPlaybackDesc::NewL(const TDesC& aTestName, const TDesC& aSectName,const TDesC& aKeyName)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6689
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6690
	CTestMmfAclntRecNoPlaybackDesc* self = new (ELeave) CTestMmfAclntRecNoPlaybackDesc(aTestName,aSectName,aKeyName);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6691
	return self;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6692
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6693
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6694
CTestMmfAclntRecNoPlaybackDesc* CTestMmfAclntRecNoPlaybackDesc::NewLC(const TDesC& aTestName, const TDesC& aSectName,const TDesC& aKeyName)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6695
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6696
	CTestMmfAclntRecNoPlaybackDesc* self = CTestMmfAclntRecNoPlaybackDesc::NewLC(aTestName,aSectName,aKeyName);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6697
	CleanupStack::PushL(self);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6698
	return self;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6699
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6700
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6701
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6702
CMdaAudioRecorderUtility* CTestMmfAclntRecNoPlaybackDesc::CMdaAudioRecorderUtilityLC()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6703
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6704
	const TInt KMaxFileSize = 200000;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6705
	INFO_PRINTF1( _L("Create CMdaAudioRecorderUtility with a descriptor"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6706
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6707
	if(!GetStringFromConfig(iSectName, iKeyName, iFilename))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6708
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6709
		User::Leave(KErrNotFound);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6710
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6711
		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6712
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6713
	CMdaAudioRecorderUtility* recUtil = CMdaAudioRecorderUtility::NewL(*this);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6714
	CleanupStack::PushL(recUtil);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6715
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6716
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6717
	HBufC8* iBuf = HBufC8::NewL( KMaxFileSize );
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6718
	CleanupStack::PushL(iBuf);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6719
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6720
	iFileDesc = new (ELeave) TPtr8( NULL, 0 );
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6721
	CleanupStack::PushL(iFileDesc);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6722
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6723
	iFileDesc->Set( iBuf->Des());
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6724
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6725
	//Put some contents (one sample wav file) into the descriptor
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6726
	TPtrC oneSampleFileName;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6727
	if(!GetStringFromConfig(iSectName, _L("OneSampleFile"), oneSampleFileName))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6728
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6729
		User::Leave(KErrNotFound);	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6730
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6731
		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6732
	RFs fs;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6733
	RFile file;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6734
	User::LeaveIfError(fs.Connect());
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6735
	User::LeaveIfError(file.Open(fs,oneSampleFileName,EFileRead));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6736
	CleanupClosePushL(file);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6737
	if(file.Read(*iFileDesc) != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6738
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6739
		User::Leave(KErrNotFound);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6740
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6741
	CleanupStack::PopAndDestroy(&file);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6742
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6743
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6744
	recUtil->OpenDesL(*iFileDesc);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6745
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6746
	INFO_PRINTF1( _L("Initialise CMdaAudioRecorderUtility"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6747
	CActiveScheduler::Start();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6748
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6749
	if(iError != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6750
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6751
		User::Leave(KErrNotFound);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6752
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6753
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6754
	CleanupStack::Pop(iFileDesc);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6755
	CleanupStack::Pop(iBuf);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6756
	return	recUtil;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6757
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6758
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6759
TVerdict CTestMmfAclntRecNoPlaybackDesc::RecordSuccessfull()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6760
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6761
	TVerdict testStatus = EPass;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6762
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6763
	TInt len = iFileDesc->Length();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6764
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6765
	if(len == 0)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6766
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6767
		testStatus = EFail;	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6768
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6769
		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6770
	return testStatus;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6771
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6772
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6773
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6774
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6775
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6776
CTestMmfAclntRecNoPlaybackFileForceController* CTestMmfAclntRecNoPlaybackFileForceController::NewL(const TDesC& aTestName, const TDesC& aSectName,const TDesC& aKeyName, const TUid aController)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6777
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6778
	CTestMmfAclntRecNoPlaybackFileForceController* self = new (ELeave) CTestMmfAclntRecNoPlaybackFileForceController(aTestName,aSectName,aKeyName, aController);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6779
	return self;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6780
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6781
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6782
CTestMmfAclntRecNoPlaybackFileForceController* CTestMmfAclntRecNoPlaybackFileForceController::NewLC(const TDesC& aTestName, const TDesC& aSectName,const TDesC& aKeyName, const TUid aController)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6783
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6784
	CTestMmfAclntRecNoPlaybackFileForceController* self = CTestMmfAclntRecNoPlaybackFileForceController::NewLC(aTestName,aSectName,aKeyName,aController);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6785
	CleanupStack::PushL(self);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6786
	return self;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6787
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6788
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6789
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6790
CMdaAudioRecorderUtility* CTestMmfAclntRecNoPlaybackFileForceController::CMdaAudioRecorderUtilityLC()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6791
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6792
	INFO_PRINTF1( _L("Create CMdaAudioRecorderUtility with a file, forcing record controller"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6793
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6794
	if(!GetStringFromConfig(iSectName, iKeyName, iFilename))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6795
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6796
		return NULL;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6797
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6798
		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6799
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6800
	CMdaAudioRecorderUtility* recUtil = CMdaAudioRecorderUtility::NewL(*this);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6801
	CleanupStack::PushL(recUtil);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6802
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6803
	recUtil->OpenFileL(iFilename,iController);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6804
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6805
	INFO_PRINTF1( _L("Initialise CMdaAudioRecorderUtility"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6806
	CActiveScheduler::Start();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6807
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6808
	if(iError != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6809
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6810
		CleanupStack::PopAndDestroy(recUtil);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6811
		recUtil = NULL;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6812
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6813
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6814
	return	recUtil;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6815
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6816
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6817
TVerdict CTestMmfAclntRecNoPlaybackFileForceController::RecordSuccessfull()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6818
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6819
	TVerdict testStatus = EPass;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6820
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6821
	if(iError == KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6822
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6823
		RFs fs;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6824
		RFile file;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6825
		TInt size = 0;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6826
		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6827
		iError = fs.Connect();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6828
		if (iError == KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6829
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6830
			iError = file.Open(fs,iFilename,EFileRead);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6831
			
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6832
			if (iError == KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6833
				{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6834
				iError = file.Size(size);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6835
					
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6836
				if (iError != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6837
					{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6838
					INFO_PRINTF1(_L("Unable to get size of file!"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6839
					}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6840
				}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6841
			else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6842
				{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6843
				INFO_PRINTF1(_L("Unable to open file."));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6844
				return EInconclusive;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6845
				}	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6846
			
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6847
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6848
		else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6849
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6850
			INFO_PRINTF1(_L("Unable to connect to file system."));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6851
			return EInconclusive;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6852
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6853
		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6854
		if(size == 0)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6855
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6856
			testStatus = EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6857
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6858
			
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6859
		file.Close();	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6860
		fs.Close();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6861
		CleanupStack::PopAndDestroy(); //file
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6862
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6863
	else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6864
		testStatus = EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6865
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6866
	return testStatus;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6867
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6868
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6869
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6870
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6871
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6872
CTestMmfAclntRecNoPlaybackDescForceController* CTestMmfAclntRecNoPlaybackDescForceController::NewL(const TDesC& aTestName, const TDesC& aSectName,const TDesC& aKeyName, const TUid aController)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6873
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6874
	CTestMmfAclntRecNoPlaybackDescForceController* self = new (ELeave) CTestMmfAclntRecNoPlaybackDescForceController(aTestName,aSectName,aKeyName,aController);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6875
	return self;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6876
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6877
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6878
CTestMmfAclntRecNoPlaybackDescForceController* CTestMmfAclntRecNoPlaybackDescForceController::NewLC(const TDesC& aTestName, const TDesC& aSectName,const TDesC& aKeyName, const TUid aController)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6879
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6880
	CTestMmfAclntRecNoPlaybackDescForceController* self = CTestMmfAclntRecNoPlaybackDescForceController::NewLC(aTestName,aSectName,aKeyName,aController);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6881
	CleanupStack::PushL(self);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6882
	return self;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6883
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6884
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6885
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6886
CMdaAudioRecorderUtility* CTestMmfAclntRecNoPlaybackDescForceController::CMdaAudioRecorderUtilityLC()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6887
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6888
	const TInt KMaxFileSize = 200000;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6889
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6890
	INFO_PRINTF1( _L("Create CMdaAudioRecorderUtility with a descriptor, forcing record controller"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6891
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6892
	if(!GetStringFromConfig(iSectName, iKeyName, iFilename))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6893
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6894
		User::Leave(KErrNotFound);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6895
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6896
		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6897
	CMdaAudioRecorderUtility* recUtil = CMdaAudioRecorderUtility::NewL(*this);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6898
	CleanupStack::PushL(recUtil);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6899
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6900
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6901
	HBufC8* iBuf = HBufC8::NewL( KMaxFileSize );
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6902
	CleanupStack::PushL(iBuf);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6903
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6904
	iFileDesc = new (ELeave) TPtr8( NULL, 0 );
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6905
	CleanupStack::PushL(iFileDesc);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6906
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6907
	iFileDesc->Set( iBuf->Des());
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6908
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6909
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6910
	//Put some contents (one sample wav file) into the descriptor
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6911
	TPtrC oneSampleFileName;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6912
	if(!GetStringFromConfig(iSectName, _L("OneSampleFile"), oneSampleFileName))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6913
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6914
		User::Leave(KErrNotFound);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6915
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6916
		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6917
	RFs fs;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6918
	RFile file;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6919
	User::LeaveIfError(fs.Connect());
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6920
	User::LeaveIfError(file.Open(fs,oneSampleFileName,EFileRead));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6921
	CleanupClosePushL(file);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6922
	if(file.Read(*iFileDesc) != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6923
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6924
		User::Leave(KErrNotFound);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6925
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6926
	CleanupStack::PopAndDestroy(&file);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6927
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6928
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6929
	recUtil->OpenDesL(*iFileDesc, iController);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6930
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6931
	INFO_PRINTF1( _L("Initialise CMdaAudioRecorderUtility"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6932
	CActiveScheduler::Start();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6933
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6934
	if(iError != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6935
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6936
		User::Leave(KErrNotFound);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6937
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6938
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6939
	CleanupStack::Pop(iFileDesc);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6940
	CleanupStack::Pop(iBuf);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6941
	return	recUtil;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6942
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6943
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6944
TVerdict CTestMmfAclntRecNoPlaybackDescForceController::RecordSuccessfull()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6945
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6946
	TVerdict testStatus = EPass;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6947
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6948
	TInt len = iFileDesc->Length();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6949
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6950
	if(len == 0)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6951
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6952
		testStatus = EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6953
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6954
		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6955
	return testStatus;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6956
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6957
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6958
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6959
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6960
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6961
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6962
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6963
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6964
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6965
//------------------------------------------------------------------
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6966
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6967
 * Constructor baseclass 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6968
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6969
CTestMmfAclntRecNoRecord::CTestMmfAclntRecNoRecord(const TDesC& aTestName, const TDesC& aSectName,const TDesC& aKeyName)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6970
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6971
	// store the name of this test case
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6972
	// this is the name that is used by the script file
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6973
	// Each test step initialises it's own name
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6974
	iTestStepName = aTestName;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6975
	iSectName = aSectName;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6976
	iKeyName = aKeyName;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6977
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6978
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6979
void CTestMmfAclntRecNoRecord::MoscoStateChangeEvent(CBase* /*aObject*/, TInt /*aPreviousState*/, TInt aCurrentState, TInt aErrorCode)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6980
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6981
	iError = aErrorCode;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6982
	INFO_PRINTF1( _L("CTestMmfAclntRecNoRecord : MMdaObjectStateChangeObserver Callback for CMdaAudioRecorderUtility complete"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6983
	INFO_PRINTF2( _L("iError %d "), iError);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6984
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6985
	//dont stop the playing track
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6986
	if (aCurrentState != CMdaAudioClipUtility::EPlaying || iError != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6987
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6988
		CActiveScheduler::Stop();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6989
		}	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6990
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6991
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6992
TVerdict CTestMmfAclntRecNoRecord::DoTestStepPreambleL()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6993
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6994
	// Make sure file exists
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6995
	TParse fullFileName;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6996
	TBuf<KSizeBuf>	filename;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6997
	TPtrC			filename1; 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6998
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6999
	if(!GetStringFromConfig(iSectName, iKeyName, filename1))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7000
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7001
		return EInconclusive;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7002
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7003
		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7004
	GetDriveName(filename);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7005
	filename.Append(filename1);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7006
		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7007
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7008
	// parse the filenames
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7009
	if(!fullFileName.Set(filename, &KDefault, NULL))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7010
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7011
		RFs fs;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7012
		User::LeaveIfError(fs.Connect());
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7013
		RFile file;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7014
		User::LeaveIfError(file.Open(fs,filename1,EFileRead));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7015
		file.Close();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7016
		fs.Close();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7017
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7018
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7019
	return CTestMmfAclntStep::DoTestStepPreambleL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7020
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7021
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7022
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7023
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7024
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7025
TVerdict CTestMmfAclntRecNoRecord::DoTestStepL()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7026
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7027
	TVerdict testStatus = EPass;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7028
	TInt trapRet = KErrNone;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7029
	TInt ret = KErrNone;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7030
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7031
	const TInt durError = 2500; //As best as could be read from Goldwave
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7032
	const TInt posError = 250;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7033
	const TInt MainTst_KDur = 8359100; //MainTst.wav = 8.3591 sec from GoldWave
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7034
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7035
	iRecorder = CMdaAudioRecorderUtilityLC();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7036
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7037
	if(!iRecorder)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7038
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7039
		testStatus = EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7040
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7041
		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7042
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7043
	//Should always work, must be done before play or record to ensure in EPrimed state
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7044
	if(testStatus == EPass)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7045
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7046
		TRAP(trapRet,iRecorder->SetPriority(EMdaPriorityMin,EMdaPriorityPreferenceNone));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7047
		if(trapRet != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7048
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7049
			INFO_PRINTF2(_L("SetPriority leave with error %d"),trapRet);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7050
			testStatus = EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7051
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7052
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7053
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7054
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7055
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7056
	if(testStatus == EPass)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7057
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7058
		iError = KErrTimedOut;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7059
		iRecorder->PlayL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7060
		INFO_PRINTF1( _L("Record CMdaAudioRecorderUtility"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7061
		CActiveScheduler::Start(); // open -> record
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7062
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7063
		testStatus =  PlaySuccessfull();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7064
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7065
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7066
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7067
	//Can't detect difference in these interfaces
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7068
	//void ClearPlayWindow();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7069
	//void SetRepeats(....);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7070
	//void Pause();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7071
	//void SetMaxWriteLength(TInt aMaxWriteLength /*= KMdaClipLocationMaxWriteLengthNone*/);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7072
	//void SetVolume(TInt aVolume);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7073
	//void SetVolumeRamp(const TTimeIntervalMicroSeconds& aRampDuration);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7074
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7075
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7076
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7077
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7078
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7079
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7080
	//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7081
	//These interfaces should always WORK if there is a record or playback controller
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7082
	//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7083
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7084
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7085
	//if no rec controller, report playback duration.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7086
	if(testStatus == EPass)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7087
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7088
		TTimeIntervalMicroSeconds duration = iRecorder->Duration();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7089
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7090
		if((duration.Int64() > MainTst_KDur + durError) ||
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7091
		   (duration.Int64() < MainTst_KDur - durError))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7092
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7093
			INFO_PRINTF1(_L("Duration fail"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7094
			testStatus = EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7095
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7096
		}	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7097
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7098
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7099
	//returns rec values if rec controller, else playback values
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7100
	if(testStatus == EPass)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7101
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7102
		TTimeIntervalMicroSeconds setPosn(KTwoSeconds);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7103
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7104
		iRecorder->SetPosition(setPosn);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7105
		TTimeIntervalMicroSeconds getPosn = iRecorder->Position();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7106
		INFO_PRINTF3(_L("got position %d should be %d"),I64LOW(getPosn.Int64()), KTwoSeconds);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7107
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7108
		if((getPosn.Int64() > KTwoSeconds+posError) ||
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7109
		   (getPosn.Int64() < KTwoSeconds-posError)) 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7110
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7111
			INFO_PRINTF1(_L("Position fail"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7112
			testStatus = EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7113
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7114
		}	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7115
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7116
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7117
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7118
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7119
	//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7120
	//These interfaces should FAIL if there is a playback controller, but no record controller
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7121
	//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7122
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7123
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7124
	if(testStatus == EPass)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7125
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7126
		TInt gain;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7127
		iRecorder->SetGain(1);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7128
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7129
		ret = iRecorder->GetGain(gain);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7130
		if(ret != KErrNotSupported)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7131
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7132
			INFO_PRINTF1(_L("Gain fail"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7133
			testStatus = EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7134
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7135
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7136
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7137
	if(testStatus == EPass)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7138
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7139
		TTimeIntervalMicroSeconds setPosn(KTwoSeconds);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7140
		iRecorder->SetPosition(setPosn);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7141
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7142
		TRAP(trapRet, iRecorder->CropFromBeginningL());
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7143
		if(trapRet != KErrNotSupported)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7144
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7145
			INFO_PRINTF1(_L("Crop fail"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7146
			testStatus = EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7147
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7148
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7149
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7150
	if(testStatus == EPass)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7151
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7152
		TTimeIntervalMicroSeconds zero(0);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7153
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7154
		TTimeIntervalMicroSeconds recTimeAvail = iRecorder->RecordTimeAvailable();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7155
		if(recTimeAvail != zero)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7156
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7157
			INFO_PRINTF1(_L("RecordTimeAvailable fail"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7158
			testStatus = EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7159
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7160
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7161
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7162
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7163
	if(testStatus == EPass)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7164
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7165
		TInt bal = KMMFBalanceMaxRight;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7166
		ret = iRecorder->SetRecordBalance(KMMFBalanceMaxLeft);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7167
		if(ret != KErrNotSupported)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7168
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7169
			INFO_PRINTF1(_L("SetRecordBalance test failed"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7170
			testStatus = EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7171
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7172
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7173
		ret = iRecorder->GetRecordBalance(bal);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7174
		if(ret != KErrNotSupported)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7175
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7176
			INFO_PRINTF1(_L("GetRecordBalance test failed"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7177
			testStatus = EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7178
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7179
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7180
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7181
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7182
	//Haven't got a format that supports these - trace into code.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7183
	/*
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7184
	if(testStatus == EPass)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7185
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7186
		TInt metaEntries;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7187
		CMMFMetaDataEntry* metaEntry = NULL;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7188
		CMMFMetaDataEntry* newMetaEntry = CMMFMetaDataEntry::NewL(_L("dummy meta"), _L("dummy val"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7189
		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7190
		iRecorder->GetNumberOfMetaDataEntries(metaEntries);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7191
		TRAP(trapRet, metaEntry = iRecorder->GetMetaDataEntryL(1));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7192
		TRAP(trapRet, iRecorder->AddMetaDataEntryL(*newMetaEntry));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7193
		TRAP(trapRet, iRecorder->ReplaceMetaDataEntryL(1, *newMetaEntry));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7194
		iRecorder->RemoveMetaDataEntry(1);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7195
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7196
	*/
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7197
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7198
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7199
	if(testStatus == EPass)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7200
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7201
		RArray<TFourCC> codecs;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7202
		TRAP(trapRet, iRecorder->GetSupportedDestinationDataTypesL(codecs));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7203
		if(trapRet != KErrNotSupported)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7204
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7205
			INFO_PRINTF1(_L("GetSupportedDestinationDataTypesL test failed"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7206
			testStatus = EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7207
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7208
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7209
		TFourCC dataType;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7210
		TRAP(trapRet, iRecorder->SetDestinationDataTypeL(dataType));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7211
		if(trapRet != KErrNotSupported)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7212
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7213
			INFO_PRINTF1(_L("SetDestinationDataTypeL test failed"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7214
			testStatus = EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7215
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7216
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7217
		TRAP(trapRet, dataType = iRecorder->DestinationDataTypeL());
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7218
		if(trapRet != KErrNotSupported)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7219
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7220
			INFO_PRINTF1(_L("DestinationDataTypeL test failed"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7221
			testStatus = EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7222
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7223
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7224
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7225
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7226
	//These methods are not available for our formats and will therefore always fail - trace into code.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7227
	/*
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7228
	if(testStatus == EPass)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7229
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7230
		RArray<TUint> bitRates;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7231
		TUint bitRate = 0;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7232
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7233
		TRAP(trapRet, iRecorder->GetSupportedBitRatesL(bitRates));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7234
		if((trapRet == KErrNone) && (bitRates.Count() >0))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7235
			TRAP(trapRet, iRecorder->SetDestinationBitRateL(bitRates[0]));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7236
		if((trapRet == KErrNone) && (bitRates.Count() >0))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7237
			TRAP(trapRet, bitRate = iRecorder->DestinationBitRateL());
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7238
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7239
		if((trapRet != KErrNone) || (bitRate != bitRates[0]))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7240
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7241
			INFO_PRINTF1(_L("BitRates fail"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7242
			testStatus = EFail; 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7243
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7244
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7245
	*/
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7246
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7247
	if(testStatus == EPass)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7248
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7249
		RArray<TUint> sampleRates;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7250
		TUint sampleRate = 0;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7251
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7252
		TRAP(trapRet, iRecorder->GetSupportedSampleRatesL(sampleRates));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7253
		if(trapRet != KErrNotSupported)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7254
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7255
			INFO_PRINTF1(_L("GetSupportedSampleRatesL test failed"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7256
			testStatus = EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7257
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7258
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7259
		sampleRate = 8000;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7260
		TRAP(trapRet, iRecorder->SetDestinationSampleRateL(sampleRate));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7261
		if(trapRet != KErrNotSupported)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7262
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7263
			INFO_PRINTF1(_L("SetDestinationSampleRateL test failed"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7264
			testStatus = EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7265
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7266
		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7267
		TRAP(trapRet, sampleRate = iRecorder->DestinationSampleRateL());
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7268
		if(trapRet != KErrNotSupported)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7269
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7270
			INFO_PRINTF1(_L("DestinationSampleRateL test failed"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7271
			testStatus = EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7272
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7273
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7274
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7275
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7276
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7277
	if(testStatus == EPass)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7278
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7279
		RArray<TUint> channels;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7280
		TUint channel = 0;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7281
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7282
		TRAP(trapRet, iRecorder->GetSupportedNumberOfChannelsL(channels));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7283
		if(trapRet != KErrNotSupported)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7284
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7285
			INFO_PRINTF1(_L("GetSupportedNumberOfChannelsL test failed"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7286
			testStatus = EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7287
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7288
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7289
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7290
		TRAP(trapRet, iRecorder->SetDestinationNumberOfChannelsL(1));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7291
		if(trapRet != KErrNotSupported)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7292
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7293
			INFO_PRINTF1(_L("SetDestinationNumberOfChannelsL test failed"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7294
			testStatus = EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7295
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7296
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7297
		TRAP(trapRet, channel=iRecorder->DestinationNumberOfChannelsL());
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7298
		if(trapRet != KErrNotSupported)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7299
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7300
			INFO_PRINTF2(_L("DestinationNumberOfChannelsL test failed with channel %d"), channel);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7301
			testStatus = EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7302
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7303
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7304
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7305
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7306
	if(testStatus == EPass)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7307
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7308
		TUid currentFormat = KNullUid;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7309
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7310
		TRAP(trapRet, currentFormat = iRecorder->DestinationFormatL());
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7311
		if(trapRet != KErrNotSupported)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7312
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7313
			INFO_PRINTF1(_L("DestinationFormatL test failed"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7314
			testStatus = EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7315
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7316
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7317
		//NB: Can't do this test here, as it causes seg violation - trace into code
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7318
		/*
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7319
		TUid newFormat = {KMmfUidFormatRAWWrite};
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7320
		if(trapRet == KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7321
			TRAP(trapRet, iRecorder->SetDestinationFormatL(newFormat));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7322
		if(trapRet == KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7323
			TRAP(trapRet, iRecorder->SetDestinationFormatL(currentFormat));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7324
		*/
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7325
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7326
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7327
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7328
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7329
	if(testStatus == EPass)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7330
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7331
		TMMFMessageDestinationPckg dummyPckg;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7332
		TInt dummyFunc = 100;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7333
		TBuf8<8> dummyBuff;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7334
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7335
		ret = iRecorder->RecordControllerCustomCommandSync(dummyPckg, dummyFunc, dummyBuff, dummyBuff, dummyBuff);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7336
		if(ret != KErrNotSupported)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7337
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7338
			INFO_PRINTF1(_L("RecordControllerCustomCommandSync - 1 fail"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7339
			testStatus = EFail; 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7340
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7341
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7342
		ret = iRecorder->RecordControllerCustomCommandSync(dummyPckg, dummyFunc, dummyBuff, dummyBuff);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7343
		if(ret != KErrNotSupported)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7344
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7345
			INFO_PRINTF1(_L("RecordControllerCustomCommandSync -2 fail"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7346
			testStatus = EFail; 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7347
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7348
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7349
		CTestMmfAclntAOCallback* aoCallback =  new CTestMmfAclntAOCallback(this);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7350
		CleanupStack::PushL(aoCallback);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7351
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7352
		aoCallback->PublicSetActive();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7353
		iRecorder->RecordControllerCustomCommandAsync(dummyPckg, dummyFunc, dummyBuff, dummyBuff, dummyBuff, aoCallback->iStatus);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7354
		CActiveScheduler::Start();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7355
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7356
		if(iError != KErrNotSupported)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7357
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7358
			INFO_PRINTF1(_L("RecordControllerCustomCommandAsync -1 fail"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7359
			testStatus = EFail; 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7360
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7361
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7362
		aoCallback->PublicSetActive();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7363
		iRecorder->RecordControllerCustomCommandAsync(dummyPckg, dummyFunc, dummyBuff, dummyBuff, aoCallback->iStatus);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7364
		CActiveScheduler::Start();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7365
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7366
		if(iError != KErrNotSupported)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7367
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7368
			INFO_PRINTF1(_L("RecordControllerCustomCommandAsync -2 fail"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7369
			testStatus = EFail; 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7370
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7371
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7372
		CleanupStack::Pop(aoCallback);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7373
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7374
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7375
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7376
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7377
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7378
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7379
	//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7380
	//These interfaces should PASS if there is a playback controller, but no record controller
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7381
	//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7382
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7383
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7384
	if(testStatus == EPass)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7385
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7386
		const TUint KPlayError = 500000; //1/2 second in play duration
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7387
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7388
		TTimeIntervalMicroSeconds duration = iRecorder->Duration();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7389
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7390
		iRecorder->SetPlayWindow(duration.Int64()/2, duration);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7391
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7392
		iError = KErrTimedOut;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7393
		iRecorder->PlayL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7394
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7395
		TTime startTime; startTime.UniversalTime();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7396
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7397
		CActiveScheduler::Start();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7398
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7399
		TTime endTime; endTime.UniversalTime();		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7400
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7401
		TInt64 playTime = endTime.Int64() - startTime.Int64();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7402
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7403
		INFO_PRINTF3(_L("Expected to play for %d Usec, played for %d Usec"), I64LOW(duration.Int64()/2), I64LOW(playTime));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7404
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7405
		if((I64LOW(playTime) > I64LOW(duration.Int64()/2 + KPlayError)) ||
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7406
		   (I64LOW(playTime) < I64LOW(duration.Int64()/2 - KPlayError)))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7407
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7408
			INFO_PRINTF1(_L("SetPlayWindow fail"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7409
			testStatus = EFail; 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7410
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7411
		else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7412
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7413
			testStatus =  PlaySuccessfull();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7414
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7415
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7416
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7417
	if(testStatus == EPass)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7418
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7419
		TInt maxVol = iRecorder->MaxVolume();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7420
		if(maxVol > 0)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7421
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7422
			iRecorder->SetVolume(maxVol/2);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7423
			TInt vol;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7424
			ret = iRecorder->GetVolume(vol);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7425
			if((ret != KErrNone) || (vol != maxVol/2))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7426
				{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7427
				INFO_PRINTF1(_L("GetVolume fail"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7428
				testStatus = EFail; 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7429
				}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7430
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7431
		else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7432
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7433
			INFO_PRINTF1(_L("MaxVolume fail"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7434
			testStatus = EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7435
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7436
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7437
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7438
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7439
	if(testStatus == EPass)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7440
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7441
		TInt bal;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7442
		TInt ret = iRecorder->SetPlaybackBalance(KMMFBalanceMaxRight);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7443
		if(ret == KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7444
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7445
			ret = iRecorder->GetPlaybackBalance(bal);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7446
			if((ret != KErrNone) || (bal != KMMFBalanceMaxRight))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7447
				{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7448
				INFO_PRINTF1(_L("GetPlaybackBalance fail"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7449
				testStatus = EFail; 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7450
				}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7451
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7452
		else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7453
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7454
			INFO_PRINTF1(_L("SetPlaybackBalance fail"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7455
			testStatus = EFail; 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7456
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7457
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7458
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7459
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7460
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7461
//  These would pass when a playback controller is present, also need test controller
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7462
//	TInt PlayControllerCustomCommandSync(const TMMFMessageDestinationPckg& aDestination, TInt aFunction, const TDesC8& aDataTo1, const TDesC8& aDataTo2, TDes8& aDataFrom);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7463
//	TInt PlayControllerCustomCommandSync(const TMMFMessageDestinationPckg& aDestination, TInt aFunction, const TDesC8& aDataTo1, const TDesC8& aDataTo2);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7464
//	void PlayControllerCustomCommandAsync(const TMMFMessageDestinationPckg& aDestination, TInt aFunction, const TDesC8& aDataTo1, const TDesC8& aDataTo2, TDes8& aDataFrom, TRequestStatus& aStatus);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7465
//	void PlayControllerCustomCommandAsync(const TMMFMessageDestinationPckg& aDestination, TInt aFunction, const TDesC8& aDataTo1, const TDesC8& aDataTo2, TRequestStatus& aStatus);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7466
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7467
	CleanupStack::PopAndDestroy(iRecorder);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7468
	User::After(KOneSecond);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7469
	return	testStatus;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7470
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7471
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7472
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7473
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7474
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7475
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7476
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7477
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7478
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7479
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7480
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7481
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7482
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7483
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7484
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7485
//------------------------------------------------------------------
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7486
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7487
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7488
 * Constructor
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7489
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7490
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7491
CTestMmfAclntRecNoRecordForceFormat::CTestMmfAclntRecNoRecordForceFormat(const TDesC& aTestName, const TDesC& aSectName,const TDesC& aKeyName, const TMdaClipFormat& aFormat)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7492
: CTestMmfAclntRecNoRecord(aTestName, aSectName, aKeyName)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7493
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7494
	iFormat = aFormat;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7495
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7496
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7497
CTestMmfAclntRecNoRecordForceFormat* CTestMmfAclntRecNoRecordForceFormat::NewL(const TDesC& aTestName, const TDesC& aSectName,const TDesC& aKeyName, const TMdaClipFormat& aFormat)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7498
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7499
	CTestMmfAclntRecNoRecordForceFormat* self = new (ELeave) CTestMmfAclntRecNoRecordForceFormat(aTestName,aSectName,aKeyName,aFormat);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7500
	return self;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7501
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7502
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7503
CTestMmfAclntRecNoRecordForceFormat* CTestMmfAclntRecNoRecordForceFormat::NewLC(const TDesC& aTestName, const TDesC& aSectName,const TDesC& aKeyName, const TMdaClipFormat& aFormat)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7504
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7505
	CTestMmfAclntRecNoRecordForceFormat* self = CTestMmfAclntRecNoRecordForceFormat::NewLC(aTestName,aSectName,aKeyName,aFormat);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7506
	CleanupStack::PushL(self);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7507
	return self;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7508
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7509
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7510
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7511
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7512
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7513
CMdaAudioRecorderUtility* CTestMmfAclntRecNoRecordForceFormat::CMdaAudioRecorderUtilityLC()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7514
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7515
	if(!GetStringFromConfig(iSectName, iKeyName, iFilename))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7516
		return NULL;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7517
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7518
	CMdaAudioRecorderUtility* recUtil = CMdaAudioRecorderUtility::NewL(*this);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7519
	CleanupStack::PushL(recUtil);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7520
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7521
	TMdaFileClipLocation location(iFilename);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7522
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7523
	recUtil->OpenL(&location,&iFormat);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7524
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7525
	INFO_PRINTF1( _L("Initialise CMdaAudioRecorderUtility"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7526
	CActiveScheduler::Start();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7527
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7528
	if(iError != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7529
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7530
		CleanupStack::PopAndDestroy(recUtil);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7531
		recUtil = NULL;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7532
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7533
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7534
	return	recUtil;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7535
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7536
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7537
TVerdict CTestMmfAclntRecNoRecordForceFormat::PlaySuccessfull()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7538
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7539
	TVerdict testStatus = EPass;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7540
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7541
	if(iError != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7542
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7543
		testStatus = EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7544
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7545
		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7546
	return testStatus;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7547
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7548
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7549
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7550
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7551
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7552
CTestMmfAclntRecNoRecordForceFormatDesc* CTestMmfAclntRecNoRecordForceFormatDesc::NewL(const TDesC& aTestName, const TDesC& aSectName,const TDesC& aKeyName, const TMdaClipFormat& aFormat)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7553
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7554
	CTestMmfAclntRecNoRecordForceFormatDesc* self = new (ELeave) CTestMmfAclntRecNoRecordForceFormatDesc(aTestName,aSectName,aKeyName,aFormat);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7555
	return self;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7556
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7557
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7558
CTestMmfAclntRecNoRecordForceFormatDesc* CTestMmfAclntRecNoRecordForceFormatDesc::NewLC(const TDesC& aTestName, const TDesC& aSectName,const TDesC& aKeyName, const TMdaClipFormat& aFormat)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7559
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7560
	CTestMmfAclntRecNoRecordForceFormatDesc* self = CTestMmfAclntRecNoRecordForceFormatDesc::NewLC(aTestName,aSectName,aKeyName,aFormat);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7561
	CleanupStack::PushL(self);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7562
	return self;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7563
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7564
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7565
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7566
CMdaAudioRecorderUtility* CTestMmfAclntRecNoRecordForceFormatDesc::CMdaAudioRecorderUtilityLC()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7567
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7568
	if(!GetStringFromConfig(iSectName, iKeyName, iFilename))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7569
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7570
		User::Leave(KErrNotFound);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7571
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7572
		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7573
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7574
	CMdaAudioRecorderUtility* recUtil = CMdaAudioRecorderUtility::NewL(*this);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7575
	CleanupStack::PushL(recUtil);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7576
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7577
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7578
	RFs fs;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7579
	RFile file;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7580
	TInt size = 0;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7581
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7582
	User::LeaveIfError(fs.Connect());
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7583
	User::LeaveIfError(file.Open(fs,iFilename,EFileRead));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7584
	CleanupClosePushL(file);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7585
	User::LeaveIfError(file.Size(size));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7586
		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7587
	if(size == 0)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7588
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7589
		User::Leave(KErrNotFound);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7590
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7591
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7592
	HBufC8* iBuf = HBufC8::NewL( size );
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7593
	CleanupStack::PushL(iBuf);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7594
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7595
	iFileDesc = new (ELeave) TPtr8( NULL, 0 );
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7596
	CleanupStack::PushL(iFileDesc);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7597
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7598
	iFileDesc->Set( iBuf->Des());
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7599
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7600
	if(file.Read(*iFileDesc) != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7601
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7602
		User::Leave(KErrNotFound);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7603
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7604
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7605
	TMdaDesClipLocation location(*iFileDesc);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7606
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7607
	recUtil->OpenL(&location,&iFormat);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7608
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7609
	INFO_PRINTF1( _L("Initialise CMdaAudioRecorderUtility"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7610
	CActiveScheduler::Start();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7611
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7612
	if(iError != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7613
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7614
		User::Leave(KErrNotFound);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7615
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7616
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7617
	CleanupStack::Pop(iFileDesc);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7618
	CleanupStack::Pop(iBuf);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7619
	CleanupStack::PopAndDestroy(&file);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7620
	return	recUtil;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7621
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7622
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7623
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7624
TVerdict CTestMmfAclntRecNoRecordForceFormatDesc::PlaySuccessfull()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7625
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7626
	TVerdict testStatus = EPass;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7627
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7628
	if(iError != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7629
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7630
		testStatus = EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7631
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7632
		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7633
	return testStatus;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7634
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7635
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7636
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7637
//------------------------------------------------------------------
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7638
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7639
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7640
CTestMmfAclntRecNoRecordFile* CTestMmfAclntRecNoRecordFile::NewL(const TDesC& aTestName, const TDesC& aSectName,const TDesC& aKeyName)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7641
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7642
	CTestMmfAclntRecNoRecordFile* self = new (ELeave) CTestMmfAclntRecNoRecordFile(aTestName,aSectName,aKeyName);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7643
	return self;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7644
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7645
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7646
CTestMmfAclntRecNoRecordFile* CTestMmfAclntRecNoRecordFile::NewLC(const TDesC& aTestName, const TDesC& aSectName,const TDesC& aKeyName)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7647
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7648
	CTestMmfAclntRecNoRecordFile* self = CTestMmfAclntRecNoRecordFile::NewLC(aTestName,aSectName,aKeyName);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7649
	CleanupStack::PushL(self);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7650
	return self;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7651
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7652
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7653
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7654
CMdaAudioRecorderUtility* CTestMmfAclntRecNoRecordFile::CMdaAudioRecorderUtilityLC()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7655
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7656
	INFO_PRINTF1( _L("Create CMdaAudioRecorderUtility with a file"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7657
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7658
	if(!GetStringFromConfig(iSectName, iKeyName, iFilename))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7659
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7660
		return NULL;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7661
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7662
		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7663
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7664
	CMdaAudioRecorderUtility* recUtil = CMdaAudioRecorderUtility::NewL(*this);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7665
	CleanupStack::PushL(recUtil);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7666
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7667
	recUtil->OpenFileL(iFilename);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7668
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7669
	INFO_PRINTF1( _L("Initialise CMdaAudioRecorderUtility"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7670
	CActiveScheduler::Start();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7671
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7672
	if(iError != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7673
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7674
		CleanupStack::PopAndDestroy(recUtil);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7675
		recUtil = NULL;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7676
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7677
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7678
	return	recUtil;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7679
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7680
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7681
TVerdict CTestMmfAclntRecNoRecordFile::PlaySuccessfull()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7682
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7683
	TVerdict testStatus = EPass;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7684
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7685
	if(iError != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7686
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7687
		testStatus = EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7688
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7689
		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7690
	return testStatus;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7691
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7692
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7693
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7694
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7695
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7696
CTestMmfAclntRecNoRecordDesc* CTestMmfAclntRecNoRecordDesc::NewL(const TDesC& aTestName, const TDesC& aSectName,const TDesC& aKeyName)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7697
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7698
	CTestMmfAclntRecNoRecordDesc* self = new (ELeave) CTestMmfAclntRecNoRecordDesc(aTestName,aSectName,aKeyName);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7699
	return self;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7700
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7701
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7702
CTestMmfAclntRecNoRecordDesc* CTestMmfAclntRecNoRecordDesc::NewLC(const TDesC& aTestName, const TDesC& aSectName,const TDesC& aKeyName)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7703
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7704
	CTestMmfAclntRecNoRecordDesc* self = CTestMmfAclntRecNoRecordDesc::NewLC(aTestName,aSectName,aKeyName);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7705
	CleanupStack::PushL(self);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7706
	return self;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7707
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7708
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7709
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7710
CMdaAudioRecorderUtility* CTestMmfAclntRecNoRecordDesc::CMdaAudioRecorderUtilityLC()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7711
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7712
	INFO_PRINTF1( _L("Create CMdaAudioRecorderUtility with a descriptor"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7713
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7714
	if(!GetStringFromConfig(iSectName, iKeyName, iFilename))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7715
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7716
		User::Leave(KErrNotFound);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7717
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7718
		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7719
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7720
	CMdaAudioRecorderUtility* recUtil = CMdaAudioRecorderUtility::NewL(*this);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7721
	CleanupStack::PushL(recUtil);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7722
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7723
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7724
	RFs fs;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7725
	RFile file;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7726
	User::LeaveIfError(fs.Connect());
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7727
	User::LeaveIfError(file.Open(fs,iFilename,EFileRead));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7728
	CleanupClosePushL(file);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7729
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7730
	TInt size;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7731
	User::LeaveIfError(file.Size(size));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7732
		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7733
	if(size == 0)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7734
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7735
		User::Leave(KErrNotFound);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7736
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7737
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7738
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7739
	HBufC8* iBuf = HBufC8::NewL( size );
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7740
	CleanupStack::PushL(iBuf);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7741
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7742
	iFileDesc = new (ELeave) TPtr8( NULL, 0 );
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7743
	CleanupStack::PushL(iFileDesc);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7744
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7745
	iFileDesc->Set( iBuf->Des());
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7746
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7747
	if(file.Read(*iFileDesc) != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7748
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7749
		User::Leave(KErrNotFound);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7750
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7751
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7752
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7753
	recUtil->OpenDesL(*iFileDesc);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7754
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7755
	INFO_PRINTF1( _L("Initialise CMdaAudioRecorderUtility"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7756
	CActiveScheduler::Start();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7757
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7758
	if(iError != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7759
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7760
		User::Leave(KErrNotFound);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7761
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7762
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7763
	CleanupStack::Pop(iFileDesc);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7764
	CleanupStack::Pop(iBuf);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7765
	CleanupStack::PopAndDestroy(&file);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7766
	return	recUtil;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7767
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7768
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7769
TVerdict CTestMmfAclntRecNoRecordDesc::PlaySuccessfull()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7770
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7771
	TVerdict testStatus = EPass;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7772
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7773
	if(iError != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7774
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7775
		testStatus = EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7776
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7777
		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7778
	return testStatus;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7779
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7780
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7781
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7782
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7783
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7784
CTestMmfAclntRecNoRecordFileForceController* CTestMmfAclntRecNoRecordFileForceController::NewL(const TDesC& aTestName, const TDesC& aSectName,const TDesC& aKeyName, const TUid aController)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7785
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7786
	CTestMmfAclntRecNoRecordFileForceController* self = new (ELeave) CTestMmfAclntRecNoRecordFileForceController(aTestName,aSectName,aKeyName, aController);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7787
	return self;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7788
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7789
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7790
CTestMmfAclntRecNoRecordFileForceController* CTestMmfAclntRecNoRecordFileForceController::NewLC(const TDesC& aTestName, const TDesC& aSectName,const TDesC& aKeyName, const TUid aController)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7791
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7792
	CTestMmfAclntRecNoRecordFileForceController* self = CTestMmfAclntRecNoRecordFileForceController::NewLC(aTestName,aSectName,aKeyName,aController);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7793
	CleanupStack::PushL(self);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7794
	return self;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7795
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7796
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7797
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7798
CMdaAudioRecorderUtility* CTestMmfAclntRecNoRecordFileForceController::CMdaAudioRecorderUtilityLC()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7799
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7800
	INFO_PRINTF1( _L("Create CMdaAudioRecorderUtility with a file, forcing record controller"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7801
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7802
	if(!GetStringFromConfig(iSectName, iKeyName, iFilename))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7803
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7804
		return NULL;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7805
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7806
		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7807
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7808
	CMdaAudioRecorderUtility* recUtil = CMdaAudioRecorderUtility::NewL(*this);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7809
	CleanupStack::PushL(recUtil);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7810
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7811
	recUtil->OpenFileL(iFilename, KNullUid, iController);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7812
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7813
	INFO_PRINTF1( _L("Initialise CMdaAudioRecorderUtility"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7814
	CActiveScheduler::Start();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7815
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7816
	if(iError != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7817
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7818
		CleanupStack::PopAndDestroy(recUtil);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7819
		recUtil = NULL;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7820
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7821
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7822
	return	recUtil;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7823
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7824
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7825
TVerdict CTestMmfAclntRecNoRecordFileForceController::PlaySuccessfull()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7826
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7827
	TVerdict testStatus = EPass;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7828
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7829
	if(iError != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7830
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7831
		testStatus = EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7832
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7833
		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7834
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7835
	return testStatus;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7836
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7837
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7838
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7839
CTestMmfAclntRecNoRecordDescForceController* CTestMmfAclntRecNoRecordDescForceController::NewL(const TDesC& aTestName, const TDesC& aSectName,const TDesC& aKeyName, const TUid aController)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7840
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7841
	CTestMmfAclntRecNoRecordDescForceController* self = new (ELeave) CTestMmfAclntRecNoRecordDescForceController(aTestName,aSectName,aKeyName,aController);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7842
	return self;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7843
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7844
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7845
CTestMmfAclntRecNoRecordDescForceController* CTestMmfAclntRecNoRecordDescForceController::NewLC(const TDesC& aTestName, const TDesC& aSectName,const TDesC& aKeyName, const TUid aController)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7846
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7847
	CTestMmfAclntRecNoRecordDescForceController* self = CTestMmfAclntRecNoRecordDescForceController::NewLC(aTestName,aSectName,aKeyName,aController);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7848
	CleanupStack::PushL(self);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7849
	return self;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7850
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7851
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7852
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7853
CMdaAudioRecorderUtility* CTestMmfAclntRecNoRecordDescForceController::CMdaAudioRecorderUtilityLC()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7854
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7855
	INFO_PRINTF1( _L("Create CMdaAudioRecorderUtility with a descriptor, forcing record controller"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7856
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7857
	if(!GetStringFromConfig(iSectName, iKeyName, iFilename))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7858
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7859
		User::Leave(KErrNotFound);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7860
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7861
		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7862
	CMdaAudioRecorderUtility* recUtil = CMdaAudioRecorderUtility::NewL(*this);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7863
	CleanupStack::PushL(recUtil);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7864
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7865
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7866
	RFs fs;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7867
	RFile file;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7868
	User::LeaveIfError(fs.Connect());
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7869
	User::LeaveIfError(file.Open(fs,iFilename,EFileRead));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7870
	CleanupClosePushL(file);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7871
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7872
	TInt size;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7873
	User::LeaveIfError(file.Size(size));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7874
		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7875
	if(size == 0)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7876
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7877
		User::Leave(KErrNotFound);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7878
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7879
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7880
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7881
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7882
	HBufC8* iBuf = HBufC8::NewL( size );
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7883
	CleanupStack::PushL(iBuf);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7884
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7885
	iFileDesc = new (ELeave) TPtr8( NULL, 0 );
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7886
	CleanupStack::PushL(iFileDesc);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7887
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7888
	iFileDesc->Set( iBuf->Des());
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7889
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7890
	if(file.Read(*iFileDesc) != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7891
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7892
		User::Leave(KErrNotFound);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7893
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7894
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7895
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7896
	recUtil->OpenDesL(*iFileDesc, KNullUid, iController);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7897
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7898
	INFO_PRINTF1( _L("Initialise CMdaAudioRecorderUtility"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7899
	CActiveScheduler::Start();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7900
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7901
	if(iError != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7902
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7903
		User::Leave(KErrNotFound);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7904
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7905
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7906
	CleanupStack::Pop(iFileDesc);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7907
	CleanupStack::Pop(iBuf);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7908
	CleanupStack::PopAndDestroy(&file);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7909
	return	recUtil;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7910
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7911
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7912
TVerdict CTestMmfAclntRecNoRecordDescForceController::PlaySuccessfull()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7913
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7914
	TVerdict testStatus = EPass;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7915
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7916
	if(iError != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7917
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7918
		testStatus = EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7919
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7920
		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7921
	return testStatus;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7922
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7923
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7924
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7925
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7926
//------------------------------------------------------------------
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7927
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7928
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7929
 * Constructor
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7930
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7931
CTestMmfAclntRecFileAppend::CTestMmfAclntRecFileAppend(const TDesC& aTestName, const TDesC& aSectName,const TDesC& aKeyName, TFormatType aFormatType, TCodecType aCodecType, TBool aDiffSampleRate)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7932
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7933
	// store the name of this test case
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7934
	// this is the name that is used by the script file
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7935
	// Each test step initialises it's own name
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7936
	iTestStepName = aTestName;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7937
	iSectName = aSectName;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7938
	iKeyName = aKeyName;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7939
	iFormatType = aFormatType;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7940
	iCodecType = aCodecType;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7941
	iDiffSampleRate = aDiffSampleRate;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7942
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7943
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7944
CTestMmfAclntRecFileAppend* CTestMmfAclntRecFileAppend::NewL(const TDesC& aTestName, const TDesC& aSectName,const TDesC& aKeyName, TFormatType aFormatType, TCodecType aCodecType, TBool aDiffSampleRate)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7945
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7946
	CTestMmfAclntRecFileAppend* self = new (ELeave) CTestMmfAclntRecFileAppend(aTestName, aSectName, aKeyName, aFormatType, aCodecType, aDiffSampleRate);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7947
	return self;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7948
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7949
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7950
void CTestMmfAclntRecFileAppend::MoscoStateChangeEvent(CBase* /*aObject*/, TInt /*aPreviousState*/, TInt aCurrentState, TInt aErrorCode)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7951
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7952
	iError = aErrorCode;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7953
	iCurrentState = aCurrentState;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7954
	INFO_PRINTF3( _L("MoscoStateChangeEvent: aCurrentState = %d, iError %d "), iCurrentState, iError);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7955
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7956
	CActiveScheduler::Stop();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7957
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7958
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7959
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7960
TVerdict CTestMmfAclntRecFileAppend::DoTestStepPreambleL()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7961
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7962
	TVerdict ret = EPass;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7963
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7964
	// Make sure file doesn't exist (maybe from a previous test)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7965
	TParse fullFileName;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7966
	TBuf<KSizeBuf>	filename;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7967
	TPtrC			filename1; 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7968
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7969
	if(!GetStringFromConfig(iSectName, iKeyName, filename1))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7970
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7971
		return EInconclusive;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7972
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7973
		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7974
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7975
	GetDriveName(filename);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7976
	filename.Append(filename1);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7977
		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7978
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7979
	// parse the filenames
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7980
	if(!fullFileName.Set(filename, &KDefault, NULL))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7981
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7982
		RFs fs;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7983
		User::LeaveIfError(fs.Connect());
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7984
		fs.SetAtt(fullFileName.FullName(), 0, KEntryAttReadOnly); 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7985
		TInt error = fs.Delete(fullFileName.FullName());
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7986
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7987
		if(error == KErrPathNotFound)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7988
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7989
			error = fs.MkDirAll(fullFileName.DriveAndPath());
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7990
			INFO_PRINTF2(_L("Path for file %S was been created"), &fullFileName.FullName());	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7991
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7992
		else  if(error == KErrNotFound)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7993
			INFO_PRINTF2(_L("No need to delete %S"), &fullFileName.FullName());	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7994
		else if(error==KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7995
			INFO_PRINTF2(_L("Deleted %S"), &fullFileName.FullName());	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7996
		else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7997
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7998
			ret = EInconclusive;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7999
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8000
		fs.Close();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8001
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8002
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8003
	if((ret == EInconclusive) || (ret == EFail))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8004
		return ret;	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8005
	return CTestMmfAclntStep::DoTestStepPreambleL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8006
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8007
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8008
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8009
const TInt KSeventyFive = 75;	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8010
const TInt KTwentyFive = 25;	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8011
const TInt KOneHundred = 100;	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8012
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8013
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8014
 * Open a file based clip and record, stop & then record again
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8015
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8016
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8017
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8018
TVerdict CTestMmfAclntRecFileAppend::DoTestStepL()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8019
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8020
	INFO_PRINTF1( _L("TestRecorder : Record File"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8021
	TVerdict ret = EPass;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8022
	iError = KErrGeneral;	// set error to ensure callback takes place
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8023
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8024
	TInt size1 = 0;		// size of file after first record
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8025
	TInt size2 = 0;		// size of file after append
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8026
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8027
	TPtrC filename; 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8028
	if(!GetStringFromConfig(iSectName, iKeyName, filename))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8029
		return EInconclusive;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8030
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8031
	CMdaAudioRecorderUtility* recUtil = CMdaAudioRecorderUtility::NewL(*this);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8032
	CleanupStack::PushL(recUtil);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8033
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8034
	TMdaFileClipLocation location(filename);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8035
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8036
	RFs fs;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8037
	fs.Connect();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8038
	fs.Delete(filename);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8039
	fs.Close();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8040
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8041
	for (TInt index=0; index<2; index++)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8042
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8043
		if (index == 0)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8044
			INFO_PRINTF1(_L("Recording to file..."));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8045
		else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8046
			INFO_PRINTF1(_L("Appending to file..."));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8047
		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8048
		TMdaWavClipFormat mdaWavFormat;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8049
		TMdaAuClipFormat mdaAuFormat;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8050
		TMdaClipFormat* format = NULL;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8051
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8052
		TMdaImaAdpcmWavCodec wavImadCodec;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8053
		TMdaPcmWavCodec wav8PcmCodec;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8054
		TMdaPcm8BitAuCodec au8PcmCodec;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8055
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8056
		TMdaPackage* codec = NULL;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8057
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8058
		switch (iFormatType)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8059
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8060
			case EWavFormat:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8061
				format = &mdaWavFormat;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8062
				switch (iCodecType)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8063
					{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8064
					case EAdpcmCodec:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8065
						codec = &wavImadCodec;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8066
						break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8067
					case EPcmCodec:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8068
						codec = &wav8PcmCodec;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8069
						break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8070
					}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8071
				break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8072
			case EAuFormat:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8073
				format = &mdaAuFormat;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8074
				switch (iCodecType)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8075
					{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8076
					case EPcmCodec:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8077
						codec = &au8PcmCodec;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8078
						break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8079
					default:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8080
						break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8081
					}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8082
				break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8083
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8084
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8085
		if (format == NULL || codec == NULL)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8086
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8087
			ret = EInconclusive;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8088
			break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8089
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8090
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8091
		TMdaAudioDataSettings audioSettings;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8092
		audioSettings.iCaps = 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8093
			TMdaAudioDataSettings::ESampleRateFixed | 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8094
			TMdaAudioDataSettings::EChannelsMono |
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8095
			TMdaAudioDataSettings::ESampleRate8000Hz |
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8096
			TMdaAudioDataSettings::ESampleRate11025Hz;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8097
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8098
		audioSettings.iSampleRate = KSampleRate8K;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8099
		audioSettings.iChannels = 1;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8100
		audioSettings.iFlags = TMdaAudioDataSettings::ENoNetworkRouting;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8101
		if (index == 1 && iDiffSampleRate)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8102
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8103
			audioSettings.iSampleRate = KSampleRate11K;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8104
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8105
			
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8106
			
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8107
		recUtil->OpenL(&location, format, codec, &audioSettings);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8108
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8109
		INFO_PRINTF1( _L("Initialise CMdaAudioRecorderUtility"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8110
		CActiveScheduler::Start();	// idle -> open
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8111
		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8112
		if(iError != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8113
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8114
			break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8115
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8116
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8117
		iError = KErrTimedOut;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8118
		recUtil->RecordL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8119
		INFO_PRINTF1( _L("Record CMdaAudioRecorderUtility"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8120
		CActiveScheduler::Start(); // open -> record
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8121
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8122
		User::After(KTwoSeconds);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8123
		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8124
		if (iCurrentState != CMdaAudioClipUtility::ERecording)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8125
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8126
			INFO_PRINTF1( _L("CMdaAudioRecorderUtility is not recording"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8127
			ret = EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8128
			break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8129
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8130
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8131
		recUtil->Stop();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8132
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8133
				
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8134
		if (index == 1)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8135
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8136
			TTimeIntervalMicroSeconds actualDuration;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8137
			TTimeIntervalMicroSeconds expectedDuration(KFourSeconds);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8138
			actualDuration = recUtil->Duration();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8139
			INFO_PRINTF3(_L("Duration recorded file, expected =  %f, actual: %f"),
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8140
				I64REAL(expectedDuration.Int64()), I64REAL(actualDuration.Int64()));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8141
			// allow a deviation of 25%
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8142
			if (actualDuration.Int64() < expectedDuration.Int64() * KSeventyFive / KOneHundred)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8143
				{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8144
				ERR_PRINTF1(_L("Appended duration is too short"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8145
				ret = EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8146
				}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8147
			else if (actualDuration.Int64() > expectedDuration.Int64() * (KOneHundred+KTwentyFive) / KOneHundred)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8148
				{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8149
				ERR_PRINTF1(_L("Appended duration is too long"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8150
				ret = EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8151
				}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8152
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8153
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8154
		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8155
		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8156
		recUtil->Close();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8157
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8158
		if(iError == KErrNone) 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8159
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8160
			RFs fs;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8161
			RFile file;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8162
			TInt size = 0;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8163
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8164
			User::LeaveIfError(fs.Connect());
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8165
			User::LeaveIfError(file.Open(fs,filename,EFileRead));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8166
			CleanupClosePushL(file);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8167
			User::LeaveIfError(file.Size(size));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8168
			INFO_PRINTF2(_L("File size = %d"), size);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8169
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8170
			if(size <= 0)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8171
				{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8172
				ret = EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8173
				}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8174
				
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8175
			CleanupStack::PopAndDestroy(&file);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8176
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8177
			if (index == 0)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8178
				{	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8179
				size1 = size;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8180
				}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8181
				
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8182
			else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8183
				{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8184
				size2 = size;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8185
				}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8186
				
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8187
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8188
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8189
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8190
	if (iError != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8191
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8192
		ret = EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8193
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8194
		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8195
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8196
	// the appended size should be double the original size
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8197
	// but to allow a little deviation, ensure it's at least 1.5 times bigger
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8198
	if (ret == EPass)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8199
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8200
		if (size2 < (size1*(KOneHundred+KSeventyFive)/KOneHundred))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8201
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8202
			ERR_PRINTF1(_L("Appended file size is too short"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8203
			ret = EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8204
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8205
		else if (size2 > (size1*(KOneHundred+KOneHundred+KTwentyFive)/KOneHundred))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8206
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8207
			ERR_PRINTF1(_L("Appended file size is too long"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8208
			ret = EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8209
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8210
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8211
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8212
	ERR_PRINTF2( _L("CMdaAudioRecorderUtility completed with error %d"),iError );
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8213
	CleanupStack::PopAndDestroy(recUtil);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8214
	User::After(KOneSecond);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8215
	return	ret;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8216
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8217
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8218
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8219
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8220
 * Constructor
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8221
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8222
CTestMmfAclntRecFilePlay::CTestMmfAclntRecFilePlay(const TDesC& aTestName, const TDesC& aSectName,const TDesC& aKeyName, TFormatType aFormatType, TCodecType aCodecType)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8223
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8224
	// store the name of this test case
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8225
	// this is the name that is used by the script file
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8226
	// Each test step initialises it's own name
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8227
	iTestStepName = aTestName;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8228
	iSectName = aSectName;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8229
	iKeyName = aKeyName;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8230
	iFormatType = aFormatType;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8231
	iCodecType = aCodecType;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8232
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8233
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8234
CTestMmfAclntRecFilePlay* CTestMmfAclntRecFilePlay::NewL(const TDesC& aTestName, const TDesC& aSectName,const TDesC& aKeyName, TFormatType aFormatType, TCodecType aCodecType)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8235
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8236
	CTestMmfAclntRecFilePlay* self = new (ELeave) CTestMmfAclntRecFilePlay(aTestName, aSectName, aKeyName, aFormatType, aCodecType);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8237
	return self;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8238
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8239
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8240
void CTestMmfAclntRecFilePlay::MoscoStateChangeEvent(CBase* /*aObject*/, TInt /*aPreviousState*/, TInt aCurrentState, TInt aErrorCode)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8241
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8242
	iError = aErrorCode;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8243
	iCurrentState = aCurrentState;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8244
	INFO_PRINTF3( _L("MoscoStateChangeEvent: aCurrentState = %d, iError %d "), iCurrentState, iError);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8245
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8246
	CActiveScheduler::Stop();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8247
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8248
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8249
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8250
TVerdict CTestMmfAclntRecFilePlay::DoTestStepPreambleL()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8251
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8252
	TVerdict ret = EPass;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8253
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8254
	// Make sure file doesn't exist (maybe from a previous test)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8255
	TParse fullFileName;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8256
	TBuf<KSizeBuf>	filename;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8257
	TPtrC			filename1; 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8258
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8259
	if(!GetStringFromConfig(iSectName, iKeyName, filename1))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8260
		return EInconclusive;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8261
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8262
	GetDriveName(filename);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8263
	filename.Append(filename1);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8264
		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8265
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8266
	// parse the filenames
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8267
	if(!fullFileName.Set(filename, &KDefault, NULL))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8268
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8269
		RFs fs;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8270
		User::LeaveIfError(fs.Connect());
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8271
		fs.SetAtt(fullFileName.FullName(), 0, KEntryAttReadOnly); 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8272
		TInt error = fs.Delete(fullFileName.FullName());
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8273
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8274
		if(error == KErrPathNotFound)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8275
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8276
			error = fs.MkDirAll(fullFileName.DriveAndPath());
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8277
			INFO_PRINTF2(_L("Path for file %S was been created"), &fullFileName.FullName());	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8278
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8279
		else  if(error == KErrNotFound)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8280
			INFO_PRINTF2(_L("No need to delete %S"), &fullFileName.FullName());	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8281
		else if(error==KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8282
			INFO_PRINTF2(_L("Deleted %S"), &fullFileName.FullName());	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8283
		else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8284
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8285
			ret = EInconclusive;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8286
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8287
		fs.Close();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8288
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8289
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8290
	if((ret == EInconclusive) || (ret == EFail))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8291
		return ret;	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8292
	return CTestMmfAclntStep::DoTestStepPreambleL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8293
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8294
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8295
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8296
 * Open a file based clip and record, stop & then play
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8297
 * specifying a different sample rate / number of channels
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8298
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8299
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8300
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8301
TVerdict CTestMmfAclntRecFilePlay::DoTestStepL()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8302
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8303
	INFO_PRINTF1( _L("TestRecorder : Record File & play with diff sample rate/num of channels"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8304
	TVerdict ret = EPass;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8305
	iError = KErrGeneral;	// set error to ensure callback takes place
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8306
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8307
	TPtrC filename; 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8308
	if(!GetStringFromConfig(iSectName, iKeyName, filename))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8309
		return EInconclusive;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8310
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8311
	CMdaAudioRecorderUtility* recUtil = NULL;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8312
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8313
	TMdaFileClipLocation location(filename);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8314
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8315
	RFs fs;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8316
	fs.Connect();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8317
	fs.Delete(filename);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8318
	fs.Close();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8319
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8320
	for (TInt index=0; index<2; index++)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8321
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8322
		if (recUtil)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8323
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8324
			CleanupStack::PopAndDestroy(recUtil);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8325
			recUtil = NULL;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8326
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8327
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8328
		recUtil = CMdaAudioRecorderUtility::NewL(*this);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8329
		CleanupStack::PushL(recUtil);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8330
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8331
		if (index == 0)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8332
			INFO_PRINTF1(_L("Recording to file..."));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8333
		else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8334
			INFO_PRINTF1(_L("Playing recorded file"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8335
		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8336
		TMdaWavClipFormat mdaWavFormat;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8337
		TMdaAuClipFormat mdaAuFormat;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8338
		TMdaClipFormat* format = NULL;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8339
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8340
		TMdaImaAdpcmWavCodec wavImadCodec;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8341
		TMdaPcmWavCodec wav8PcmCodec;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8342
		TMdaPcm8BitAuCodec au8PcmCodec;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8343
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8344
		TMdaPackage* codec = NULL;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8345
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8346
		switch (iFormatType)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8347
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8348
			case EWavFormat:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8349
				format = &mdaWavFormat;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8350
				switch (iCodecType)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8351
					{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8352
					case EAdpcmCodec:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8353
						codec = &wavImadCodec;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8354
						break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8355
					case EPcmCodec:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8356
						codec = &wav8PcmCodec;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8357
						break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8358
					}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8359
				break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8360
			case EAuFormat:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8361
				format = &mdaAuFormat;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8362
				switch (iCodecType)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8363
					{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8364
					case EPcmCodec:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8365
						codec = &au8PcmCodec;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8366
						break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8367
					default:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8368
						break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8369
					}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8370
				break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8371
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8372
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8373
		if (format == NULL || codec == NULL)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8374
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8375
			ret = EInconclusive;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8376
			break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8377
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8378
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8379
		TMdaAudioDataSettings audioSettings;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8380
		audioSettings.iCaps = 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8381
			TMdaAudioDataSettings::ESampleRateFixed | 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8382
			TMdaAudioDataSettings::EChannelsMono |
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8383
			TMdaAudioDataSettings::EChannelsStereo |
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8384
			TMdaAudioDataSettings::ESampleRate8000Hz |
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8385
			TMdaAudioDataSettings::ESampleRate11025Hz;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8386
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8387
		audioSettings.iFlags = TMdaAudioDataSettings::ENoNetworkRouting;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8388
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8389
		// record in stereo at 8KHz, playback in mono at 11KHz
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8390
		if (index == 0)	// record
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8391
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8392
			audioSettings.iSampleRate = KSampleRate8K;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8393
			audioSettings.iChannels = 2;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8394
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8395
		else			// play
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8396
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8397
			audioSettings.iSampleRate = KSampleRate11K;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8398
			audioSettings.iChannels = 1;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8399
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8400
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8401
			
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8402
		recUtil->OpenL(&location, format, codec, &audioSettings);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8403
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8404
		INFO_PRINTF1( _L("Initialise CMdaAudioRecorderUtility"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8405
		CActiveScheduler::Start();	// idle -> open
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8406
		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8407
		if(iError != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8408
			break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8409
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8410
		iError = KErrTimedOut;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8411
		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8412
		if (index == 0)		// record
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8413
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8414
			recUtil->RecordL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8415
			INFO_PRINTF1( _L("Record CMdaAudioRecorderUtility"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8416
			CActiveScheduler::Start(); // open -> record
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8417
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8418
			User::After(KTwoSeconds);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8419
			
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8420
			if (iCurrentState != CMdaAudioClipUtility::ERecording)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8421
				{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8422
				INFO_PRINTF1( _L("CMdaAudioRecorderUtility is not recording"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8423
				ret = EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8424
				break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8425
				}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8426
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8427
			recUtil->Stop();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8428
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8429
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8430
		else				// play
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8431
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8432
			recUtil->PlayL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8433
			INFO_PRINTF1( _L("Record CMdaAudioRecorderUtility"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8434
			CActiveScheduler::Start(); // open -> play
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8435
			CActiveScheduler::Start(); // play -> open
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8436
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8437
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8438
		recUtil->Close();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8439
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8440
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8441
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8442
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8443
	if (iError != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8444
		ret = EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8445
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8446
	ERR_PRINTF2( _L("CMdaAudioRecorderUtility completed with error %d"),iError );
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8447
	if (recUtil)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8448
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8449
		CleanupStack::PopAndDestroy(recUtil);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8450
		recUtil = NULL;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8451
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8452
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8453
	User::After(KOneSecond);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8454
	return	ret;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8455
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8456
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8457
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8458
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8459
 * DEF039893
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8460
 * Gets balance prior to setting balance
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8461
 * @class CTestMmfAclntRecord
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8462
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8463
CTestMmfAclntRecordGetBalance::CTestMmfAclntRecordGetBalance(const TDesC& aTestName)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8464
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8465
	// store the name of this test case
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8466
	// this is the name that is used by the script file
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8467
	// Each test step initialises it's own name
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8468
	iTestStepName = aTestName;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8469
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8470
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8471
CTestMmfAclntRecordGetBalance* CTestMmfAclntRecordGetBalance::NewL(const TDesC& aTestName)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8472
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8473
	CTestMmfAclntRecordGetBalance* self = new (ELeave) CTestMmfAclntRecordGetBalance(aTestName);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8474
	return self;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8475
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8476
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8477
void CTestMmfAclntRecordGetBalance::MoscoStateChangeEvent(CBase* aObject,TInt aPreviousState,TInt aCurrentState, TInt aErrorCode)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8478
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8479
	iObject = aObject;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8480
	iPreviousState = aPreviousState;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8481
	iCurrentState = aCurrentState;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8482
	iError = aErrorCode;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8483
	CActiveScheduler::Stop();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8484
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8485
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8486
TVerdict CTestMmfAclntRecordGetBalance::DoTestStepL()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8487
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8488
	// Set up a file to record to
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8489
	TVerdict verdict = EPass;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8490
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8491
	TPtrC filename;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8492
	if (!GetStringFromConfig(_L("SectionThree"), _L("outputAudioFile"), filename))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8493
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8494
		INFO_PRINTF1(_L("Error getting filename from INI file"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8495
		return EInconclusive;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8496
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8497
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8498
	RFs fs;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8499
	TInt err = fs.Connect();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8500
	if (err != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8501
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8502
		INFO_PRINTF2(_L("Error connecting file session"), err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8503
		return EInconclusive;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8504
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8505
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8506
	err = fs.Delete(filename);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8507
	if (!((err == KErrNone) || (err == KErrNotFound)))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8508
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8509
		INFO_PRINTF2(_L("Error deleting output file"), err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8510
		return EInconclusive;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8511
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8512
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8513
	CMdaAudioRecorderUtility* recUtil = CMdaAudioRecorderUtility::NewL(*this);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8514
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8515
	TInt balance;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8516
	err = recUtil->GetPlaybackBalance(balance);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8517
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8518
	if (err != KErrNotSupported)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8519
		{//would have thought KErrNotReady would be a more logical error
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8520
		verdict = EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8521
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8522
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8523
	TRAP(err,recUtil->OpenFileL(filename));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8524
	CActiveScheduler::Start();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8525
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8526
	if (err)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8527
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8528
		INFO_PRINTF2(_L("Error opening output file"), err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8529
		verdict =  EInconclusive;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8530
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8531
	else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8532
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8533
		err = recUtil->GetPlaybackBalance(balance);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8534
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8535
		if ((err)||(balance))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8536
			{//there should be no errors and balance should be 0
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8537
			verdict = EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8538
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8539
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8540
		recUtil->Close();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8541
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8542
		err = recUtil->GetPlaybackBalance(balance);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8543
		if (err != KErrNotSupported)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8544
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8545
			verdict = EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8546
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8547
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8548
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8549
	delete recUtil;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8550
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8551
	return verdict;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8552
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8553
/*
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8554
DEF039308 - No integration test to test playback of recorded raw file
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8555
The tmfad record test option b + 4 to record an alaw raw file and then play it back: this uncovered a defect that was not picked up by the integration tests suggesting there are no integration tests to record and playback a recorded raw file.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8556
Not clear whether this applies to just recording raw alaw or recorded raw in general- this needs checking as part of the 'under investigation' phase. 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8557
*/
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8558
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8559
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8560
 * Constructor
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8561
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8562
CTestMmfAclntRecRawFilePlay::CTestMmfAclntRecRawFilePlay(const TDesC& aTestName, const TDesC& aSectName,const TDesC& aKeyName, TFormatType aFormatType, TCodecType aCodecType)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8563
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8564
	// store the name of this test case
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8565
	// this is the name that is used by the script file
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8566
	// Each test step initialises it's own name
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8567
	iTestStepName = aTestName;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8568
	iSectName = aSectName;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8569
	iKeyName = aKeyName;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8570
	iFormatType = aFormatType;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8571
	iCodecType = aCodecType;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8572
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8573
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8574
CTestMmfAclntRecRawFilePlay* CTestMmfAclntRecRawFilePlay::NewL(const TDesC& aTestName, const TDesC& aSectName,const TDesC& aKeyName, TFormatType aFormatType, TCodecType aCodecType)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8575
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8576
	CTestMmfAclntRecRawFilePlay* self = new (ELeave) CTestMmfAclntRecRawFilePlay(aTestName, aSectName, aKeyName, aFormatType, aCodecType);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8577
	return self;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8578
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8579
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8580
void CTestMmfAclntRecRawFilePlay::MoscoStateChangeEvent(CBase* /*aObject*/, TInt /*aPreviousState*/, TInt aCurrentState, TInt aErrorCode)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8581
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8582
	iError = aErrorCode;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8583
	iCurrentState = aCurrentState;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8584
	INFO_PRINTF3( _L("MoscoStateChangeEvent: aCurrentState = %d, iError %d "), iCurrentState, iError);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8585
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8586
	CActiveScheduler::Stop();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8587
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8588
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8589
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8590
TVerdict CTestMmfAclntRecRawFilePlay::DoTestStepPreambleL()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8591
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8592
	TVerdict ret = EPass;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8593
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8594
	// Make sure file doesn't exist (maybe from a previous test)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8595
	TParse fullFileName;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8596
	TBuf<KSizeBuf>	filename;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8597
	TPtrC			filename1; 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8598
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8599
	if(!GetStringFromConfig(iSectName, iKeyName, filename1))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8600
		return EInconclusive;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8601
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8602
	GetDriveName(filename);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8603
	filename.Append(filename1);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8604
		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8605
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8606
	// parse the filenames
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8607
	if(!fullFileName.Set(filename, &KDefault, NULL))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8608
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8609
		RFs fs;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8610
		User::LeaveIfError(fs.Connect());
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8611
		fs.SetAtt(fullFileName.FullName(), 0, KEntryAttReadOnly); 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8612
		TInt error = fs.Delete(fullFileName.FullName());
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8613
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8614
		if(error == KErrPathNotFound)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8615
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8616
			error = fs.MkDirAll(fullFileName.DriveAndPath());
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8617
			INFO_PRINTF2(_L("Path for file %S was been created"), &fullFileName.FullName());	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8618
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8619
		else  if(error == KErrNotFound)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8620
			INFO_PRINTF2(_L("No need to delete %S"), &fullFileName.FullName());	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8621
		else if(error==KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8622
			INFO_PRINTF2(_L("Deleted %S"), &fullFileName.FullName());	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8623
		else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8624
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8625
			ret = EInconclusive;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8626
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8627
		fs.Close();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8628
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8629
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8630
	if((ret == EInconclusive) || (ret == EFail))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8631
		return ret;	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8632
	return CTestMmfAclntStep::DoTestStepPreambleL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8633
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8634
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8635
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8636
 * Open a file based clip and record, stop & then play
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8637
 * specifying a different sample rate / number of channels
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8638
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8639
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8640
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8641
TVerdict CTestMmfAclntRecRawFilePlay::DoTestStepL()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8642
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8643
	INFO_PRINTF1( _L("TestRecorder : Record RAW File & play with diff sample rate/num of channels"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8644
	TVerdict ret = EPass;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8645
	iError = KErrGeneral;	// set error to ensure callback takes place
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8646
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8647
	TPtrC filename; 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8648
	if(!GetStringFromConfig(iSectName, iKeyName, filename))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8649
		return EInconclusive;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8650
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8651
	CMdaAudioRecorderUtility* recUtil = NULL;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8652
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8653
	TMdaFileClipLocation location(filename);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8654
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8655
	RFs fs;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8656
	fs.Connect();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8657
	fs.Delete(filename);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8658
	fs.Close();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8659
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8660
	for (TInt index=0; index<2; index++)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8661
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8662
		if (recUtil)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8663
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8664
			CleanupStack::PopAndDestroy(recUtil);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8665
			recUtil = NULL;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8666
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8667
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8668
		recUtil = CMdaAudioRecorderUtility::NewL(*this);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8669
		CleanupStack::PushL(recUtil);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8670
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8671
		if (index == 0)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8672
			INFO_PRINTF1(_L("Recording to file..."));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8673
		else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8674
			INFO_PRINTF1(_L("Playing recorded file"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8675
		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8676
		TMdaRawAudioClipFormat mdaRawFormat;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8677
		TMdaClipFormat* format = NULL;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8678
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8679
		TMdaAlawRawAudioCodec rawAlawCodec;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8680
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8681
		TMdaPackage* codec = NULL;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8682
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8683
		switch (iFormatType)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8684
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8685
			case ERawFormat:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8686
				format = &mdaRawFormat;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8687
				switch (iCodecType)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8688
					{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8689
					case EAlawCodec:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8690
						codec = &rawAlawCodec;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8691
						break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8692
					default:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8693
						break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8694
					}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8695
				break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8696
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8697
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8698
		if (format == NULL || codec == NULL)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8699
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8700
			ret = EInconclusive;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8701
			break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8702
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8703
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8704
		TMdaAudioDataSettings audioSettings;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8705
		audioSettings.iCaps = 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8706
			TMdaAudioDataSettings::ESampleRateFixed | 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8707
			TMdaAudioDataSettings::EChannelsMono |
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8708
			TMdaAudioDataSettings::EChannelsStereo |
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8709
			TMdaAudioDataSettings::ESampleRate8000Hz |
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8710
			TMdaAudioDataSettings::ESampleRate11025Hz;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8711
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8712
		audioSettings.iFlags = TMdaAudioDataSettings::ENoNetworkRouting;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8713
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8714
		// record in stereo at 8KHz, playback in mono at 11KHz
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8715
		if (index == 0)	// record
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8716
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8717
			audioSettings.iSampleRate = KSampleRate8K;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8718
			audioSettings.iChannels = 2;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8719
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8720
		else			// play
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8721
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8722
			audioSettings.iSampleRate = KSampleRate11K;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8723
			audioSettings.iChannels = 1;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8724
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8725
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8726
			
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8727
		recUtil->OpenL(&location, format, codec, &audioSettings);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8728
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8729
		INFO_PRINTF1( _L("Initialise CMdaAudioRecorderUtility"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8730
		CActiveScheduler::Start();	// idle -> open
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8731
		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8732
		if(iError != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8733
			break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8734
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8735
		iError = KErrTimedOut;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8736
		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8737
		if (index == 0)		// record
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8738
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8739
			recUtil->RecordL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8740
			INFO_PRINTF1( _L("Record CMdaAudioRecorderUtility"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8741
			CActiveScheduler::Start(); // open -> record
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8742
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8743
			User::After(KTwoSeconds);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8744
			
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8745
			if (iCurrentState != CMdaAudioClipUtility::ERecording)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8746
				{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8747
				INFO_PRINTF1( _L("CMdaAudioRecorderUtility is not recording"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8748
				ret = EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8749
				break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8750
				}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8751
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8752
			recUtil->Stop();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8753
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8754
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8755
		else				// play
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8756
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8757
			recUtil->PlayL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8758
			INFO_PRINTF1( _L("Record CMdaAudioRecorderUtility"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8759
			CActiveScheduler::Start(); // open -> play
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8760
			CActiveScheduler::Start(); // play -> open
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8761
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8762
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8763
		recUtil->Close();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8764
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8765
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8766
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8767
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8768
	if (iError != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8769
		ret = EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8770
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8771
	ERR_PRINTF2( _L("CMdaAudioRecorderUtility completed with error %d"),iError );
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8772
	if (recUtil)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8773
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8774
		CleanupStack::PopAndDestroy(recUtil);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8775
		recUtil = NULL;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8776
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8777
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8778
	User::After(KOneSecond);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8779
	return	ret;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8780
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8781
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8782
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8783
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8784
 * REQ2870
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8785
 * Sierra: AudioRecorderUtility to get AudioBitrare 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8786
 * @class CTestMmfAclntRecSrcAuBitrate
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8787
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8788
CTestMmfAclntRecSrcAuBitrate::CTestMmfAclntRecSrcAuBitrate(const TDesC& aTestName, const TDesC& aSectName,const TDesC& aKeyName1, const TDesC& aKeyName2)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8789
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8790
	// store the name of this test case
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8791
	// this is the name that is used by the script file
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8792
	// Each test step initialises it's own name
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8793
	iTestStepName = aTestName;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8794
	iSectName = aSectName;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8795
	iKeyFileName = aKeyName1;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8796
	iKeyBitRateName = aKeyName2;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8797
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8798
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8799
CTestMmfAclntRecSrcAuBitrate* CTestMmfAclntRecSrcAuBitrate::NewL(const TDesC& aTestName, 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8800
																const TDesC& aSectName,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8801
																const TDesC& aKeyName1, 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8802
																const TDesC& aKeyName2)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8803
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8804
	CTestMmfAclntRecSrcAuBitrate* self = new (ELeave) CTestMmfAclntRecSrcAuBitrate(aTestName, 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8805
																					aSectName, 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8806
																					aKeyName1, 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8807
																					aKeyName2);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8808
	return self;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8809
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8810
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8811
void CTestMmfAclntRecSrcAuBitrate::MoscoStateChangeEvent(CBase* aObject,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8812
														  TInt aPreviousState,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8813
														  TInt aCurrentState,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8814
														  TInt aErrorCode)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8815
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8816
	iError = aErrorCode;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8817
	iObject = aObject;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8818
	iPreviousState = aPreviousState;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8819
	iCurrentState = aCurrentState;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8820
	INFO_PRINTF1( _L("CTestMmfAclntRecSrcAuBitrate : MMdaObjectStateChangeObserver Callback for CMdaAudioRecorderUtility complete"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8821
	INFO_PRINTF4( _L("iError %d iPreviousState %d iCurrentState %d"), iError, iPreviousState, iCurrentState);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8822
	CActiveScheduler::Stop();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8823
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8824
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8825
TVerdict CTestMmfAclntRecSrcAuBitrate::DoTestStepL()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8826
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8827
	INFO_PRINTF1( _L("TestRecorder : Audio Bit Rate"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8828
	TVerdict verdict = EPass;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8829
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8830
	TPtrC filename;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8831
	TInt bitRate = 0;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8832
	TInt err = 0;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8833
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8834
	if(!GetStringFromConfig(iSectName,iKeyFileName,filename))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8835
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8836
		INFO_PRINTF1(_L("Error getting filename from INI file"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8837
		return EInconclusive;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8838
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8839
	if(!GetIntFromConfig(iSectName, iKeyBitRateName, iExpectedBitRate))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8840
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8841
		INFO_PRINTF1(_L("Error getting bitrate from INI file"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8842
		return EInconclusive;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8843
		}	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8844
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8845
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8846
	CMdaAudioRecorderUtility* recUtil = CMdaAudioRecorderUtility::NewL(*this);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8847
	if (recUtil == NULL || 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8848
		iError != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8849
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8850
		INFO_PRINTF1(_L("Error to create a recUtil object"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8851
		return EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8852
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8853
	CleanupStack::PushL(recUtil);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8854
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8855
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8856
	INFO_PRINTF2(_L("Opening file = %S"), &filename);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8857
	TRAP(err, recUtil->OpenFileL(filename));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8858
	CActiveScheduler::Start();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8859
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8860
	if (err != KErrNone || 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8861
		iError != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8862
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8863
		INFO_PRINTF2(_L("Opening file error: %d"), err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8864
		CleanupStack::PopAndDestroy(recUtil);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8865
		verdict = EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8866
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8867
	else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8868
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8869
		recUtil->PlayL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8870
		CActiveScheduler::Start(); // wait for open -> play
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8871
		if (iError != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8872
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8873
			INFO_PRINTF2(_L("Error to play the file: %d"), iError);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8874
			verdict = EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8875
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8876
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8877
		TRAP(err, bitRate = recUtil->SourceBitRateL());
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8878
		if (err != KErrNone || 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8879
			iError != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8880
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8881
			INFO_PRINTF2(_L("Error to query the bitrate: %d"), err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8882
			verdict = EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8883
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8884
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8885
		if	(bitRate != iExpectedBitRate)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8886
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8887
			verdict = EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8888
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8889
		INFO_PRINTF2(_L("Expected bit rate: %d"), iExpectedBitRate);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8890
		INFO_PRINTF2(_L("Queried Bitrate: %d"), bitRate);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8891
		recUtil->Close();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8892
		CleanupStack::PopAndDestroy(recUtil);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8893
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8894
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8895
	return verdict;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8896
}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8897
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8898
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8899
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8900
 * REQ2870
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8901
 * Sierra: AudioRecorderUtility to get AudioBitrare from a recorded file
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8902
 * @class CTestMmfAclntRecBitrateRecordedFile
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8903
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8904
CTestMmfAclntRecBitrateRecordedFile::CTestMmfAclntRecBitrateRecordedFile(const TDesC& aTestName, 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8905
																		 const TDesC& aSectName,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8906
																		 const TDesC& aKeyName, 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8907
																		 const TTestFormat aFormat, 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8908
																		 const TBool aCreateFile)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8909
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8910
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8911
	// store the name of this test case
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8912
	// this is the name that is used by the script file
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8913
	// Each test step initialises it's own name
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8914
	iTestStepName = aTestName;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8915
	iHeapSize = 200000;		// playback part of test loads whole sound file into buffer, so need large heap
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8916
	iSectName = aSectName;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8917
	iKeyName = aKeyName;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8918
	iTestFormat = aFormat;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8919
	iCreateFile = aCreateFile;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8920
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8921
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8922
CTestMmfAclntRecBitrateRecordedFile* CTestMmfAclntRecBitrateRecordedFile::NewL(const TDesC& aTestName, 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8923
																			   const TDesC& aSectName,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8924
																			   const TDesC& aKeyName, 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8925
																			   const TTestFormat aFormat, 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8926
																			   const TBool aCreateFile)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8927
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8928
	CTestMmfAclntRecBitrateRecordedFile* self = new (ELeave) CTestMmfAclntRecBitrateRecordedFile(aTestName,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8929
																								 aSectName,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8930
																								 aKeyName,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8931
																								 aFormat,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8932
																								 aCreateFile);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8933
	return self;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8934
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8935
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8936
void CTestMmfAclntRecBitrateRecordedFile::MoscoStateChangeEvent(CBase* /*aObject*/, TInt /*aPreviousState*/, TInt /*aCurrentState*/, TInt aErrorCode)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8937
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8938
	iError = aErrorCode;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8939
	INFO_PRINTF1( _L("CTestMmfAclntRecBitrateRecordedFile : MMdaObjectStateChangeObserver Callback for CMdaAudioRecorderUtility complete"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8940
	INFO_PRINTF2( _L("iError %d "), iError);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8941
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8942
	CActiveScheduler::Stop();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8943
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8944
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8945
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8946
TVerdict CTestMmfAclntRecBitrateRecordedFile::DoTestStepPreambleL()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8947
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8948
	TVerdict ret = EPass;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8949
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8950
	//Setup codec and format to test (CTestMmfAclntCodecTest)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8951
	SetupFormatL(iTestFormat);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8952
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8953
	if(iCreateFile)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8954
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8955
		// Make sure file doesn't exist (maybe from a previous test)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8956
		TParse fullFileName;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8957
		TBuf<KSizeBuf>	filename;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8958
		TPtrC			filename1; 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8959
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8960
		if(!GetStringFromConfig(iSectName, iKeyName, filename1))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8961
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8962
			return EInconclusive;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8963
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8964
		GetDriveName(filename);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8965
		filename.Append(filename1);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8966
		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8967
		// parse the filenames
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8968
		if(!fullFileName.Set(filename, &KDefault, NULL))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8969
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8970
			RFs fs;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8971
			User::LeaveIfError(fs.Connect());
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8972
			fs.SetAtt(fullFileName.FullName(), 0, KEntryAttReadOnly); 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8973
			TInt error = fs.Delete(fullFileName.FullName());
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8974
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8975
			if(error == KErrPathNotFound)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8976
				{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8977
				error = fs.MkDirAll(fullFileName.DriveAndPath());
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8978
				INFO_PRINTF2(_L("Path for file %S was been created"), &fullFileName.FullName());	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8979
				}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8980
			else  if(error == KErrNotFound)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8981
				{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8982
				INFO_PRINTF2(_L("No need to delete %S"), &fullFileName.FullName());	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8983
				}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8984
			else if(error==KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8985
				{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8986
				INFO_PRINTF2(_L("Deleted %S"), &fullFileName.FullName());	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8987
				}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8988
			else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8989
				{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8990
				ret = EInconclusive;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8991
				}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8992
			fs.Close();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8993
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8994
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8995
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8996
	if(ret == EInconclusive)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8997
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8998
		return ret;	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8999
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9000
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9001
	return CTestMmfAclntStep::DoTestStepPreambleL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9002
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9003
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9004
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9005
TVerdict CTestMmfAclntRecBitrateRecordedFile::DoTestStepL()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9006
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9007
	INFO_PRINTF1( _L("TestRecorder : Query bitrate from a recorded file"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9008
	TVerdict verdict = EPass;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9009
	iError = KErrTimedOut;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9010
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9011
	TPtrC	filename; 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9012
	if(!GetStringFromConfig(iSectName, iKeyName, filename))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9013
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9014
		return EInconclusive;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9015
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9016
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9017
	CMdaAudioRecorderUtility* recUtil = CMdaAudioRecorderUtility::NewL(*this);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9018
	CleanupStack::PushL(recUtil);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9019
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9020
	TMdaFileClipLocation location(filename);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9021
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9022
	recUtil->OpenL(&location,iFormat,iCodec,&iAudioSettings);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9023
	CActiveScheduler::Start();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9024
	INFO_PRINTF1( _L("Open a new file for recording"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9025
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9026
	if (iError != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9027
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9028
		INFO_PRINTF2(_L("Error opening file for recording iError = %d"), iError);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9029
		CleanupStack::PopAndDestroy(recUtil);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9030
		return EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9031
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9032
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9033
	iError = KErrTimedOut;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9034
	recUtil->RecordL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9035
	CActiveScheduler::Start(); // open -> record
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9036
	INFO_PRINTF1( _L("Recording"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9037
	User::After(KFiveSeconds);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9038
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9039
	if(iError != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9040
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9041
		INFO_PRINTF2( _L("Fail to do recording with error: %d"), iError);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9042
		verdict = EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9043
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9044
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9045
	recUtil->Stop();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9046
	User::After(KOneSecond);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9047
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9048
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9049
	TRAPD(err, recUtil->OpenFileL(filename));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9050
	CActiveScheduler::Start();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9051
	INFO_PRINTF1( _L("Open the recorded file"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9052
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9053
	if (err != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9054
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9055
		INFO_PRINTF2(_L("Error opening file for playback err = %d"), err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9056
		CleanupStack::PopAndDestroy(recUtil);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9057
		return EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9058
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9059
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9060
	if (iError != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9061
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9062
		INFO_PRINTF2(_L("Error opening file for playback iError = %d"), iError);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9063
		CleanupStack::PopAndDestroy(recUtil);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9064
		return EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9065
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9066
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9067
	recUtil->PlayL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9068
	CActiveScheduler::Start();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9069
	INFO_PRINTF1( _L("Play the recorded file"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9070
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9071
	if (iError != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9072
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9073
		INFO_PRINTF2(_L("Error during playback of recorded file iError=%d"), iError);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9074
		verdict = EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9075
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9076
	User::After(KFiveSeconds);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9077
		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9078
	TInt bitRate = 0;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9079
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9080
	TRAP(err, bitRate = recUtil->SourceBitRateL());
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9081
	INFO_PRINTF1( _L("Query bitrate from the recorded file"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9082
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9083
	if (err != KErrNone || 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9084
		iError != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9085
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9086
		INFO_PRINTF2(_L("Error to query the bitrate: %d"), err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9087
		verdict = EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9088
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9089
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9090
	INFO_PRINTF2(_L("Queried Bitrate: %d"), bitRate);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9091
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9092
	recUtil->Close();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9093
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9094
	CleanupStack::PopAndDestroy(recUtil);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9095
	recUtil = NULL;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9096
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9097
	ERR_PRINTF2( _L("CMdaAudioRecorderUtility completed with error %d"),iError );
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9098
	User::After(KOneSecond);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9099
	return	verdict;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9100
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9101
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9102
//Record-Stop-Record test. Added for CR1566
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9103
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9104
CTestMmfAclntRecStopRec::CTestMmfAclntRecStopRec(const TDesC& aTestName, const TDesC& aSectName, TBool aNegative)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9105
	:CTestMmfAclntRecord(aTestName, aSectName, aNegative)	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9106
	{}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9107
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9108
CTestMmfAclntRecStopRec* CTestMmfAclntRecStopRec::NewL(const TDesC& aTestName, const TDesC& aSectName, TBool aNegative)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9109
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9110
	CTestMmfAclntRecStopRec* self = new (ELeave) CTestMmfAclntRecStopRec(aTestName, aSectName, aNegative);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9111
	return self;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9112
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9113
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9114
TVerdict CTestMmfAclntRecStopRec::DoTestStepL()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9115
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9116
	INFO_PRINTF1( _L("TestRecorder : Record-Stop-Record"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9117
	TVerdict ret = EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9118
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9119
	iError = KErrTimedOut;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9120
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9121
	TPtrC filename; 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9122
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9123
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9124
	if(!GetStringFromConfig(iSectName, _L("outputAudioFile"), filename))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9125
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9126
		return EInconclusive;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9127
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9128
		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9129
	RFs	fs;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9130
	fs.Connect();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9131
	fs.Delete(filename);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9132
	fs.Close();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9133
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9134
	CMdaAudioRecorderUtility* recUtil = CMdaAudioRecorderUtility::NewL(*this);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9135
	CleanupStack::PushL(recUtil);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9136
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9137
	// Add create file for Ogg-tests
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9138
	if(iSectName == _L("SectionOggRecState"))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9139
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9140
		RFs fs;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9141
		User::LeaveIfError(fs.Connect());
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9142
		RFile file;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9143
		User::LeaveIfError(file.Replace(fs,filename,EFileWrite));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9144
		file.Close();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9145
		fs.Close();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9146
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9147
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9148
	INFO_PRINTF2(_L("CMdaAudioRecorderUtility->OpenFileL(%S)"), &filename);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9149
	recUtil->OpenFileL(filename);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9150
	// wait
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9151
	INFO_PRINTF1(_L("Initialise CMdaAudioRecorderUtility"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9152
	CActiveScheduler::Start();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9153
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9154
	if(iError == KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9155
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9156
		ret = DoTestL(recUtil);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9157
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9158
		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9159
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9160
	CleanupStack::PopAndDestroy(recUtil);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9161
	User::After(KTwoSeconds);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9162
	ERR_PRINTF2( _L("CMdaAudioRecorderUtility completed with error %d"),iError );
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9163
	return ret;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9164
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9165
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9166
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9167
 * Enquire state at each state transition.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9168
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9169
TVerdict CTestMmfAclntRecStopRec::DoTestL(CMdaAudioRecorderUtility* aRecUtil)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9170
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9171
	INFO_PRINTF1( _L("TestRecorder : State Transition"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9172
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9173
	TVerdict ret= EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9174
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9175
	iReportedState = aRecUtil->State();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9176
	if( iReportedState == CMdaAudioClipUtility::EOpen )
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9177
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9178
		INFO_PRINTF1( _L("Record CMdaAudioRecorderUtility"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9179
		aRecUtil->RecordL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9180
		CActiveScheduler::Start(); // wait for open -> record
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9181
		if (iError != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9182
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9183
			return EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9184
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9185
			
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9186
		iReportedState = aRecUtil->State();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9187
		if(iReportedState == CMdaAudioClipUtility::ERecording )
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9188
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9189
			ret = EPass;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9190
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9191
			
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9192
		User::After(KTwoSeconds);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9193
		aRecUtil->Stop();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9194
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9195
		iReportedState = aRecUtil->State();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9196
		if(iReportedState != CMdaAudioClipUtility::EOpen ) //Check that record returns to open
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9197
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9198
			return EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9199
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9200
			
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9201
		aRecUtil->RecordL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9202
		CActiveScheduler::Start(); // wait for open -> record again
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9203
		if (iError != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9204
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9205
			return EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9206
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9207
			
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9208
		iReportedState = aRecUtil->State();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9209
		if( iReportedState == CMdaAudioClipUtility::ERecording )
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9210
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9211
			aRecUtil->Close();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9212
			ret = EPass;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9213
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9214
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9215
	return ret;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9216
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9217