os/mm/mmlibs/mmfw/tsrc/mmfintegrationtest/SDevSound/SDSCapTestServer/src/CapTestStep.cpp
author sl
Tue, 10 Jun 2014 14:32:02 +0200
changeset 1 260cb5ec6c19
permissions -rw-r--r--
Update contrib.
sl@0
     1
// Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
sl@0
     2
// All rights reserved.
sl@0
     3
// This component and the accompanying materials are made available
sl@0
     4
// under the terms of "Eclipse Public License v1.0"
sl@0
     5
// which accompanies this distribution, and is available
sl@0
     6
// at the URL "http://www.eclipse.org/legal/epl-v10.html".
sl@0
     7
//
sl@0
     8
// Initial Contributors:
sl@0
     9
// Nokia Corporation - initial contribution.
sl@0
    10
//
sl@0
    11
// Contributors:
sl@0
    12
//
sl@0
    13
// Description:
sl@0
    14
//
sl@0
    15
sl@0
    16
#include "CapTestStep.h"
sl@0
    17
sl@0
    18
#ifdef Required
sl@0
    19
CTestStep1* CTestStep1::NewL()
sl@0
    20
	{
sl@0
    21
	CTestStep1* self = new (ELeave) CTestStep1;
sl@0
    22
	CleanupStack::PushL(self);
sl@0
    23
	self->ConstructL();
sl@0
    24
	CleanupStack::Pop();
sl@0
    25
	return self;
sl@0
    26
	}
sl@0
    27
	
sl@0
    28
void CTestStep1::ConstructL()
sl@0
    29
	{
sl@0
    30
	iIsFirstPlayed = EFalse;
sl@0
    31
	}
sl@0
    32
	
sl@0
    33
sl@0
    34
void CTestStep1::StartProcessing(TRequestStatus& aStatus)
sl@0
    35
	{
sl@0
    36
	iStatus = &aStatus;
sl@0
    37
sl@0
    38
	iVerdict = EFail;
sl@0
    39
	
sl@0
    40
	iVerdictDS = DoTestStepPreambleL();
sl@0
    41
	iVerdictDS = DoPlaySimpleTone();
sl@0
    42
	}
sl@0
    43
		
sl@0
    44
		
sl@0
    45
TVerdict CTestStep1::EndProcessingAndReturnResult(TDes8& aMessage)
sl@0
    46
	{
sl@0
    47
	aMessage.Copy(_L("Done"));
sl@0
    48
	return EPass;
sl@0
    49
	}
sl@0
    50
	
sl@0
    51
CTestStep1::~CTestStep1()
sl@0
    52
	{
sl@0
    53
	}
sl@0
    54
sl@0
    55
/******************************************************************************
sl@0
    56
 *
sl@0
    57
 * DevSound methods
sl@0
    58
 *
sl@0
    59
 *****************************************************************************/
sl@0
    60
 
sl@0
    61
/**
sl@0
    62
 *
sl@0
    63
 * DoTestStepL
sl@0
    64
 * @result TVerdict
sl@0
    65
 *
sl@0
    66
 */
sl@0
    67
sl@0
    68
TVerdict CTestStep1::DoPlaySimpleTone()
sl@0
    69
	{
sl@0
    70
//	INFO_PRINTF1(_L("Testing Simple Tone Playback"));
sl@0
    71
	TInt freq = 1000;
sl@0
    72
	TTimeIntervalMicroSeconds dur(10000000);
sl@0
    73
sl@0
    74
	//Initialize
sl@0
    75
	TVerdict initOK = TestInitialize(EMMFStateTonePlaying);
sl@0
    76
	if (initOK != EPass)
sl@0
    77
		{
sl@0
    78
		return EInconclusive;
sl@0
    79
		}
sl@0
    80
sl@0
    81
	TestSetPriority(0);
sl@0
    82
sl@0
    83
	TestSetVolume(iMMFDevSound->MaxVolume());
sl@0
    84
	iExpectedValue = KErrUnderflow;
sl@0
    85
	TestPlayTone(freq, dur);
sl@0
    86
	return TestPlayTone(freq, dur);
sl@0
    87
	}
sl@0
    88
sl@0
    89
/**
sl@0
    90
 *
sl@0
    91
 * TestInitialize
sl@0
    92
 * @param aMode
sl@0
    93
 * @result TVerdict
sl@0
    94
 *
sl@0
    95
 */
sl@0
    96
sl@0
    97
TVerdict CTestStep1::TestInitialize(TMMFState aMode)
sl@0
    98
	{
sl@0
    99
	iCallbackError = KErrNone;
sl@0
   100
	iExpectedValue = KErrNone;
sl@0
   101
//	INFO_PRINTF1(_L("Initializing DevSound"));
sl@0
   102
sl@0
   103
	ResetCallbacks();
sl@0
   104
sl@0
   105
	// Initialize
sl@0
   106
	TRAPD(err, iMMFDevSound->InitializeL(*this, aMode));
sl@0
   107
	if (err)
sl@0
   108
		{
sl@0
   109
//		WARN_PRINTF2 (_L("DevSound InitializeL left with error = %d"), err);
sl@0
   110
		return EInconclusive;
sl@0
   111
		}
sl@0
   112
	else
sl@0
   113
		{
sl@0
   114
		if (iCallbackError != iExpectedValue)
sl@0
   115
			{
sl@0
   116
//			ERR_PRINTF3 (_L("DevSound InitializeComplete returned %d, expected %d"), iCallbackError, iExpectedValue);
sl@0
   117
			return EFail;
sl@0
   118
			}
sl@0
   119
		if (iCallbackArray[EInitComplete] != 1)
sl@0
   120
			{
sl@0
   121
//			ERR_PRINTF2 (_L("DevSound InitializeComplete was called %d times, expected 1"), iCallbackArray[EInitComplete]);
sl@0
   122
			return EFail;
sl@0
   123
			}
sl@0
   124
		}
sl@0
   125
	return EPass;
sl@0
   126
	}
