mmlibs/mmfw/tsrc/mmfunittest/aclnt/TSU_MMF_ACLNT_01/TestStepRecorderRecord.cpp
author hgs
Thu, 07 Oct 2010 22:34:12 +0100
changeset 0 b8ed18f6c07b
permissions -rw-r--r--
2010wk40
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
0
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
     1
// Copyright (c) 2002-2009 Nokia Corporation and/or its subsidiary(-ies).
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
     2
// All rights reserved.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
     3
// This component and the accompanying materials are made available
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
     4
// under the terms of "Eclipse Public License v1.0"
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
     5
// which accompanies this distribution, and is available
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
     6
// at the URL "http://www.eclipse.org/legal/epl-v10.html".
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
     7
//
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
     8
// Initial Contributors:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
     9
// Nokia Corporation - initial contribution.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    10
//
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    11
// Contributors:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    12
//
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    13
// Description:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    14
// This file contains an example Test step implementation
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    15
// This demonstrates the various functions provided
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    16
// by the CTestStep base class which are available within
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    17
// a test step
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    18
// 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    19
//
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    20
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    21
// EPOC includes
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    22
#include <e32base.h>
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    23
#include <e32test.h>
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    24
#include <e32keys.h>
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    25
#include <c32comm.h>
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    26
#include <f32file.h>
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    27
#include <etel.h>
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    28
#include <etelmm.h>
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    29
#include <testframework.h>
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    30
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    31
//#include <MdaAudioSamplePlayer.h>
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    32
#include <mdaaudiosampleeditor.h>
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    33
//#include <MdaAudioTonePlayer.h>
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    34
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    35
// Test system includes
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    36
#include <testframework.h>
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    37
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    38
// Specific includes for this test suite
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    39
#include "TestStepUnitMMFAudClient.h"
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    40
#include "TestSuiteUnitMMFAudClient.h"
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    41
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    42
// Specific includes for these test steps
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    43
#include "TestStepRecorder.h"
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    44
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    45
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    46
#include "MmfAudioController.h"
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    47
#include "mmfclientaudiorecorder.h"
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    48
//#include "MmfClientAudioPlayer.h"
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    49
//#include <mmffourcc.h>
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    50
//#include <mmfpaniccodes.h>
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    51
//#include <mmfFormatImplementationUIDs.hrh>
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    52
// --------------------------------------------
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    53
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    54
const TInt KTestRecordTime = 10000000;				// 10 sec
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    55
const TInt KTestRecordTimeTolerance = 2000000;		// 2 sec
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    56
const TInt KTestPointerValue = 0xdeadbeef;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    57
const TInt KTestPointerRecorder1 = 0xdadadada;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    58
const TInt KTestPointerRecorder2 = 0xbabababa;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    59
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    60
_LIT(KTestRecordOne, "c:\\R1.wav");
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    61
_LIT(KTestRecordTwo, "c:\\R2.wav");
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    62
_LIT(KTestRecordThree, "c:\\R3.wav");
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    63
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    64
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    65
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    66
 * Static constructor for CTestStepRecorderRecord.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    67
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    68
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    69
 * @return	"CTestStepRecorderRecord*"
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    70
 *			The constructed CTestStepRecorderRecord
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    71
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    72
 * @xxxx
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    73
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    74
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    75
CTestStepRecorderRecord* CTestStepRecorderRecord::NewL()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    76
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    77
	CTestStepRecorderRecord* self = new(ELeave) CTestStepRecorderRecord;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    78
	return self;
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
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    83
 * Test step constructor.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    84
 * Each test step initialises its own name.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    85
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    86
 * @xxxx
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    87
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    88
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    89
CTestStepRecorderRecord::CTestStepRecorderRecord() : iError(0), iHasRecorded(EFalse)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    90
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    91
	// store the name of this test case
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    92
	// this is the name that is used by the script file
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    93
	iTestStepName = _L("MM-MMF-ACLNT-U-0207-CP");
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    94
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    95
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    96
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    97
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    98
 * Test step destructor.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    99
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   100
 * @xxxx
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   101
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   102
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   103
CTestStepRecorderRecord::~CTestStepRecorderRecord()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   104
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   105
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   106
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   107
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   108
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   109
 * Test step Preamble.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   110
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   111
 * @xxxx
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   112
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   113
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   114
enum TVerdict CTestStepRecorderRecord::DoTestStepPreambleL(void)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   115
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   116
	 enum TVerdict verdict = EPass;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   117
	 // this installs the scheduler
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   118
	 verdict = CTestStepUnitMMFAudClient::DoTestStepPreambleL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   119
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   120
	// Printing to the console and log file
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   121
	INFO_PRINTF1(_L("MM-MMF-ACLNT-U-0207-CP"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   122
	INFO_PRINTF1(_L("this is a test of CMdaAudioRecorderUtility::RecordL"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   123
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   124
	if(!GetStringFromConfig(_L("SectionOne"), _L("AudioFNameToRecord"), iFileName))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   125
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   126
		//INFO_PRINTF2(_L("file name %s not found..."), fileptr);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   127
		return EInconclusive;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   128
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   129
	if(!GetStringFromConfig(_L("SectionOne"), _L("AudioFNameToRecord2"), iFileName2))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   130
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   131
		//INFO_PRINTF2(_L("file name %s not found..."), fileptr);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   132
		return EInconclusive;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   133
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   134
	if(!GetStringFromConfig(_L("SectionOne"), _L("AudioFNameToRecord3"), iFileName3))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   135
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   136
		//INFO_PRINTF2(_L("file name %s not found..."), fileptr);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   137
		return EInconclusive;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   138
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   139
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   140
	if ( (iRecorder = CMMFMdaAudioRecorderUtility::NewL(*this)) == NULL )
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   141
		verdict = EInconclusive;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   142
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   143
	if (SetAudRecorderParent(iRecorder, REINTERPRET_CAST(CMdaAudioRecorderUtility*, KTestPointerValue)) != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   144
		return EFail; // check value in MoscoStateChangeEvent
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   145
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   146
	// open an existing file to record and crop all its contents if any
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   147
	iRecorder->OpenFileL(iFileName);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   148
	CActiveScheduler::Start();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   149
	if (iError)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   150
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   151
		INFO_PRINTF2(_L("open returned %d"), iError);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   152
		return EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   153
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   154
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   155
	if (iError != KErrNone ||
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   156
		iRecorder->State() != CMdaAudioRecorderUtility::EOpen)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   157
		return EInconclusive;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   158
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   159
	iRecorder->SetGain(iRecorder->MaxGain()/2);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   160
	iBeginning = new TTimeIntervalMicroSeconds(0);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   161
	iRecorder->SetPosition(*iBeginning);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   162
	iRecorder->CropL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   163
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   164
	if ( iError != KErrNone ||
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   165
		 iRecorder->State() != CMdaAudioRecorderUtility::EOpen)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   166
		verdict = EInconclusive;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   167
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   168
	return verdict;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   169
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   170
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   171
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   172
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   173
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   174
 * Test step Postamble.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   175
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   176
 * @xxxx
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   177
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   178
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   179
enum TVerdict CTestStepRecorderRecord::DoTestStepPostambleL(void)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   180
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   181
	//delete the output file
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   182
	CFileMan* fileMan;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   183
	iFs.Connect();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   184
	fileMan = CFileMan::NewL(iFs);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   185
	fileMan->Delete(iFileName);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   186
	iFs.Close();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   187
	delete fileMan;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   188
	fileMan = NULL;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   189
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   190
	delete iRecorder;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   191
	iRecorder = NULL;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   192
	//[ Destroy the scheduler ]
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   193
	return CTestStepUnitMMFAudClient::DoTestStepPostambleL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   194
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   195
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   196
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   197
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   198
 * Callback Handle.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   199
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   200
 * @xxxx
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   201
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   202
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   203
void CTestStepRecorderRecord::MoscoStateChangeEvent(CBase* aObject,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   204
														  TInt /*aPreviousState*/,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   205
														  TInt /*aCurrentState*/,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   206
														  TInt aErrorCode)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   207
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   208
	if (aObject != REINTERPRET_CAST(CBase*, KTestPointerValue))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   209
		iError = KErrArgument;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   210
	else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   211
		iError = aErrorCode;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   212
	CActiveScheduler::Stop();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   213
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   214
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   215
// this can return a TBool hasPlayed to prove that it has played
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   216
// but the EPlaying state seems to get preserved for some reason...
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   217
void CTestStepRecorderRecord::RecordAndStartSchedulerL()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   218
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   219
	iRecorder->RecordL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   220
	CActiveScheduler::Start();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   221
	// record 2 secs, ...probably silence
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   222
	User::After(2000000);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   223
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   224
    if (iRecorder->State() == CMdaAudioRecorderUtility::ERecording)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   225
		iHasRecorded = ETrue;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   226
	iRecorder->Stop();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   227
	User::LeaveIfError(iError);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   228
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   229
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   230
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   231
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   232
 * Do the test step.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   233
 * Each test step must supply an implementation for DoTestStepL.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   234
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   235
 * @return	"TVerdict"
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   236
 *			The result of the test step
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   237
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   238
 * @xxxx
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   239
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   240
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   241
TVerdict CTestStepRecorderRecord::DoTestStepL()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   242
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   243
	iTestStepResult = EPass;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   244
    TInt err       = KErrNone;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   245
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   246
	TRAP( err, RecordAndStartSchedulerL() );
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   247
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   248
	// check result
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   249
	if (iError != KErrNone ||
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   250
		err != KErrNone ||
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   251
		!iHasRecorded ||
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   252
		iRecorder->State() != CMdaAudioRecorderUtility::EOpen)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   253
		return EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   254
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   255
	iHasRecorded = EFalse;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   256
	iRecorder->Close();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   257
	delete iRecorder;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   258
	iRecorder = NULL;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   259
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   260
	/*
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   261
	// record AU file //
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   262
	if ( (iRecorder = CMMFMdaAudioRecorderUtility::NewL(*this)) == NULL )
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   263
		return EInconclusive;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   264
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   265
	// open an existing file to record and crop all its contents if any
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   266
	iRecorder->OpenFileL(iFileName2);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   267
	CActiveScheduler::Start();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   268
	if (iRecorder->State() != CMdaAudioRecorderUtility::EOpen)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   269
		return EInconclusive;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   270
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   271
	iRecorder->SetGain(iRecorder->MaxGain()*.75);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   272
	iRecorder->SetPosition(*iBeginning);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   273
	iRecorder->CropL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   274
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   275
	if ( iError != KErrNone ||
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   276
		 iRecorder->State() != CMdaAudioRecorderUtility::EOpen)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   277
		return EInconclusive;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   278
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   279
	TRAP( err, RecordAndStartSchedulerL() );
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   280
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   281
	// check result
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   282
	if (iError != KErrNone ||
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   283
		err != KErrNone ||
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   284
		!iHasRecorded ||
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   285
		iRecorder->State() != CMdaAudioRecorderUtility::EOpen)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   286
		return EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   287
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   288
	iHasRecorded = EFalse;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   289
	iRecorder->Close();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   290
	delete iRecorder;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   291
	iRecorder = NULL;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   292
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   293
	// record RAW file //
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   294
	if ( (iRecorder = CMMFMdaAudioRecorderUtility::NewL(*this)) == NULL )
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   295
		return EInconclusive;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   296
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   297
	// open an existing file to record and crop all its contents if any
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   298
	iRecorder->OpenFileL(iFileName3);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   299
	CActiveScheduler::Start();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   300
	if (iRecorder->State() != CMdaAudioRecorderUtility::EOpen)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   301
		return EInconclusive;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   302
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   303
	iRecorder->SetGain(iRecorder->MaxGain()*.75);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   304
	iRecorder->SetPosition(*iBeginning);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   305
	iRecorder->CropL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   306
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   307
	if ( iError != KErrNone ||
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   308
		 iRecorder->State() != CMdaAudioRecorderUtility::EOpen)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   309
		return EInconclusive;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   310
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   311
	TRAP( err, RecordAndStartSchedulerL() );
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   312
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   313
	// check result
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   314
	if (iError != KErrNone ||
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   315
		err != KErrNone ||
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   316
		!iHasRecorded ||
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   317
		iRecorder->State() != CMdaAudioRecorderUtility::EOpen)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   318
		return EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   319
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   320
	iHasRecorded = EFalse;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   321
	iRecorder->Close();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   322
	delete iRecorder;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   323
	iRecorder = NULL;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   324
	*/
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   325
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   326
	INFO_PRINTF1(_L("finished with this test step"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   327
	// test steps return a result
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   328
	return iTestStepResult;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   329
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   330
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   331
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   332
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   333
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   334
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   335
 * Static constructor for CTestStepRecorderRecordWav.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   336
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   337
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   338
 * @return	"CTestStepRecorderRecordWav*"
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   339
 *			The constructed CTestStepRecorderRecordWav
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   340
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   341
 * @xxxx
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   342
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   343
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   344
CTestStepRecorderRecordWav* CTestStepRecorderRecordWav::NewL()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   345
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   346
	CTestStepRecorderRecordWav* self = new(ELeave) CTestStepRecorderRecordWav;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   347
	return self;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   348
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   349
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   350
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   351
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   352
 * Test step constructor.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   353
 * Each test step initialises its own name.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   354
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   355
 * @xxxx
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   356
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   357
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   358
CTestStepRecorderRecordWav::CTestStepRecorderRecordWav() : iError(0), iHasRecorded(EFalse)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   359
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   360
	// store the name of this test case
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   361
	// this is the name that is used by the script file
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   362
	iTestStepName = _L("MM-MMF-ACLNT-U-0269-HP");
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   363
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   364
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   365
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   366
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   367
 * Test step destructor.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   368
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   369
 * @xxxx
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   370
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   371
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   372
CTestStepRecorderRecordWav::~CTestStepRecorderRecordWav()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   373
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   374
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   375
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   376
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   377
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   378
 * Test step Preamble.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   379
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   380
 * @xxxx
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   381
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   382
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   383
enum TVerdict CTestStepRecorderRecordWav::DoTestStepPreambleL(void)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   384
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   385
	 enum TVerdict verdict = EPass;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   386
	 // this installs the scheduler
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   387
	 verdict = CTestStepUnitMMFAudClient::DoTestStepPreambleL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   388
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   389
	// Printing to the console and log file
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   390
	INFO_PRINTF1(_L("MM-MMF-ACLNT-U-0269-HP"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   391
	INFO_PRINTF1(_L("this is a test of CMdaAudioRecorderUtility::RecordL with non existent wav file"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   392
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   393
	// set the file name to something weird
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   394
    iFileName.Set( _L("c:\\szhgefdsfe.wav"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   395
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   396
	//[ ensure the file does not exist]
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   397
	CFileMan* fileMan;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   398
	iFs.Connect();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   399
	fileMan = CFileMan::NewL(iFs);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   400
	fileMan->Delete(iFileName);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   401
	iFs.Close();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   402
	delete fileMan;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   403
	fileMan = NULL;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   404
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   405
	if ( (iRecorder = CMMFMdaAudioRecorderUtility::NewL(*this)) == NULL )
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   406
		verdict = EInconclusive;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   407
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   408
	if (SetAudRecorderParent(iRecorder, REINTERPRET_CAST(CMdaAudioRecorderUtility*, KTestPointerValue)) != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   409
		return EFail; // check value in MoscoStateChangeEvent
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   410
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   411
	// open an existing file to record and crop all its contents if any
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   412
	iRecorder->OpenFileL(iFileName);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   413
	CActiveScheduler::Start();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   414
	if (iError)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   415
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   416
		INFO_PRINTF2(_L("open returned %d"), iError);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   417
		return EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   418
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   419
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   420
	if (iError != KErrNone ||
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   421
		iRecorder->State() != CMdaAudioRecorderUtility::EOpen)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   422
		return EInconclusive;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   423
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   424
	iRecorder->SetGain(iRecorder->MaxGain()/2);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   425
	iBeginning = new TTimeIntervalMicroSeconds(0);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   426
	iRecorder->SetPosition(*iBeginning);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   427
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   428
	TRAPD( errorCode, iRecorder->CropL() );
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   429
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   430
	if ( iError != KErrNone ||
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   431
		 iRecorder->State() != CMdaAudioRecorderUtility::EOpen ||
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   432
		 errorCode != KErrNone )
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   433
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   434
		 INFO_PRINTF3( _L("Failed after Crop in preamble: (iError, errorCode)  %x, %x"), iError, errorCode );
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   435
		 verdict = EInconclusive;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   436
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   437
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   438
	return verdict;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   439
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   440
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   441
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   442
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   443
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   444
 * Test step Postamble.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   445
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   446
 * @xxxx
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   447
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   448
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   449
enum TVerdict CTestStepRecorderRecordWav::DoTestStepPostambleL(void)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   450
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   451
	//delete the output file
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   452
	CFileMan* fileMan;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   453
	iFs.Connect();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   454
	fileMan = CFileMan::NewL(iFs);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   455
	fileMan->Delete(iFileName);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   456
	iFs.Close();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   457
	delete fileMan;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   458
	fileMan = NULL;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   459
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   460
	delete iRecorder;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   461
	iRecorder = NULL;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   462
	//[ Destroy the scheduler ]
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   463
	return CTestStepUnitMMFAudClient::DoTestStepPostambleL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   464
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   465
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   466
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   467
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   468
 * Callback Handle.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   469
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   470
 * @xxxx
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   471
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   472
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   473
void CTestStepRecorderRecordWav::MoscoStateChangeEvent(CBase* aObject,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   474
														  TInt /*aPreviousState*/,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   475
														  TInt /*aCurrentState*/,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   476
														  TInt aErrorCode)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   477
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   478
	if (aObject != REINTERPRET_CAST(CBase*, KTestPointerValue))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   479
		iError = KErrArgument;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   480
	else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   481
		iError = aErrorCode;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   482
	CActiveScheduler::Stop();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   483
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   484
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   485
// this can return a TBool hasPlayed to prove that it has played
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   486
// but the EPlaying state seems to get preserved for some reason...
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   487
void CTestStepRecorderRecordWav::RecordAndStartSchedulerL()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   488
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   489
	iRecorder->RecordL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   490
	CActiveScheduler::Start();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   491
	// record 2 secs, ...probably silence
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   492
	User::After(2000000);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   493
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   494
	if (iRecorder->State() == CMdaAudioRecorderUtility::ERecording)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   495
		iHasRecorded = ETrue;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   496
	iRecorder->Stop();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   497
	User::LeaveIfError(iError);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   498
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   499
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   500
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   501
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   502
 * Do the test step.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   503
 * Each test step must supply an implementation for DoTestStepL.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   504
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   505
 * @return	"TVerdict"
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   506
 *			The result of the test step
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   507
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   508
 * @xxxx
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   509
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   510
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   511
TVerdict CTestStepRecorderRecordWav::DoTestStepL()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   512
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   513
	iTestStepResult = EPass;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   514
    TInt err       = KErrNone;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   515
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   516
	TRAP( err, RecordAndStartSchedulerL() );
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   517
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   518
	// check result
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   519
	if (iError != KErrNone ||
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   520
		err != KErrNone ||
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   521
		!iHasRecorded ||
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   522
		iRecorder->State() != CMdaAudioRecorderUtility::EOpen)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   523
		return EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   524
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   525
	iHasRecorded = EFalse;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   526
	iRecorder->Close();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   527
	delete iRecorder;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   528
	iRecorder = NULL;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   529
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   530
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   531
	INFO_PRINTF1(_L("finished with this test step"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   532
	// test steps return a result
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   533
	return iTestStepResult;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   534
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   535
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   536
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   537
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   538
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   539
*
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   540
* CTestStepRecorderRecordAu
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   541
*
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   542
*/
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   543
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   544
CTestStepRecorderRecordAu::CTestStepRecorderRecordAu()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   545
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   546
	// store the name of this test case
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   547
	// this is the name that is used by the script file
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   548
	iTestStepName = _L("MM-MMF-ACLNT-U-0270-HP");
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   549
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   550
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   551
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   552
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   553
 * Static constructor for CTestStepRecorderRecordAu.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   554
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   555
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   556
 * @return	"CTestStepRecorderRecordAu*"
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   557
 *			The constructed CTestStepRecorderRecordAu
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   558
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   559
 * @xxxx
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   560
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   561
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   562
CTestStepRecorderRecordAu* CTestStepRecorderRecordAu::NewL()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   563
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   564
	CTestStepRecorderRecordAu* self = new(ELeave) CTestStepRecorderRecordAu();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   565
	return self;
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
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   570
 * Test step Preamble.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   571
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   572
 * @xxxx
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   573
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   574
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   575
enum TVerdict CTestStepRecorderRecordAu::DoTestStepPreambleL(void)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   576
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   577
	 enum TVerdict verdict = EPass;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   578
	 // this installs the scheduler
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   579
	 verdict = CTestStepUnitMMFAudClient::DoTestStepPreambleL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   580
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   581
	// Printing to the console and log file
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   582
	INFO_PRINTF1(_L("MM-MMF-ACLNT-U-0270-HP"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   583
	INFO_PRINTF1(_L("this is a test of CMdaAudioRecorderUtility::RecordL with non existent wav file"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   584
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   585
	// set the file name to something weird
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   586
    iFileName.Set( _L("c:\\szhgefdsfe.au"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   587
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   588
	//[ ensure the file does not exist]
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   589
	CFileMan* fileMan;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   590
	iFs.Connect();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   591
	fileMan = CFileMan::NewL(iFs);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   592
	fileMan->Delete(iFileName);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   593
	iFs.Close();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   594
	delete fileMan;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   595
	fileMan = NULL;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   596
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   597
	if ( (iRecorder = CMMFMdaAudioRecorderUtility::NewL(*this)) == NULL )
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   598
		verdict = EInconclusive;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   599
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   600
	if (SetAudRecorderParent(iRecorder, REINTERPRET_CAST(CMdaAudioRecorderUtility*, KTestPointerValue)) != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   601
		return EFail; // check value in MoscoStateChangeEvent
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   602
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   603
	// open an existing file to record and crop all its contents if any
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   604
	iRecorder->OpenFileL(iFileName);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   605
	CActiveScheduler::Start();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   606
	if (iError)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   607
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   608
		INFO_PRINTF2(_L("open returned %d"), iError);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   609
		return EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   610
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   611
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   612
	if (iError != KErrNone ||
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   613
		iRecorder->State() != CMdaAudioRecorderUtility::EOpen)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   614
		return EInconclusive;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   615
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   616
	iRecorder->SetGain(iRecorder->MaxGain()/2);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   617
	iBeginning = new TTimeIntervalMicroSeconds(0);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   618
	iRecorder->SetPosition(*iBeginning);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   619
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   620
	iRecorder->CropL(); //debug code remove
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   621
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   622
	TRAPD( errorCode, iRecorder->CropL() );
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   623
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   624
	if ( iError != KErrNone ||
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   625
		 iRecorder->State() != CMdaAudioRecorderUtility::EOpen ||
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   626
		 errorCode != KErrNone )
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   627
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   628
	    INFO_PRINTF3(_L("Test Failed after Crop operation in preamble: (iError, errorCode) (%X, %X)"),iError, errorCode );
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   629
		verdict = EInconclusive;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   630
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   631
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   632
	return verdict;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   633
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   634
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   635
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   636
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   637
CTestStepRecorderRecordRaw::CTestStepRecorderRecordRaw()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   638
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   639
	// store the name of this test case
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   640
	// this is the name that is used by the script file
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   641
	iTestStepName = _L("MM-MMF-ACLNT-U-0271-CP");
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   642
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   643
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   644
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   645
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   646
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   647
 * Test step Preamble.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   648
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   649
 * @xxxx
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   650
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   651
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   652
enum TVerdict CTestStepRecorderRecordRaw::DoTestStepPreambleL(void)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   653
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   654
	 enum TVerdict verdict = EPass;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   655
	 // this installs the scheduler
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   656
	 verdict = CTestStepUnitMMFAudClient::DoTestStepPreambleL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   657
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   658
	// Printing to the console and log file
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   659
	INFO_PRINTF1(_L("MM-MMF-ACLNT-U-0271-CP"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   660
	INFO_PRINTF1(_L("this is a test of CMdaAudioRecorderUtility::RecordL with non existent raw file"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   661
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   662
	// set the file name to something weird
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   663
    iFileName.Set( _L("c:\\szhgefdsfe.raw"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   664
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   665
	//[ ensure the file does not exist]
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   666
	CFileMan* fileMan;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   667
	iFs.Connect();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   668
	fileMan = CFileMan::NewL(iFs);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   669
	fileMan->Delete(iFileName);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   670
	iFs.Close();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   671
	delete fileMan;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   672
	fileMan = NULL;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   673
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   674
	if ( (iRecorder = CMMFMdaAudioRecorderUtility::NewL(*this)) == NULL )
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   675
		verdict = EInconclusive;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   676
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   677
	if (SetAudRecorderParent(iRecorder, REINTERPRET_CAST(CMdaAudioRecorderUtility*, KTestPointerValue)) != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   678
		return EFail; // check value in MoscoStateChangeEvent
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   679
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   680
	// open an existing file to record and crop all its contents if any
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   681
	iRecorder->OpenFileL(iFileName);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   682
	CActiveScheduler::Start();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   683
	if (iError)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   684
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   685
		INFO_PRINTF2(_L("open returned %d"), iError);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   686
		return EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   687
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   688
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   689
	if (iError != KErrNone ||
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   690
		iRecorder->State() != CMdaAudioRecorderUtility::EOpen)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   691
		return EInconclusive;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   692
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   693
	iRecorder->SetGain(iRecorder->MaxGain()/2);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   694
	iBeginning = new TTimeIntervalMicroSeconds(0);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   695
	iRecorder->SetPosition(*iBeginning);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   696
	TRAPD( errorCode, iRecorder->CropL())
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   697
	if ( iError != KErrNone ||
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   698
		 iRecorder->State() != CMdaAudioRecorderUtility::EOpen ||
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   699
		 errorCode != KErrNone )
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   700
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   701
		INFO_PRINTF3(_L("Test Failed after Crop operation in preamble: (iError, errorCode)(%X, %X)"),iError, errorCode );
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   702
		verdict = EInconclusive;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   703
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   704
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   705
	return verdict;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   706
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   707
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   708
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   709
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   710
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   711
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   712
 * Static constructor for CTestStepRecorderRecordAu.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   713
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   714
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   715
 * @return	"CTestStepRecorderRecordRaw*"
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   716
 *			The constructed CTestStepRecorderRecordRaw
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   717
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   718
 * @xxxx
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   719
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   720
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   721
CTestStepRecorderRecordRaw* CTestStepRecorderRecordRaw::NewL()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   722
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   723
	CTestStepRecorderRecordRaw* self = new(ELeave) CTestStepRecorderRecordRaw;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   724
	return self;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   725
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   726
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   727
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   728
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   729
*
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   730
* CTestStepRecorderRecordWavGsm
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   731
*/
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   732
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   733
CTestStepRecorderRecordWavGsm::CTestStepRecorderRecordWavGsm() 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   734
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   735
	// store the name of this test case
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   736
	// this is the name that is used by the script file
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   737
	iTestStepName = _L("MM-MMF-ACLNT-U-0275-HP");
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   738
	}
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
 * Static constructor for CTestStepRecorderRecordWavGsm.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   743
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   744
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   745
 * @return	"CTestStepRecorderRecordWavGsm*"
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   746
 *			The constructed CTestStepRecorderRecordWavGsm
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   747
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   748
 * @xxxx
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   749
 * 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   750
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   751
CTestStepRecorderRecordWavGsm* CTestStepRecorderRecordWavGsm::NewL()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   752
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   753
	CTestStepRecorderRecordWavGsm* self = new(ELeave) CTestStepRecorderRecordWavGsm();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   754
	return self;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   755
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   756
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   757
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   758
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   759
 * Test step Preamble.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   760
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   761
 * @xxxx
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   762
 * 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   763
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   764
enum TVerdict CTestStepRecorderRecordWavGsm::DoTestStepPreambleL(void)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   765
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   766
	 enum TVerdict verdict = EPass;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   767
	 // this installs the scheduler
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   768
	 verdict = CTestStepUnitMMFAudClient::DoTestStepPreambleL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   769
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   770
	// Printing to the console and log file
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   771
	INFO_PRINTF1(_L("MM-MMF-ACLNT-U-0275-HP"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   772
	INFO_PRINTF1(_L("this is a test of CMdaAudioRecorderUtility::RecordL with non existent wav Gsm file"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   773
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   774
	// set the file name to something weird
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   775
    iFileName.Set( _L("c:\\asmeraGSM610.wav"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   776
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   777
	//[ ensure the file does not exist]
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   778
	CFileMan* fileMan;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   779
	iFs.Connect();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   780
	fileMan = CFileMan::NewL(iFs);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   781
	fileMan->Delete(iFileName);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   782
	iFs.Close();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   783
	delete fileMan;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   784
	fileMan = NULL;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   785
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   786
	if ( (iRecorder = CMMFMdaAudioRecorderUtility::NewL(*this)) == NULL )
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   787
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   788
		verdict = EInconclusive;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   789
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   790
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   791
	TInt result = SetAudRecorderParent(iRecorder, REINTERPRET_CAST(CMdaAudioRecorderUtility*, KTestPointerValue));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   792
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   793
	if (result != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   794
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   795
		INFO_PRINTF2(_L("SetAudRecorderParent returned %d"), result);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   796
		return EFail; // check value in MoscoStateChangeEvent
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   797
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   798
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   799
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   800
	// open an existing file to record and crop all its contents if any
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   801
	TRAPD( errorCode, iRecorder->OpenFileL(iFileName,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   802
						 				   TUid::Uid(KMmfUidControllerAudio),
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   803
										   TUid::Null(),
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   804
										   TUid::Uid(KMmfUidFormatWAVWrite),
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   805
										   TFourCC(KMMFFourCCCodeGSM610)) );
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   806
	CActiveScheduler::Start(); 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   807
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   808
	if (iError)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   809
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   810
		INFO_PRINTF2(_L("open returned %d"), iError);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   811
		return EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   812
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   813
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   814
	if (iError != KErrNone ||
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   815
		iRecorder->State() != CMdaAudioRecorderUtility::EOpen)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   816
		return EInconclusive;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   817
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   818
	iRecorder->SetGain(iRecorder->MaxGain()/2);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   819
	iBeginning = new TTimeIntervalMicroSeconds(0);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   820
	iRecorder->SetPosition(*iBeginning);	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   821
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   822
	if ( errorCode != KErrNone || iError != KErrNone || iRecorder->State() != CMdaAudioRecorderUtility::EOpen )
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   823
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   824
	    INFO_PRINTF3(_L("Test Failed after open operation in preamble: (iError, errorCode) (%d, %d)"),iError, errorCode );
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   825
		verdict = EInconclusive;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   826
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   827
		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   828
	return verdict;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   829
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   830
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   831
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   832
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   833
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   834
 * Do the test step.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   835
 * Each test step must supply an implementation for DoTestStepL.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   836
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   837
 * @return	"TVerdict"
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   838
 *			The result of the test step
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   839
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   840
 * @xxxx
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   841
 * 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   842
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   843
TVerdict CTestStepRecorderRecordWavGsm::DoTestStepL()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   844
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   845
	iTestStepResult = EPass;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   846
    TInt err       = KErrNone;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   847
	TInt count;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   848
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   849
	for (count = 0; count < 3; count++)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   850
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   851
		iHasRecorded = EFalse;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   852
		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   853
		TRAP( err, iRecorder->RecordL() );
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   854
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   855
		User::After(KTestRecordTime);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   856
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   857
		if (iRecorder->State() == CMdaAudioRecorderUtility::ERecording)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   858
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   859
			iHasRecorded = ETrue;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   860
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   861
			
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   862
		iRecorder->Stop();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   863
		CActiveScheduler::Start();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   864
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   865
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   866
	TInt recordedDuration;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   867
	TInt expectedDuration;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   868
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   869
	recordedDuration = iRecorder->Duration().Int64() + (KTestRecordTimeTolerance * count);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   870
	expectedDuration = KTestRecordTime * count;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   871
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   872
	if ( iHasRecorded && (recordedDuration < expectedDuration) )
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   873
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   874
		INFO_PRINTF4(_L("Test failed Recorded: %d and Expected: %d duration mismatch. iHasRecorded %d"),
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   875
					     recordedDuration, expectedDuration, iHasRecorded);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   876
		return EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   877
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   878
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   879
	// check result
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   880
	if (iError != KErrNone || err != KErrNone || !iHasRecorded ||
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   881
		iRecorder->State() != CMdaAudioRecorderUtility::EOpen)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   882
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   883
		INFO_PRINTF3(_L("Test Failed to record: (iError, errorCode) (%d, %d)"),iError, err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   884
		return EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   885
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   886
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   887
	iHasRecorded = EFalse;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   888
	iRecorder->Close();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   889
	delete iRecorder;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   890
	iRecorder = NULL;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   891
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   892
	INFO_PRINTF1(_L("finished with this test step"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   893
	// test steps return a result
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   894
	return iTestStepResult;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   895
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   896
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   897
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   898
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   899
*
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   900
* CTestStepRecorderRecordWavGsmFail
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   901
*/
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   902
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   903
CTestStepRecorderRecordWavGsmFail::CTestStepRecorderRecordWavGsmFail() 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   904
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   905
	// store the name of this test case
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   906
	// this is the name that is used by the script file
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   907
	iTestStepName = _L("MM-MMF-ACLNT-U-0276-HP");
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   908
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   909
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   910
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   911
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   912
 * Static constructor for CTestStepRecorderRecordWavGsmFail.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   913
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   914
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   915
 * @return	"CTestStepRecorderRecordWavGsmFail*"
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   916
 *			The constructed CTestStepRecorderRecordWavGsmFail
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   917
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   918
 * @xxxx
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   919
 * 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   920
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   921
CTestStepRecorderRecordWavGsmFail* CTestStepRecorderRecordWavGsmFail::NewL()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   922
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   923
	CTestStepRecorderRecordWavGsmFail* self = new(ELeave) CTestStepRecorderRecordWavGsmFail();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   924
	return self;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   925
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   926
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   927
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   928
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   929
 * Test step Preamble.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   930
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   931
 * @xxxx
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   932
 * 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   933
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   934
enum TVerdict CTestStepRecorderRecordWavGsmFail::DoTestStepPreambleL(void)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   935
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   936
	 enum TVerdict verdict = EPass;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   937
	 // this installs the scheduler
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   938
	 verdict = CTestStepUnitMMFAudClient::DoTestStepPreambleL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   939
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   940
	// Printing to the console and log file
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   941
	INFO_PRINTF1(_L("MM-MMF-ACLNT-U-0276-HP"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   942
	INFO_PRINTF1(_L("This is a test to append to a corrupted wav Gsm file"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   943
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   944
	// set the file name
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   945
    _LIT(KSoundFile, "c:\\mm\\mmf\\testfiles\\aclnt\\corruptedGsm610Mono8khz.wav");
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   946
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   947
	if ( (iRecorder = CMMFMdaAudioRecorderUtility::NewL(*this)) == NULL )
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   948
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   949
		verdict = EInconclusive;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   950
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   951
	if (SetAudRecorderParent(iRecorder, REINTERPRET_CAST(CMdaAudioRecorderUtility*, KTestPointerValue)) != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   952
		return EFail; // check value in MoscoStateChangeEvent
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   953
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   954
	// open an existing file to record and crop all its contents if any
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   955
	iRecorder->OpenFileL(KSoundFile);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   956
	CActiveScheduler::Start();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   957
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   958
	if (iError)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   959
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   960
		INFO_PRINTF2(_L("open returned %d"), iError);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   961
		return EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   962
		}	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   963
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   964
	if (iError != KErrNone || iRecorder->State() != CMdaAudioRecorderUtility::EOpen)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   965
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   966
		return EInconclusive;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   967
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   968
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   969
	TRAPD(errorCode, iRecorder->PlayL());
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   970
	CActiveScheduler::Start();					// state change call back
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   971
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   972
	if (errorCode != KErrNone || iError == KErrCorrupt || (iRecorder->State() != CMdaAudioRecorderUtility::EPlaying) )
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   973
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   974
		INFO_PRINTF4(_L("Test Failed attempting to paly: (iError, errorCode, State) (%d, %d, %d)"),
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   975
					iError, errorCode, iRecorder->State() );		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   976
		return EFail;	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   977
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   978
		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   979
	CActiveScheduler::Start();					// PlayL()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   980
	iRecorder->Stop();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   981
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   982
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   983
	// open an existing file to record and crop all its contents if any
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   984
	iRecorder->OpenFileL(KSoundFile,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   985
						 TUid::Uid(KMmfUidControllerAudio),
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   986
						 TUid::Null(),
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   987
						 TUid::Uid(KMmfUidFormatWAVWrite),
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   988
						 TFourCC(KMMFFourCCCodeGSM610) );
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   989
	CActiveScheduler::Start();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   990
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   991
	if (iError)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   992
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   993
		INFO_PRINTF2(_L("open returned %d"), iError);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   994
		return EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   995
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   996
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   997
	if ( errorCode != KErrNone || iError != KErrNone || iRecorder->State() != CMdaAudioRecorderUtility::EOpen)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   998
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   999
	    INFO_PRINTF3(_L("Test Failed in CTestStepRecorderRecordWavGsmFail::DoTestStepPreambleL: (iError, errorCode) (%d, %d)"),iError, errorCode );
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1000
		verdict = EInconclusive;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1001
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1002
		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1003
	return verdict;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1004
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1005
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1006
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1007
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1008
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1009
 * Do the test step.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1010
 * Each test step must supply an implementation for DoTestStepL.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1011
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1012
 * @return	"TVerdict"
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1013
 *			The result of the test step
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1014
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1015
 * @xxxx
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1016
 * 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1017
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1018
TVerdict CTestStepRecorderRecordWavGsmFail::DoTestStepL()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1019
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1020
	iTestStepResult = EPass;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1021
    TInt err       = KErrNone;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1022
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1023
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1024
	TRAP( err, iRecorder->RecordL() );
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1025
	CActiveScheduler::Start();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1026
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1027
	iRecorder->Stop();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1028
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1029
	if (iError == KErrCorrupt)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1030
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1031
		iError = KErrNone;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1032
		iTestStepResult = EPass;	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1033
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1034
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1035
	// check result
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1036
	if (iError != KErrNone ||
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1037
		err != KErrNone ||
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1038
		iRecorder->State() != CMdaAudioRecorderUtility::EOpen)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1039
		return EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1040
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1041
	iHasRecorded = EFalse;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1042
	iRecorder->Close();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1043
	delete iRecorder;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1044
	iRecorder = NULL;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1045
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1046
	INFO_PRINTF1(_L("finished with this test step"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1047
	// test steps return a result
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1048
	return iTestStepResult;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1049
	}
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
 * Static constructor for CTestStepRecorderRecordPause.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1054
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1055
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1056
 * @return	"CTestStepRecorderRecordPause*"
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1057
 *			The constructed CTestStepRecorderRecordPause
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1058
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1059
 * @xxxx
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1060
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1061
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1062
CTestStepRecorderRecordPause* CTestStepRecorderRecordPause::NewL(const TDesC& aTestName)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1063
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1064
	CTestStepRecorderRecordPause* self = new(ELeave) CTestStepRecorderRecordPause(aTestName);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1065
	return self;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1066
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1067
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1068
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1069
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1070
 * Test step constructor.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1071
 * Each test step initialises its own name.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1072
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1073
 * @xxxx
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1074
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1075
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1076
CTestStepRecorderRecordPause::CTestStepRecorderRecordPause(const TDesC& aTestName) : iError(0), iHasRecorded(EFalse)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1077
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1078
	// store the name of this test case
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1079
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1080
	// this is the name that is used by the script file
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1081
	//iTestStepName = _L("MM-MMF-ACLNT-U-0210-CP");
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1082
	//iTestStepName = _L("MM-MMF-ACLNT-U-0211-CP");
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1083
	iTestStepName = aTestName;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1084
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1085
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1086
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1087
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1088
 * Test step destructor.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1089
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1090
 * @xxxx
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1091
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1092
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1093
CTestStepRecorderRecordPause::~CTestStepRecorderRecordPause()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1094
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1095
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1096
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1097
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1098
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1099
 * Test step Preamble.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1100
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1101
 * @xxxx
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1102
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1103
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1104
enum TVerdict CTestStepRecorderRecordPause::DoTestStepPreambleL(void)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1105
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1106
	 enum TVerdict verdict = EPass;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1107
	 // this installs the scheduler
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1108
	 verdict = CTestStepUnitMMFAudClient::DoTestStepPreambleL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1109
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1110
	// Printing to the console and log file
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1111
	INFO_PRINTF1(_L("this is a test of CMdaAudioRecorderUtility::RecordL"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1112
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1113
	_LIT(K210Test,"MM-MMF-ACLNT-U-0210-CP");
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1114
	_LIT(K211Test,"MM-MMF-ACLNT-U-0211-CP");    //  Test step added for DEF140670
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1115
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1116
	if(iTestStepName == K210Test)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1117
	    {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1118
	    if(!GetStringFromConfig(_L("SectionOne"), _L("AudioFNameToRecord"), iFileName))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1119
            {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1120
            //INFO_PRINTF2(_L("file name %s not found..."), fileptr);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1121
            return EInconclusive;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1122
            }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1123
	    }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1124
	else if(iTestStepName == K211Test)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1125
	    {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1126
       if(!GetStringFromConfig(_L("SectionOne"), _L("AudioFNameToRecord1"), iFileName))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1127
            {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1128
            return EInconclusive;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1129
            }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1130
	    }	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1131
	if(!GetStringFromConfig(_L("SectionOne"), _L("AudioFNameToRecord2"), iFileName2))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1132
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1133
		//INFO_PRINTF2(_L("file name %s not found..."), fileptr);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1134
		return EInconclusive;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1135
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1136
	if(!GetStringFromConfig(_L("SectionOne"), _L("AudioFNameToRecord3"), iFileName3))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1137
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1138
		//INFO_PRINTF2(_L("file name %s not found..."), fileptr);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1139
		return EInconclusive;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1140
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1141
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1142
	if ( (iRecorder = CMMFMdaAudioRecorderUtility::NewL(*this)) == NULL )
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1143
		verdict = EInconclusive;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1144
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1145
	if (SetAudRecorderParent(iRecorder, REINTERPRET_CAST(CMdaAudioRecorderUtility*, KTestPointerValue)) != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1146
		return EFail; // check value in MoscoStateChangeEvent
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1147
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1148
	// open an existing file to record and crop all its contents if any
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1149
	iRecorder->OpenFileL(iFileName);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1150
	CActiveScheduler::Start();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1151
	if (iError)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1152
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1153
		INFO_PRINTF2(_L("open returned %d"), iError);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1154
		return EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1155
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1156
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1157
	if (iError != KErrNone ||
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1158
		iRecorder->State() != CMdaAudioRecorderUtility::EOpen)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1159
		return EInconclusive;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1160
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1161
	iRecorder->SetGain(iRecorder->MaxGain()/2);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1162
	iBeginning = new TTimeIntervalMicroSeconds(0);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1163
	iRecorder->SetPosition(*iBeginning);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1164
	iRecorder->CropL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1165
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1166
	if ( iError != KErrNone ||
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1167
		 iRecorder->State() != CMdaAudioRecorderUtility::EOpen)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1168
		verdict = EInconclusive;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1169
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1170
	return verdict;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1171
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1172
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1173
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1174
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1175
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1176
 * Test step Postamble.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1177
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1178
 * @xxxx
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1179
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1180
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1181
enum TVerdict CTestStepRecorderRecordPause::DoTestStepPostambleL(void)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1182
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1183
	//delete the output file
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1184
	CFileMan* fileMan;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1185
	iFs.Connect();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1186
	fileMan = CFileMan::NewL(iFs);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1187
	fileMan->Delete(iFileName);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1188
	iFs.Close();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1189
	delete fileMan;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1190
	fileMan = NULL;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1191
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1192
	delete iRecorder;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1193
	iRecorder = NULL;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1194
	//[ Destroy the scheduler ]
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1195
	return CTestStepUnitMMFAudClient::DoTestStepPostambleL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1196
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1197
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1198
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1199
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1200
 * Callback Handle.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1201
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1202
 * @xxxx
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1203
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1204
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1205
void CTestStepRecorderRecordPause::MoscoStateChangeEvent(CBase* aObject,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1206
														  TInt /*aPreviousState*/,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1207
														  TInt /*aCurrentState*/,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1208
														  TInt aErrorCode)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1209
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1210
	if (aObject != REINTERPRET_CAST(CBase*, KTestPointerValue))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1211
		iError = KErrArgument;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1212
	else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1213
		iError = aErrorCode;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1214
	CActiveScheduler::Stop();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1215
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1216
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1217
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1218
// this can return a TBool hasPlayed to prove that it has played
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1219
// but the EPlaying state seems to get preserved for some reason...
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1220
void CTestStepRecorderRecordPause::RecordAndStartSchedulerL()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1221
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1222
	iRecorder->RecordL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1223
	CActiveScheduler::Start();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1224
	// record 2 secs, ...probably silence
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1225
	User::After(10000000);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1226
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1227
	// Stop the recording
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1228
	iRecorder->Stop();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1229
	User::After(2000000);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1230
	iRecorder->RecordL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1231
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1232
	User::After(10000000);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1233
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1234
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1235
	if (iRecorder->State() == CMdaAudioRecorderUtility::ERecording)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1236
		iHasRecorded = ETrue;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1237
	iRecorder->Stop();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1238
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1239
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1240
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1241
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1242
 * Do the test step.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1243
 * Each test step must supply an implementation for DoTestStepL.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1244
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1245
 * @return	"TVerdict"
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1246
 *			The result of the test step
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1247
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1248
 * @xxxx
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1249
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1250
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1251
TVerdict CTestStepRecorderRecordPause::DoTestStepL()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1252
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1253
	iTestStepResult = EPass;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1254
    TInt err       = KErrNone;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1255
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1256
	TRAP( err, RecordAndStartSchedulerL() );
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1257
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1258
	// check result
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1259
	if (iError != KErrNone ||
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1260
		err != KErrNone ||
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1261
		!iHasRecorded ||
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1262
		iRecorder->State() != CMdaAudioRecorderUtility::EOpen)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1263
		return EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1264
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1265
	iHasRecorded = EFalse;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1266
	iRecorder->Close();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1267
	delete iRecorder;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1268
	iRecorder = NULL;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1269
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1270
	/*
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1271
	// record AU file //
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1272
	if ( (iRecorder = CMMFMdaAudioRecorderUtility::NewL(*this)) == NULL )
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1273
		return EInconclusive;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1274
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1275
	// open an existing file to record and crop all its contents if any
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1276
	iRecorder->OpenFileL(iFileName2);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1277
	CActiveScheduler::Start();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1278
	if (iRecorder->State() != CMdaAudioRecorderUtility::EOpen)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1279
		return EInconclusive;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1280
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1281
	iRecorder->SetGain(iRecorder->MaxGain()*.75);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1282
	iRecorder->SetPosition(*iBeginning);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1283
	iRecorder->CropL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1284
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1285
	if ( iError != KErrNone ||
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1286
		 iRecorder->State() != CMdaAudioRecorderUtility::EOpen)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1287
		return EInconclusive;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1288
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1289
	TRAP( err, RecordAndStartSchedulerL() );
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1290
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1291
	// check result
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1292
	if (iError != KErrNone ||
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1293
		err != KErrNone ||
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1294
		!iHasRecorded ||
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1295
		iRecorder->State() != CMdaAudioRecorderUtility::EOpen)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1296
		return EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1297
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1298
	iHasRecorded = EFalse;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1299
	iRecorder->Close();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1300
	delete iRecorder;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1301
	iRecorder = NULL;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1302
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1303
	// record RAW file //
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1304
	if ( (iRecorder = CMMFMdaAudioRecorderUtility::NewL(*this)) == NULL )
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1305
		return EInconclusive;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1306
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1307
	// open an existing file to record and crop all its contents if any
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1308
	iRecorder->OpenFileL(iFileName3);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1309
	CActiveScheduler::Start();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1310
	if (iRecorder->State() != CMdaAudioRecorderUtility::EOpen)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1311
		return EInconclusive;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1312
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1313
	iRecorder->SetGain(iRecorder->MaxGain()*.75);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1314
	iRecorder->SetPosition(*iBeginning);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1315
	iRecorder->CropL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1316
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1317
	if ( iError != KErrNone ||
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1318
		 iRecorder->State() != CMdaAudioRecorderUtility::EOpen)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1319
		return EInconclusive;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1320
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1321
	TRAP( err, RecordAndStartSchedulerL() );
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1322
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1323
	// check result
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1324
	if (iError != KErrNone ||
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1325
		err != KErrNone ||
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1326
		!iHasRecorded ||
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1327
		iRecorder->State() != CMdaAudioRecorderUtility::EOpen)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1328
		return EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1329
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1330
	iHasRecorded = EFalse;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1331
	iRecorder->Close();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1332
	delete iRecorder;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1333
	iRecorder = NULL;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1334
	*/
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1335
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1336
	INFO_PRINTF1(_L("finished with this test step"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1337
	// test steps return a result
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1338
	return iTestStepResult;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1339
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1340
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1341
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1342
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1343
 * Static constructor for CTestStepRecorderError.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1344
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1345
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1346
 * @return	"CTestStepRecorderError*"
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1347
 *			The constructed CTestStepRecorderError
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1348
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1349
 * @xxxx
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1350
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1351
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1352
CTestStepRecorderError* CTestStepRecorderError::NewL()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1353
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1354
	CTestStepRecorderError* self = new(ELeave) CTestStepRecorderError;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1355
	CleanupStack::PushL(self);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1356
	self->ConstructL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1357
	CleanupStack::Pop(); // self
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1358
	return self;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1359
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1360
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1361
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1362
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1363
 * Static constructor for CTestStepRecorderError.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1364
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1365
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1366
 * @return	"CTestStepRecorderError*"
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1367
 *			The constructed CTestStepRecorderError
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1368
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1369
 * @xxxx
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1370
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1371
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1372
void CTestStepRecorderError::ConstructL()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1373
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1374
     //[ lets initialise the dispatch table
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1375
	 //with a default method for now ]
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1376
	ASSERT( TestStateTerminal < KMaxMethods );
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1377
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1378
	 iStates[TestStateIdle]		= &CTestStepRecorderError::IdleStateChangeEventL;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1379
	 iStates[TestStateOne]		= &CTestStepRecorderError::StateOneChangeEventL;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1380
	 iStates[TestStateTwo]		= &CTestStepRecorderError::StateTwoChangeEventL;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1381
	 iStates[TestStateThree]	= &CTestStepRecorderError::StateThreeChangeEventL;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1382
	 iStates[TestStateFour]		= &CTestStepRecorderError::StateFourChangeEventL;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1383
	 iStates[TestStateTerminal]	= &CTestStepRecorderError::StateTerminalChangeEventL;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1384
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1385
	 //[ set the initial state to idle ]
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1386
	 iTestState = TestStateIdle;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1387
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1388
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1389
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1390
 * Enters here as iRecorder goes from ENotReady to EOpen
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1391
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1392
 * Set the priority of iRecorder to EMdaPriorityMin
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1393
 * Set the parent of iRecorderHighPriority to be KTestPointerRecorder2 so we can distinguish state changes
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1394
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1395
 * Next state TestStateOne
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1396
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1397
void CTestStepRecorderError::IdleStateChangeEventL(CBase* aObject,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1398
												  TInt aPreviousState,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1399
												  TInt aCurrentState,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1400
												  TInt aErrorCode )
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1401
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1402
	//[ precondition the state is valid ]
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1403
	ASSERT(IsValidState() );
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1404
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1405
	//This is state change from iRecorder
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1406
	if(REINTERPRET_CAST(void*,aObject) != REINTERPRET_CAST(void*,KTestPointerRecorder1))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1407
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1408
		INFO_PRINTF2( _L("IdleStateChangeEventL error from wrong object 0x%x"), aObject);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1409
		iTestStepResult = EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1410
		CActiveScheduler::Stop();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1411
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1412
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1413
	//Correct state change
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1414
	if((aPreviousState != CMdaAudioClipUtility::ENotReady) ||
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1415
		(aCurrentState != CMdaAudioClipUtility::EOpen))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1416
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1417
		INFO_PRINTF1( _L("IdleStateChangeEventL incorrect state change"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1418
		iTestStepResult = EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1419
		CActiveScheduler::Stop();
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
	//[fail if there was an error]
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1424
	if(aErrorCode != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1425
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1426
		INFO_PRINTF2( _L("IdleStateChangeEventL error %d"),aErrorCode);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1427
		iTestStepResult = EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1428
		CActiveScheduler::Stop();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1429
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1430
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1431
	if(!GetStringFromConfig(_L("SectionOne"), _L("AudioRecord2"), iFileName2))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1432
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1433
		INFO_PRINTF1( _L("IdleStateChangeEventL couldn't get filename from config  AudioRecord2"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1434
		iTestStepResult = EInconclusive;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1435
		CActiveScheduler::Stop();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1436
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1437
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1438
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1439
	if (SetAudRecorderParent(iRecorderHighPriority, REINTERPRET_CAST(CMdaAudioRecorderUtility*,KTestPointerRecorder2 )) != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1440
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1441
		INFO_PRINTF1( _L("IdleStateChangeEventL failed to set parent"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1442
		iTestStepResult = EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1443
		CActiveScheduler::Stop();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1444
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1445
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1446
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1447
	//[ open the second recorder and update state ]
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1448
	// open an existing file to record and crop all its contents if any
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1449
	iRecorderHighPriority->OpenFileL(iFileName2);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1450
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1451
	//[lets do some configuration on the first recorder]
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1452
	iRecorder->SetGain(iRecorder->MaxGain()/2);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1453
	iRecorder->SetPriority( EMdaPriorityMin, EMdaPriorityPreferenceNone );
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1454
	iRecorder->SetPosition(TTimeIntervalMicroSeconds(0));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1455
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1456
	//[ update the state ]
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1457
	TestState newState = TestStateOne;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1458
	SetState( newState );
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1459
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1460
	//[ post condition state is valid ]
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1461
	ASSERT(IsValidState() );
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1462
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1463
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1464
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1465
 * Enters here as iRecorderHighPriority goes from ENotReady to EOpen
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1466
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1467
 * Set the priority of iRecorderHighPriority to EMdaPriorityMax
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1468
 * Start recording to iRecorder
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1469
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1470
 * Next state TestStateTwo
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1471
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1472
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1473
void CTestStepRecorderError::StateOneChangeEventL(CBase* aObject,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1474
												  TInt aPreviousState,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1475
												  TInt aCurrentState,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1476
												  TInt aErrorCode )
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1477
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1478
	//[ precondition state is valid ]
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1479
	ASSERT( IsValidState() );
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1480
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1481
	//[fail if there was an error]
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1482
	if(aErrorCode != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1483
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1484
		INFO_PRINTF2( _L("StateOneChangeEventL error %d"),aErrorCode);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1485
		iTestStepResult = EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1486
		CActiveScheduler::Stop();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1487
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1488
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1489
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1490
	//This is state change from iRecorderHighPriority
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1491
	if(REINTERPRET_CAST(void*,aObject) != REINTERPRET_CAST(void*,KTestPointerRecorder2))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1492
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1493
		INFO_PRINTF2( _L("StateOneChangeEventL error from wrong object 0x%x"), aObject);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1494
		iTestStepResult = EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1495
		CActiveScheduler::Stop();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1496
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1497
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1498
	//Correct state change
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1499
	if((aPreviousState != CMdaAudioClipUtility::ENotReady) ||
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1500
		(aCurrentState != CMdaAudioClipUtility::EOpen))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1501
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1502
		INFO_PRINTF1( _L("StateOneChangeEventL incorrect state change"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1503
		iTestStepResult = EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1504
		CActiveScheduler::Stop();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1505
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1506
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1507
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1508
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1509
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1510
	//[ start recording with recorder 1]
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1511
	iRecorder->RecordL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1512
	User::After(2500000);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1513
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1514
	//[lets do some configuration on the first recorder]
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1515
	iRecorderHighPriority->SetGain(iRecorder->MaxGain()/2);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1516
	iRecorderHighPriority->SetPriority( EMdaPriorityMax, EMdaPriorityPreferenceNone );
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1517
	iRecorderHighPriority->SetPosition(TTimeIntervalMicroSeconds(0));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1518
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1519
	TestState newState = TestStateTwo;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1520
	//[ update the state ]
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1521
	SetState(newState);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1522
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1523
	//[ post condition state is valid ]
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1524
	ASSERT( IsValidState() );
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1525
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1526
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1527
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1528
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1529
 * Enters here as iRecorder goes from EOpen to ERecording
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1530
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1531
 * Start recording to iRecorderHighPriority
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1532
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1533
 * Next state TestStateThree
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1534
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1535
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1536
void CTestStepRecorderError::StateTwoChangeEventL(CBase* aObject,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1537
												  TInt aPreviousState,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1538
												  TInt aCurrentState,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1539
												  TInt aErrorCode )
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1540
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1541
	//[ precondition state is valid ]
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1542
	ASSERT( IsValidState() );
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1543
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1544
	//[fail if there was an error]
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1545
	if(aErrorCode != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1546
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1547
		INFO_PRINTF2( _L("StateTwoChangeEventL error %d"),aErrorCode);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1548
		iTestStepResult = EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1549
		CActiveScheduler::Stop();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1550
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1551
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1552
	//This is state change from iRecorder
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1553
	if(REINTERPRET_CAST(void*,aObject) != REINTERPRET_CAST(void*,KTestPointerRecorder1))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1554
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1555
		INFO_PRINTF2( _L("StateTwoChangeEventL error from wrong object 0x%x"), aObject);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1556
		iTestStepResult = EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1557
		CActiveScheduler::Stop();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1558
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1559
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1560
	//Correct state change
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1561
	if((aPreviousState != CMdaAudioClipUtility::EOpen) ||
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1562
		(aCurrentState != CMdaAudioClipUtility::ERecording))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1563
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1564
		INFO_PRINTF1( _L("StateTwoChangeEventL incorrect state change"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1565
		iTestStepResult = EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1566
		CActiveScheduler::Stop();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1567
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1568
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1569
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1570
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1571
	//[ start recording with recorder 1]
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1572
	iRecorderHighPriority->RecordL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1573
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1574
	//[ update state ]
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1575
	TestState newState = TestStateThree;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1576
	SetState(newState);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1577
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1578
	//[ post condition state is valid ]
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1579
	ASSERT( IsValidState() );
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1580
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1581
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1582
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1583
 * Enters here because of two reasons:-
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1584
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1585
 * 1. iRecorder goes from ERecording to EOpen as it has been thrown off by
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1586
 *    iRecorderHighPriority starting to record
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1587
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1588
 *    aErrorCode == KErrInUse
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1589
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1590
 * 2. iRecorderHighPriority goes from EOpen to ERecording
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1591
 *    aErrorCode == KErrNone
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1592
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1593
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1594
 * Next state TestStateTerminal
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1595
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1596
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1597
void CTestStepRecorderError::StateThreeChangeEventL(CBase* aObject,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1598
												  TInt aPreviousState,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1599
												  TInt aCurrentState,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1600
												  TInt aErrorCode )
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1601
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1602
     //[does nothing for now ]
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1603
	 //[ precondition state is valid ]
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1604
	 ASSERT( IsValidState() );
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1605
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1606
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1607
	 //This is a state change from iRecorder
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1608
	if(REINTERPRET_CAST(void*,aObject) == REINTERPRET_CAST(void*,KTestPointerRecorder1))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1609
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1610
		 if( aErrorCode != KErrInUse )
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1611
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1612
 			INFO_PRINTF2( _L("StateThreeChangeEventL incorrect error received %d"), aErrorCode);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1613
			iTestStepResult = EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1614
			CActiveScheduler::Stop();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1615
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1616
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1617
		//Correct state change
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1618
		if((aPreviousState != CMdaAudioClipUtility::ERecording) ||
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1619
			(aCurrentState != CMdaAudioClipUtility::EOpen))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1620
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1621
			INFO_PRINTF1( _L("StateThreeChangeEventL incorrect state change"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1622
			iTestStepResult = EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1623
			CActiveScheduler::Stop();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1624
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1625
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1626
	//This is a state change from iRecorderHighPriority
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1627
	else if(REINTERPRET_CAST(void*,aObject) == REINTERPRET_CAST(void*,KTestPointerRecorder2))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1628
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1629
		//Correct state change
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1630
		if((aPreviousState != CMdaAudioClipUtility::EOpen) ||
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1631
			(aCurrentState != CMdaAudioClipUtility::ERecording))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1632
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1633
			INFO_PRINTF1( _L("StateThreeChangeEventL incorrect state change"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1634
			iTestStepResult = EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1635
			CActiveScheduler::Stop();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1636
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1637
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1638
	else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1639
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1640
		INFO_PRINTF1( _L("StateThreeChangeEventL state change from unknown object"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1641
		iTestStepResult = EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1642
		CActiveScheduler::Stop();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1643
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1644
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1645
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1646
	 //[Set state]
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1647
	 TestState newState = TestStateTerminal;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1648
	 SetState(newState);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1649
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1650
	//[ post condition state is valid ]
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1651
	ASSERT( IsValidState() );
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1652
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1653
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1654
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1655
 * Un used state
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1656
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1657
 * @xxxx
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1658
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1659
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1660
void CTestStepRecorderError::StateFourChangeEventL(CBase* /*aObject*/,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1661
												  TInt /*aPreviousState*/,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1662
												  TInt /*aCurrentState*/,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1663
												  TInt /*aErrorCode*/ )
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1664
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1665
    //[ precondition state is valid ]
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1666
	ASSERT( IsValidState() );
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1667
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1668
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1669
	//[Update next State]
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1670
	TestState newState = TestStateTerminal;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1671
	SetState(newState);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1672
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1673
	//[ post condition state is valid ]
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1674
	ASSERT( IsValidState() );
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1675
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1676
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1677
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1678
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1679
 * Enters here because of two reasons:-
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1680
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1681
 * 1. iRecorder goes from ERecording to EOpen as it has been thrown off by
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1682
 *    iRecorderHighPriority starting to record
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1683
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1684
 *    aErrorCode == KErrInUse
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1685
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1686
 * 2. iRecorderHighPriority goes from EOpen to ERecording
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1687
 *    aErrorCode == KErrNone
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1688
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1689
 * Which one is the other to that which occured in StateThreeChangeEventL
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1690
 * as there is a possible race condition on which event we receive first
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1691
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1692
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1693
void CTestStepRecorderError::StateTerminalChangeEventL(CBase* aObject,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1694
												  TInt aPreviousState,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1695
												  TInt aCurrentState,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1696
												  TInt aErrorCode )
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1697
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1698
	 //[ pre condition state is valid ]
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1699
	 ASSERT( IsValidState() );
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1700
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1701
	 //This is a state change from iRecorder
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1702
	if(REINTERPRET_CAST(void*,aObject) == REINTERPRET_CAST(void*,KTestPointerRecorder1))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1703
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1704
		 if( aErrorCode != KErrInUse )
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1705
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1706
 			INFO_PRINTF2( _L("StateTerminalChangeEventL incorrect error received %d"), aErrorCode);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1707
			iTestStepResult = EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1708
			CActiveScheduler::Stop();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1709
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1710
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1711
		//Correct state change
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1712
		if((aPreviousState != CMdaAudioClipUtility::ERecording) ||
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1713
			(aCurrentState != CMdaAudioClipUtility::EOpen))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1714
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1715
			INFO_PRINTF1( _L("StateTerminalChangeEventL incorrect state change"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1716
			iTestStepResult = EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1717
			CActiveScheduler::Stop();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1718
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1719
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1720
	//This is a state change from iRecorderHighPriority
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1721
	else if(REINTERPRET_CAST(void*,aObject) == REINTERPRET_CAST(void*,KTestPointerRecorder2))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1722
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1723
		//Correct state change
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1724
		if((aPreviousState != CMdaAudioClipUtility::EOpen) ||
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1725
			(aCurrentState != CMdaAudioClipUtility::ERecording))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1726
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1727
			INFO_PRINTF1( _L("StateTerminalChangeEventL incorrect state change"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1728
			iTestStepResult = EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1729
			CActiveScheduler::Stop();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1730
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1731
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1732
	else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1733
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1734
		INFO_PRINTF1( _L("StateTerminalChangeEventL state change from unknown object"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1735
		iTestStepResult = EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1736
		CActiveScheduler::Stop();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1737
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1738
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1739
	//[ stop recording with recorder 1]
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1740
	INFO_PRINTF1( _L("Stopping iRecorderHighPriority"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1741
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1742
	iRecorderHighPriority->Stop();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1743
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1744
	INFO_PRINTF1( _L("iRecorderHighPriority stopped"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1745
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1746
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1747
	CActiveScheduler::Stop();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1748
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1749
	 //[ post condition state is valid ]
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1750
	 ASSERT( IsValidState() );
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
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1756
 * Test step constructor.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1757
 * Each test step initialises its own name.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1758
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1759
 * @xxxx
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1760
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1761
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1762
void CTestStepRecorderError::PrintState(CBase* aObject,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1763
										TInt aPreviousState,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1764
										TInt aCurrentState,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1765
										TInt aErrorCode )
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1766
{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1767
 INFO_PRINTF6( _L("Object %x aPrevState %d CurrentState %d, ErrorCode %d FsmState %d"), aObject, aPreviousState, aCurrentState, aErrorCode, iTestState );
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1768
}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1769
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1770
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1771
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1772
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1773
 * Test step constructor.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1774
 * Each test step initialises its own name.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1775
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1776
 * @xxxx
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1777
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1778
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1779
TBool CTestStepRecorderError::IsValidState() const
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1780
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1781
	// provide implementation here
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1782
    TBool result = ETrue;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1783
    if( (iTestState < TestStateIdle ) || ( iTestState > TestStateTerminal ) )
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1784
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1785
         result = EFalse;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1786
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1787
	return result;
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
 * Test step constructor.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1793
 * Each test step initialises its own name.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1794
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1795
 * @xxxx
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1796
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1797
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1798
 CTestStepRecorderError::TestState CTestStepRecorderError::GetTestState() const
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1799
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1800
	 return iTestState;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1801
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1802
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1803
 /**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1804
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1805
 * Test step constructor.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1806
 * Each test step initialises its own name.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1807
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1808
 * @xxxx
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1809
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1810
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1811
void CTestStepRecorderError::SetState( CTestStepRecorderError::TestState& aState )
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1812
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1813
	iTestState = aState ;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1814
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1815
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1816
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1817
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1818
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1819
 * Test step constructor.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1820
 * Each test step initialises its own name.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1821
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1822
 * @xxxx
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1823
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1824
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1825
CTestStepRecorderError::CTestStepRecorderError() : iError(0), iHasRecorded(EFalse)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1826
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1827
	// store the name of this test case
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1828
	// this is the name that is used by the script file
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1829
	iTestStepName = _L("MM-MMF-ACLNT-U-0014-CP");
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1830
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1831
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1832
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1833
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1834
 * Test step destructor.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1835
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1836
 * @xxxx
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1837
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1838
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1839
CTestStepRecorderError::~CTestStepRecorderError()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1840
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1841
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1842
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1843
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1844
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1845
 * Test step Preamble.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1846
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1847
 * @xxxx
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1848
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1849
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1850
enum TVerdict CTestStepRecorderError::DoTestStepPreambleL(void)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1851
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1852
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1853
	enum TVerdict verdict = EPass;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1854
	 // this installs the scheduler
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1855
	 verdict = CTestStepUnitMMFAudClient::DoTestStepPreambleL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1856
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1857
	return verdict;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1858
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1859
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1860
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1861
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1862
 * Test step Postamble.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1863
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1864
 * @xxxx
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1865
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1866
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1867
enum TVerdict CTestStepRecorderError::DoTestStepPostambleL(void)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1868
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1869
	//delete the output file
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1870
	CFileMan* fileMan;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1871
	iFs.Connect();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1872
	fileMan = CFileMan::NewL(iFs);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1873
	iFs.Close();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1874
	delete fileMan;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1875
	fileMan = NULL;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1876
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1877
	delete iRecorder;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1878
	iRecorder = NULL;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1879
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1880
	delete iRecorderHighPriority;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1881
	iRecorderHighPriority = NULL;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1882
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1883
	//[ Destroy the scheduler ]
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1884
	return CTestStepUnitMMFAudClient::DoTestStepPostambleL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1885
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1886
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1887
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1888
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1889
 * Callback Handle.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1890
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1891
 * @xxxx
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1892
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1893
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1894
void CTestStepRecorderError::MoscoStateChangeEvent(CBase* aObject,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1895
														  TInt aPreviousState,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1896
														  TInt aCurrentState,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1897
														  TInt aErrorcCode)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1898
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1899
	//[ precondition state is valid ]
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1900
	ASSERT( IsValidState());
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1901
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1902
	//[ print incoming state ]
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1903
	PrintState( aObject, aPreviousState, aCurrentState, aErrorcCode );
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1904
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1905
	INFO_PRINTF2(_L("Dispatching into state %d"), iTestState);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1906
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1907
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1908
	//dispatch the reponse
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1909
    (this->*iStates[iTestState])( aObject, aPreviousState, aCurrentState, aErrorcCode );
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1910
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1911
	//[ post condition state is valid ]
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1912
	ASSERT( IsValidState());
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1913
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1914
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1915
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1916
*
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1917
* IsValidTestState()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1918
*
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1919
*/
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1920
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1921
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1922
// this can return a TBool hasPlayed to prove that it has played
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1923
// but the EPlaying state seems to get preserved for some reason...
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1924
void CTestStepRecorderError::RecordAndStartSchedulerL()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1925
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1926
	//[ This method has been deprecated ]
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1927
     ASSERT(0);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1928
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1929
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1930
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1931
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1932
 * Do the test step.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1933
 * Each test step must supply an implementation for DoTestStepL.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1934
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1935
 * @return	"TVerdict"
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1936
 *			The result of the test step
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1937
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1938
 * @xxxx
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1939
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1940
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1941
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1942
TInt aFunction(TAny* /*aPtr*/)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1943
{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1944
 return 0;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1945
}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1946
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1947
TVerdict CTestStepRecorderError::DoTestStepL()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1948
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1949
	//[temporary contruction to test the fsm ]
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1950
	iTestStepResult = EPass;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1951
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1952
	// Printing to the console and log file
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1953
	INFO_PRINTF1(_L("MM-MMF-ACLNT-U-0014-CP"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1954
	INFO_PRINTF1(_L("this is a test of CMdaAudioRecorderUtility on error"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1955
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1956
	if ( (iRecorder = CMMFMdaAudioRecorderUtility::NewL(*this)) == NULL )
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1957
		return EInconclusive;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1958
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1959
	if ( (iRecorderHighPriority = CMMFMdaAudioRecorderUtility::NewL(*this)) == NULL )
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1960
		return  EInconclusive;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1961
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1962
	//[ copy files from back up file ]
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1963
	//[ ensure files do not exist ]
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1964
	iFs.Connect();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1965
	CFileMan* fileMan = CFileMan::NewL(iFs);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1966
	CleanupStack::PushL(fileMan);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1967
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1968
    fileMan->Delete( KTestRecordTwo );
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1969
	fileMan->Delete( KTestRecordOne );
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1970
	User::LeaveIfError(fileMan->Copy( KTestRecordThree, KTestRecordTwo ));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1971
	User::LeaveIfError(fileMan->Copy( KTestRecordThree, KTestRecordOne ));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1972
	CleanupStack::PopAndDestroy(fileMan);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1973
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1974
	//set up file name
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1975
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1976
	if(!GetStringFromConfig(_L("SectionOne"), _L("AudioRecord1"), iFileName))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1977
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1978
		//INFO_PRINTF2(_L("file name %s not found..."), fileptr);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1979
		return EInconclusive;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1980
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1981
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1982
	if (SetAudRecorderParent(iRecorder, REINTERPRET_CAST(CMdaAudioRecorderUtility*,KTestPointerRecorder1 )) != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1983
		return EInconclusive;; // check value in MoscoStateChangeEvent
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1984
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1985
	iRecorder->OpenFileL(iFileName);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1986
	CActiveScheduler::Start();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1987
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1988
	//[ if we got here we are ok ]
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1989
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1990
	INFO_PRINTF1(_L("finished with this test step"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1991
	// test steps return a result
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1992
	return iTestStepResult;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1993
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1994
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1995
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1996
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1997
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1998
 * Static constructor for CTestStepRecorderMaxWriteLength.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1999
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2000
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2001
 * @return	"CTestStepRecorderMaxWriteLength*"
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2002
 *			The constructed CTestStepRecorderMaxWriteLength
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2003
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2004
 * @xxxx
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2005
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2006
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2007
CTestStepRecorderMaxWriteLength* CTestStepRecorderMaxWriteLength::NewL()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2008
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2009
	CTestStepRecorderMaxWriteLength* self = new(ELeave) CTestStepRecorderMaxWriteLength;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2010
	return self;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2011
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2012
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2013
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2014
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2015
 * Test step constructor.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2016
 * Each test step initialises its own name.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2017
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2018
 * @xxxx
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2019
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2020
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2021
CTestStepRecorderMaxWriteLength::CTestStepRecorderMaxWriteLength() : iError(0)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2022
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2023
	// store the name of this test case
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2024
	// this is the name that is used by the script file
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2025
	iTestStepName = _L("MM-MMF-ACLNT-U-0290-HP");
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2026
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2027
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2028
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2029
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2030
 * Test step destructor.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2031
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2032
 * @xxxx
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2033
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2034
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2035
CTestStepRecorderMaxWriteLength::~CTestStepRecorderMaxWriteLength()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2036
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2037
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2038
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2039
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2040
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2041
 * Test step Preamble.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2042
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2043
 * @xxxx
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2044
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2045
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2046
enum TVerdict CTestStepRecorderMaxWriteLength::DoTestStepPreambleL(void)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2047
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2048
	 enum TVerdict verdict = EPass;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2049
	 // this installs the scheduler
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2050
	 verdict = CTestStepUnitMMFAudClient::DoTestStepPreambleL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2051
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2052
	// Printing to the console and log file
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2053
	INFO_PRINTF1(_L("MM-MMF-ACLNT-U-0290-HP"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2054
	INFO_PRINTF1(_L("this is a test of CMdaAudioRecorderUtility::SetMaxWriteLength with argument = -1"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2055
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2056
	// set the file name to something weird
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2057
    iFileName.Set( _L("c:\\szhgefdsfe.wav"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2058
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2059
	//[ ensure the file does not exist]
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2060
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2061
	if ( (iRecorder = CMMFMdaAudioRecorderUtility::NewL(*this)) == NULL )
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2062
		verdict = EInconclusive;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2063
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2064
	if (SetAudRecorderParent(iRecorder, REINTERPRET_CAST(CMdaAudioRecorderUtility*, KTestPointerValue)) != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2065
		return EFail; // check value in MoscoStateChangeEvent
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2066
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2067
	// open an existing file to record and crop all its contents if any
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2068
	iRecorder->OpenFileL(iFileName);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2069
	CActiveScheduler::Start();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2070
	if (iError)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2071
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2072
		INFO_PRINTF2(_L("open returned %d"), iError);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2073
		return EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2074
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2075
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2076
	if (iError != KErrNone ||
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2077
		iRecorder->State() != CMdaAudioRecorderUtility::EOpen)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2078
		return EInconclusive;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2079
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2080
	// if it gets here "-1" is accepted
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2081
	return verdict;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2082
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2083
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2084
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2085
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2086
 * Test step Postamble.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2087
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2088
 * @xxxx
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2089
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2090
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2091
enum TVerdict CTestStepRecorderMaxWriteLength::DoTestStepPostambleL(void)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2092
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2093
	//delete the output file
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2094
	CFileMan* fileMan;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2095
	iFs.Connect();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2096
	fileMan = CFileMan::NewL(iFs);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2097
	fileMan->Delete(iFileName);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2098
	iFs.Close();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2099
	delete fileMan;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2100
	fileMan = NULL;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2101
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2102
	delete iRecorder;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2103
	iRecorder = NULL;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2104
	//[ Destroy the scheduler ]
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2105
	return CTestStepUnitMMFAudClient::DoTestStepPostambleL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2106
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2107
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2108
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2109
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2110
 * Callback Handle.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2111
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2112
 * @xxxx
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2113
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2114
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2115
void CTestStepRecorderMaxWriteLength::MoscoStateChangeEvent(CBase* /*aObject*/,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2116
														  TInt /*aPreviousState*/,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2117
														  TInt /*aCurrentState*/,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2118
														  TInt /*aErrorCode*/)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2119
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2120
	CActiveScheduler::Stop();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2121
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2122
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2123
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2124
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2125
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2126
 * Do the test step.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2127
 * Each test step must supply an implementation for DoTestStepL.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2128
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2129
 * @return	"TVerdict"
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2130
 *			The result of the test step
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2131
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2132
 * @xxxx
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2133
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2134
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2135
TVerdict CTestStepRecorderMaxWriteLength::DoTestStepL()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2136
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2137
	iTestStepResult = EPass;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2138
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2139
	// set some limit on bytes to record
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2140
	iRecorder->SetMaxWriteLength(10024);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2141
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2142
	// reset the record limit. 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2143
	// This is the function WHICH is being tested
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2144
	iRecorder->SetMaxWriteLength(-1); 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2145
		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2146
	iRecorder->Close();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2147
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2148
	INFO_PRINTF1(_L("finished with this test step"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2149
	// test steps return a result
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2150
	return iTestStepResult;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2151
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2152
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2153
#ifdef SYMBIAN_MULTIMEDIA_A3FDEVSOUND
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2154
	_LIT(KRecorderThread1,"RecorderThread1");
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2155
	_LIT(KRecorderThread2,"RecorderThread2");
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2156
	_LIT(KRecorderThread3,"RecorderThread3");
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2157
	const TInt KDefaultHeapSize=0x100000;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2158
#endif	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2159
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2160
// factory function
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2161
CRecordAudio* CRecordAudio::NewL()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2162
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2163
	CRecordAudio* self = new (ELeave) CRecordAudio();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2164
	CleanupStack::PushL(self);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2165
	self->ConstructL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2166
	CleanupStack::Pop(self);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2167
	return self;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2168
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2169
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2170
// Destructor
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2171
CRecordAudio::~CRecordAudio()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2172
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2173
	if (iUtility)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2174
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2175
		// if it exists, always stop the utility - null action if not running
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2176
		iUtility->Stop();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2177
		delete iUtility;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2178
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2179
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2180
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2181
// 2nd phase constructor
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2182
void CRecordAudio::ConstructL()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2183
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2184
	iUtility = CMdaAudioRecorderUtility::NewL(*this);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2185
	iTimer = CPeriodic::NewL(CActive::EPriorityHigh);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2186
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2187
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2188
// constructor
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2189
CRecordAudio::CRecordAudio()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2190
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2191
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2192
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2193
void CRecordAudio::RecordL(const TDesC& aFileName, TInt aPriority)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2194
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2195
	// Note: in this scenario, the calling code can handle the leave here
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2196
	// but alternatively we would have to trap and (using one-shot AO) arrange
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2197
	// for the callback to be subsequently called.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2198
	iUtility->SetPriority(aPriority, EMdaPriorityPreferenceNone);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2199
	iUtility->OpenFileL(aFileName); 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2200
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2201
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2202
void CRecordAudio::MoscoStateChangeEvent(CBase* aObject, TInt aPreviousState, TInt aCurrentState, TInt aErrorCode)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2203
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2204
	__ASSERT_DEBUG(aObject==iUtility, User::Invariant());
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2205
	aObject = aObject; // shutup warning
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2206
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2207
	iError = aErrorCode;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2208
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2209
	if (iError==KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2210
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2211
		// only interested in some state transitions...
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2212
		if (aPreviousState==CMdaAudioRecorderUtility::ENotReady && 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2213
		        aCurrentState==CMdaAudioRecorderUtility::EOpen)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2214
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2215
			// have opened the file
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2216
			iUtility->RecordL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2217
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2218
		else if (aPreviousState==CMdaAudioRecorderUtility::EOpen && 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2219
		         aCurrentState==CMdaAudioRecorderUtility::ERecording)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2220
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2221
			//start a timer
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2222
			TCallBack callback (TimerCallback, this);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2223
			const TInt KWaitTime = 2000000; // 2s
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2224
			iTimer->Start(KWaitTime, 0, callback);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2225
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2226
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2227
	else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2228
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2229
		if (aPreviousState==CMdaAudioRecorderUtility::ERecording && 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2230
		    aCurrentState==CMdaAudioRecorderUtility::EOpen)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2231
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2232
			iTimer->Cancel();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2233
			CActiveScheduler::Stop();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2234
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2235
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2236
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2237
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2238
// having opened the file, give settings and then start to record
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2239
void CRecordAudio::OnOpenL()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2240
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2241
	iUtility->RecordL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2242
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2243
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2244
// timer callback
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2245
TInt CRecordAudio::TimerCallback(TAny* aPtr)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2246
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2247
	static_cast<CRecordAudio*>(aPtr)->DoTimerCallback();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2248
	return KErrNone;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2249
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2250
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2251
void CRecordAudio::DoTimerCallback()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2252
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2253
	iTimer->Cancel(); // only really wanted a one-shot
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2254
	iUtility->Stop();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2255
	CActiveScheduler::Stop();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2256
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2257
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2258
RAudioConcurrentRecTest* RAudioConcurrentRecTest::NewL(const TDesC& aStepName, TInt aRecPriority1, TInt aRecPriority2, TInt aRecPriority3)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2259
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2260
	RAudioConcurrentRecTest* self = new (ELeave) RAudioConcurrentRecTest(aStepName, aRecPriority1, aRecPriority2, aRecPriority3);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2261
	return self;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2262
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2263
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2264
RAudioConcurrentRecTest::RAudioConcurrentRecTest(const TDesC& aStepName, TInt aRecPriority1, TInt aRecPriority2, TInt aRecPriority3)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2265
	:iRecPriority1(aRecPriority1), iRecPriority2(aRecPriority2), iRecPriority3(aRecPriority3) 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2266
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2267
	iTestStepName = aStepName; 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2268
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2269
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2270
TInt StartThreadL(TAny* aData)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2271
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2272
	TInt* priority = static_cast<TInt*> (aData);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2273
	// Create active scheduler (to run active objects)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2274
	CActiveScheduler* scheduler = new (ELeave) CActiveScheduler();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2275
	CleanupStack::PushL(scheduler);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2276
	CActiveScheduler::Install(scheduler);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2277
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2278
	CRecordAudio* recorder = CRecordAudio::NewL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2279
	CleanupStack::PushL(recorder);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2280
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2281
	TBuf<50> fileName;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2282
	fileName.Append(_L("c:\\"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2283
	fileName.Append(RThread().Name());
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2284
	fileName.Append(_L(".wav"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2285
	RFs fs;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2286
	User::LeaveIfError(fs.Connect());
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2287
	CleanupClosePushL(fs);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2288
	fs.Delete(fileName); // ensure we start with no file. Ignore errors.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2289
		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2290
	recorder->RecordL(fileName, *priority);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2291
	CActiveScheduler::Start();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2292
	fs.Delete(fileName); // ensure we start with no file. Ignore errors.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2293
	TInt err = recorder->Error();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2294
	CleanupStack::PopAndDestroy(3,scheduler);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2295
	return err;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2296
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2297
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2298
TInt StartThread(TAny* aData)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2299
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2300
	CTrapCleanup* cleanup = CTrapCleanup::New();	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2301
	TInt result=KErrNone;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2302
	TRAPD(error, result = StartThreadL(aData));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2303
	delete cleanup;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2304
	if(error)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2305
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2306
		return error;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2307
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2308
	else if(result)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2309
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2310
		return result;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2311
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2312
	else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2313
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2314
		return KErrNone;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2315
		}	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2316
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2317
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2318
// start test
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2319
void RAudioConcurrentRecTest::KickoffTestL()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2320
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2321
	INFO_PRINTF1( _L("DEF121928:This test creates three threads and starts recording concurrently from all the three threads"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2322
	INFO_PRINTF4( _L("RecorderUtility1 has Priority[%d] RecorderUtility2 has Priority[%d] RecorderUtility3 has Priority[%d]"), iRecPriority1, iRecPriority2, iRecPriority3);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2323
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2324
	#ifndef SYMBIAN_MULTIMEDIA_A3FDEVSOUND
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2325
		INFO_PRINTF1( _L("This test is only for A3F: Just making it pass without testing on old devsound"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2326
		StopTest(KErrNone);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2327
	#else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2328
		User::LeaveIfError(iThread1.Create(KRecorderThread1, StartThread, KDefaultStackSize, KDefaultHeapSize, KDefaultHeapSize, &iRecPriority1));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2329
	    User::LeaveIfError(iThread2.Create(KRecorderThread2, StartThread, KDefaultStackSize, KDefaultHeapSize, KDefaultHeapSize, &iRecPriority2));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2330
	    User::LeaveIfError(iThread3.Create(KRecorderThread3, StartThread, KDefaultStackSize, KDefaultHeapSize, KDefaultHeapSize, &iRecPriority3));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2331
		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2332
		TRequestStatus status1;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2333
	    TRequestStatus status2;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2334
	    TRequestStatus status3;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2335
	    iThread1.Logon(status1);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2336
	    iThread2.Logon(status2);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2337
	    iThread3.Logon(status3);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2338
	    iThread1.Resume();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2339
	    iThread2.Resume();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2340
	    iThread3.Resume();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2341
		User::WaitForRequest(status1);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2342
	    User::WaitForRequest(status2);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2343
	    User::WaitForRequest(status3);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2344
	    
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2345
	    INFO_PRINTF2( _L("Thread1 is terminated with error[%d]"), status1.Int());
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2346
	    INFO_PRINTF2( _L("Thread2 is terminated with error[%d]"), status2.Int());
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2347
	    INFO_PRINTF2( _L("Thread3 is terminated with error[%d]"), status3.Int());
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2348
	    
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2349
	    TVerdict result = EPass;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2350
	    //Check first that the thread with the max priority is successful
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2351
	   	if(status1.Int() != KErrNone && iRecPriority1 == EMdaPriorityMax)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2352
	   		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2353
	   		INFO_PRINTF1( _L("Thread1 has failed to record inspite of having EMdaPriorityMax"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2354
	   		result = EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2355
	   		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2356
	   	if(status2.Int() != KErrNone && iRecPriority2 == EMdaPriorityMax)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2357
	   		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2358
	   		INFO_PRINTF1( _L("Thread2 has failed to record inspite of having EMdaPriorityMax"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2359
	   		result = EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2360
	   		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2361
	   	if(status3.Int() != KErrNone && iRecPriority3 == EMdaPriorityMax)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2362
	   		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2363
	   		INFO_PRINTF1( _L("Thread3 has failed to record inspite of having EMdaPriorityMax"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2364
	   		result = EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2365
	   		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2366
	   	//Check if the lower priority gets the KErrInUse
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2367
	   	if(status1.Int()!= KErrInUse && (iRecPriority1== EMdaPriorityMin || iRecPriority1== EMdaPriorityNormal))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2368
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2369
			INFO_PRINTF1( _L("Thread1 has failed to receive KErrInUse inspite of having EMdaPriorityMin or EMdaPriorityNormal"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2370
	   		result = EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2371
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2372
		if(status2.Int()!= KErrInUse && (iRecPriority2== EMdaPriorityMin || iRecPriority2== EMdaPriorityNormal))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2373
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2374
			INFO_PRINTF1( _L("Thread2 has failed to receive KErrInUse inspite of having EMdaPriorityMin or EMdaPriorityNormal"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2375
	   		result = EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2376
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2377
		if(status3.Int()!= KErrInUse && (iRecPriority3== EMdaPriorityMin || iRecPriority3== EMdaPriorityNormal))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2378
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2379
			INFO_PRINTF1( _L("Thread1 has failed to receive KErrInUse inspite of having EMdaPriorityMin or EMdaPriorityNormal"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2380
	   		result = EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2381
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2382
		StopTest(KErrNone, result);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2383
	#endif
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2384
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2385
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2386
// cleanup at end
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2387
void RAudioConcurrentRecTest::CloseTest()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2388
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2389
	iThread1.Close();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2390
    iThread2.Close();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2391
    iThread3.Close();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2392
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2393
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2394
// factory function
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2395
CRecorder* CRecorder::NewL(MRecordAudioObserver* aObserver)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2396
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2397
	CRecorder* self = new (ELeave) CRecorder(aObserver);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2398
	CleanupStack::PushL(self);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2399
	self->ConstructL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2400
	CleanupStack::Pop(self);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2401
	return self;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2402
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2403
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2404
// Destructor
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2405
CRecorder::~CRecorder()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2406
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2407
	if (iUtility)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2408
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2409
		// if it exists, always stop the utility - null action if not running
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2410
		iUtility->Stop();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2411
		delete iUtility;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2412
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2413
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2414
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2415
// 2nd phase constructor
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2416
void CRecorder::ConstructL()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2417
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2418
	iUtility = CMdaAudioRecorderUtility::NewL(*this);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2419
	iTimer = CPeriodic::NewL(CActive::EPriorityHigh);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2420
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2421
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2422
// constructor
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2423
CRecorder::CRecorder(MRecordAudioObserver* aObserver)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2424
	:iObserver(aObserver)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2425
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2426
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2427
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2428
void CRecorder::RecordL(const TDesC& aFileName, TInt aPriority)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2429
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2430
	iUtility->SetPriority(aPriority, EMdaPriorityPreferenceNone);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2431
	const TUid KPanicControllerUid = {0x10286661};
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2432
	iUtility->OpenFileL(aFileName, KPanicControllerUid);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2433
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2434
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2435
void CRecorder::MoscoStateChangeEvent(CBase* aObject, TInt aPreviousState, TInt aCurrentState, TInt aErrorCode)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2436
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2437
	__ASSERT_DEBUG(aObject==iUtility, User::Invariant());
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2438
	aObject = aObject; // shutup warning
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2439
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2440
	iError = aErrorCode;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2441
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2442
	if (iError==KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2443
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2444
		// only interested in some state transitions...
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2445
		if (aPreviousState==CMdaAudioRecorderUtility::ENotReady && 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2446
		        aCurrentState==CMdaAudioRecorderUtility::EOpen)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2447
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2448
			// have opened the file
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2449
			iUtility->RecordL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2450
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2451
		else if (aPreviousState==CMdaAudioRecorderUtility::EOpen && 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2452
		         aCurrentState==CMdaAudioRecorderUtility::ERecording)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2453
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2454
			//start a timer
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2455
			TCallBack callback (TimerCallback, this);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2456
			const TInt KWaitTime = 2000000; // 2s
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2457
			iTimer->Start(KWaitTime, 0, callback);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2458
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2459
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2460
	else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2461
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2462
		if (aPreviousState==CMdaAudioRecorderUtility::ERecording && 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2463
		    aCurrentState==CMdaAudioRecorderUtility::EOpen)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2464
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2465
			iTimer->Cancel();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2466
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2467
		iObserver->RecordError(iError);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2468
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2469
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2470
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2471
// having opened the file, give settings and then start to record
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2472
void CRecorder::OnOpenL()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2473
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2474
	iUtility->RecordL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2475
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2476
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2477
// timer callback
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2478
TInt CRecorder::TimerCallback(TAny* aPtr)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2479
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2480
	static_cast<CRecorder*>(aPtr)->DoTimerCallback();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2481
	return KErrNone;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2482
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2483
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2484
void CRecorder::DoTimerCallback()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2485
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2486
	iTimer->Cancel(); // only really wanted a one-shot
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2487
	iUtility->Stop();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2488
	iObserver->RecordError(KErrNone);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2489
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2490
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2491
RAudioRecPanicTest* RAudioRecPanicTest::NewL(const TDesC& aStepName, const TDesC& aFileName)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2492
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2493
	RAudioRecPanicTest* self = new (ELeave) RAudioRecPanicTest(aStepName, aFileName);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2494
	return self;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2495
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2496
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2497
RAudioRecPanicTest::RAudioRecPanicTest(const TDesC& aStepName, const TDesC& aFileName) :
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2498
	iRecorder(NULL),
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2499
	iFileName (aFileName)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2500
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2501
	iTestStepName = aStepName;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2502
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2503
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2504
// start test
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2505
void RAudioRecPanicTest::KickoffTestL()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2506
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2507
	INFO_PRINTF1(_L("DEF127630:Fix for INC108007 appears to close "));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2508
	// re-initialise data - orphan any pointer, as would relate to
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2509
	// previous run's heap
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2510
	iRecorder = NULL; 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2511
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2512
	User::LeaveIfError(iFs.Connect());
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2513
	iFs.Delete(iFileName); // ensure we start with no file. Ignore errors.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2514
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2515
	iRecorder = CRecorder::NewL(this);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2516
	iSuite->Log(ESevrInfo, _L("Recording Started...."));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2517
	iRecorder->RecordL(iFileName, EMdaPriorityNormal);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2518
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2519
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2520
// cleanup at end
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2521
void RAudioRecPanicTest::CloseTest()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2522
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2523
	delete iRecorder;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2524
	iRecorder = NULL;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2525
	iFs.Close();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2526
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2527
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2528
// recording stopped
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2529
void RAudioRecPanicTest::RecordError(TInt aError)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2530
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2531
	iSuite->Log(ESevrInfo, _L("Recording Finished...."));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2532
	if(aError!=KErrServerTerminated)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2533
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2534
		StopTest(aError, EFail);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2535
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2536
	else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2537
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2538
		StopTest(aError, EPass);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2539
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2540
	}