sl@0
   127
sl@0
   128
/**
sl@0
   129
 *
sl@0
   130
 * TestPlayTone
sl@0
   131
 * @param aFreq
sl@0
   132
 * @param aDur
sl@0
   133
 * @result TVerdict
sl@0
   134
 *
sl@0
   135
 */
sl@0
   136
TVerdict CTestStep1::TestPlayTone(TInt aFreq, TTimeIntervalMicroSeconds aDur)
sl@0
   137
	{
sl@0
   138
	iCallbackError = KErrNone;
sl@0
   139
	//iExpectedValue = KErrUnderflow;
sl@0
   140
sl@0
   141
	ResetCallbacks();
sl@0
   142
sl@0
   143
//	INFO_PRINTF1(_L("Playing Simple Tone"));
sl@0
   144
	TRAPD(err, iMMFDevSound->PlayToneL(aFreq, aDur));
sl@0
   145
	if (err)
sl@0
   146
		{
sl@0
   147
//		WARN_PRINTF2 (_L("DevSound PlayToneL left with error = %d"), err);
sl@0
   148
		iCallbackError = err;
sl@0
   149
		return EFail;
sl@0
   150
		}
sl@0
   151
	else
sl@0
   152
		{
sl@0
   153
//		iAL->InitialiseActiveListener();
sl@0
   154
		// Start the active scheduler and catch the callback
sl@0
   155
 		CActiveScheduler::Start();
sl@0
   156
		if (iCallbackError != iExpectedValue)
sl@0
   157
			{
sl@0
   158
//			ERR_PRINTF3 (_L("DevSound ToneFinished returned %d, expected %d"), iCallbackError, iExpectedValue);
sl@0
   159
			return EFail;
sl@0
   160
			}
sl@0
   161
		if (iCallbackArray[EToneFinished] != 1)
sl@0
   162
			{
sl@0
   163
//			ERR_PRINTF2 (_L("DevSound ToneFinished was called %d times, expected 1"), iCallbackArray[EToneFinished]);
sl@0
   164
			return EFail;
sl@0
   165
			}
sl@0
   166
		TInt tot = GetCallbackTotal();
sl@0
   167
		if (tot > 1)
sl@0
   168
			{
sl@0
   169
//			ERR_PRINTF2 (_L("DevSound called %d callbacks, expected 1"), tot);
sl@0
   170
			return EFail;
sl@0
   171
			}
sl@0
   172
		}
sl@0
   173
	return EPass;
sl@0
   174
	}
sl@0
   175
sl@0
   176
/******************************************************************************
sl@0
   177
 *
sl@0
   178
 * DevSound mixin methods
sl@0
   179
 *
sl@0
   180
 *****************************************************************************/
sl@0
   181
 
sl@0
   182
/**
sl@0
   183
 *
sl@0
   184
 * InitializeComplete
sl@0
   185
 * @param aError
sl@0
   186
 *
sl@0
   187
 */
sl@0
   188
void CTestStep1::InitializeComplete (TInt aError)
sl@0
   189
	{
sl@0
   190
//	INFO_PRINTF2(_L("DevSound called InitializeComplete with aError = %d"), aError);
sl@0
   191
	iCallbackArray[EInitComplete] ++;
sl@0
   192
	iCallbackError = aError;
sl@0
   193
	}
sl@0
   194
sl@0
   195
/**
sl@0
   196
 *
sl@0
   197
 * ToneFinished
sl@0
   198
 * @param aError
sl@0
   199
 *
sl@0
   200
 */
sl@0
   201
void CTestStep1::ToneFinished (TInt aError)
sl@0
   202
	{
sl@0
   203
//	INFO_PRINTF2(_L("DevSound called ToneFinished with aError = %d"), aError);
sl@0
   204
//	TRequestStatus* stat = &(iAL->iStatus);
sl@0
   205
//	User::RequestComplete(stat, aError);
sl@0
   206
sl@0
   207
	if( !iIsFirstPlayed )
sl@0
   208
		{
sl@0
   209
		// after first tone played inform client so we can be interrupted during second play
sl@0
   210
		iIsFirstPlayed = ETrue;
sl@0
   211
		User::RequestComplete(iStatus, aError);
sl@0
   212
		}
sl@0
   213
	iCallbackArray[EToneFinished] ++;
sl@0
   214
	iCallbackError = aError;
sl@0
   215
	CActiveScheduler::Stop();
sl@0
   216
	}
sl@0
   217
#endif // Required
sl@0
   218