mmlibs/mmfw/tsrc/mmfunittest/aclnt/TSU_MMF_ACLNT_01/TestStepTone.h
changeset 0 b8ed18f6c07b
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mmlibs/mmfw/tsrc/mmfunittest/aclnt/TSU_MMF_ACLNT_01/TestStepTone.h	Thu Oct 07 22:34:12 2010 +0100
@@ -0,0 +1,783 @@
+// Copyright (c) 2002-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// This file contains testing steps for the Unit
+// test of the MMF 'Deprecated' Audio Clients.
+// Tests opening sounds of various formats
+// from a file with various parameters and constructor calls
+// 
+//
+
+
+#ifndef __TEST_STEP_TONE__
+#define __TEST_STEP_TONE__
+
+ 
+const TInt KHeapSizeToneTestEKA2 = 128000; // Heapsize for tone tests on EKA2
+const TInt KTestTimeout = 2000000; // Currently used only by CTestStepTonePlayDualToneInvalidFreq
+ 
+/**
+ *
+ * Alloc Failure New Tone utility
+ *
+ * @lib "TSU_MMF_ACLNT_01.lib"
+ *
+ * @xxxx
+ *
+ */
+class CTestStepToneAllocFailNew :	public	CTestStepUnitMMFAudClient,
+									public	MMdaAudioToneObserver //,
+									//public	MDevSoundObserver
+	{
+public:
+	static CTestStepToneAllocFailNew* NewL();
+	CTestStepToneAllocFailNew();
+	~CTestStepToneAllocFailNew();
+	virtual TVerdict DoTestStepL();
+
+	// from MMdaAudioToneObserver
+	virtual void MatoPrepareComplete(TInt aError);
+	virtual void MatoPlayComplete(TInt aError);
+	// from MMdaAudioToneObserver??
+	//virtual void DevSoundInitFinished(TInt aError);
+	//virtual void ToneFinished(TInt aError);
+
+private:
+	TInt iError;
+	CMMFMdaAudioToneUtility* iTone;
+	};
+
+/**
+ *
+ * Test New Tone utility
+ *
+ * @lib "TSU_MMF_ACLNT_01.lib"
+ *
+ * @xxxx
+ *
+ */
+class CTestStepToneNew :	public	CTestStepUnitMMFAudClient,
+							public	MMdaAudioToneObserver
+	{
+public:
+	static CTestStepToneNew* NewL();
+	CTestStepToneNew();
+	~CTestStepToneNew();
+	virtual TVerdict DoTestStepL();
+
+	// from MMdaAudioToneObserver
+	virtual void MatoPrepareComplete(TInt aError);
+	virtual void MatoPlayComplete(TInt aError);
+
+private:
+	TInt iError;
+	CMMFMdaAudioToneUtility* iTone;
+	};
+
+/**
+ *
+ * Test New Tone utility with various Priority and Preference params
+ *
+ * @lib "TSU_MMF_ACLNT_01.lib"
+ *
+ * @xxxx
+ *
+ */
+class CTestStepToneNewPriorPref :	public	CTestStepUnitMMFAudClient,
+									public	MMdaAudioToneObserver
+	{
+public:
+	static CTestStepToneNewPriorPref* NewL();
+	CTestStepToneNewPriorPref();
+	~CTestStepToneNewPriorPref();
+	virtual TVerdict DoTestStepL();
+
+	// from MMdaAudioToneObserver
+	virtual void MatoPrepareComplete(TInt aError);
+	virtual void MatoPlayComplete(TInt aError);
+
+private:
+	TInt iError;
+	CMMFMdaAudioToneUtility* iTone;
+	};
+
+/**
+ *
+ * Tone utility, Prepare to play
+ *
+ * @lib "TSU_MMF_ACLNT_01.lib"
+ *
+ * @xxxx
+ *
+ */
+class CTestStepTonePrepareToPlayTone :	public	CTestStepUnitMMFAudClient,
+										public	MMdaAudioToneObserver
+	{
+public:
+	static CTestStepTonePrepareToPlayTone* NewL();
+	CTestStepTonePrepareToPlayTone();
+	~CTestStepTonePrepareToPlayTone();
+	virtual enum TVerdict DoTestStepPreambleL(void);
+	virtual enum TVerdict DoTestStepPostambleL(void);
+	virtual TVerdict DoTestStepL();
+
+	// from MMdaAudioToneObserver
+	virtual void MatoPrepareComplete(TInt aError);
+	virtual void MatoPlayComplete(TInt aError);
+
+private:
+	TInt iError;
+	CMMFMdaAudioToneUtility* iTone;
+	};
+
+/**
+ *
+ * Test Tone Prepare DTMF String 
+ *
+ * @lib "TSU_MMF_ACLNT_01.lib"
+ *
+ * @xxxx
+ *
+ */
+class CTestStepTonePrepareToPlayDTMFString :	public	CTestStepUnitMMFAudClient,
+												public	MMdaAudioToneObserver
+	{
+public:
+	static CTestStepTonePrepareToPlayDTMFString* NewL();
+	CTestStepTonePrepareToPlayDTMFString();
+	~CTestStepTonePrepareToPlayDTMFString();
+	virtual enum TVerdict DoTestStepPreambleL(void);
+	virtual enum TVerdict DoTestStepPostambleL(void);
+	virtual TVerdict DoTestStepL();
+
+	// from MMdaAudioToneObserver
+	virtual void MatoPrepareComplete(TInt aError);
+	virtual void MatoPlayComplete(TInt aError);
+
+private:
+	TInt iError;
+	TBool iPlayComplete;
+	CMMFMdaAudioToneUtility* iTone;
+	};
+
+/**
+ *
+ * Test Tone Prepare File Sequence 
+ *
+ * @lib "TSU_MMF_ACLNT_01.lib"
+ *
+ * @xxxx
+ *
+ */
+class CTestStepTonePrepareToPlayFileSeq :	public	CTestStepUnitMMFAudClient,
+											public	MMdaAudioToneObserver
+	{
+public:
+	static CTestStepTonePrepareToPlayFileSeq* NewL();
+	CTestStepTonePrepareToPlayFileSeq();
+	~CTestStepTonePrepareToPlayFileSeq();
+	virtual enum TVerdict DoTestStepPreambleL(void);
+	virtual enum TVerdict DoTestStepPostambleL(void);
+	virtual TVerdict DoTestStepL();
+
+	// from MMdaAudioToneObserver
+	virtual void MatoPrepareComplete(TInt aError);
+	virtual void MatoPlayComplete(TInt aError);
+
+protected:
+	TInt iError;
+	CMMFMdaAudioToneUtility* iTone;
+	};
+
+/**
+ *
+ * Test Tone Prepare DRM File Sequence 
+ * (INC087436)
+ *
+ * @lib "TSU_MMF_ACLNT_01.lib"
+ *
+ * @xxxx
+ *
+ */
+class CTestStepTonePrepareToPlayDRMFileSeq :	public	CTestStepTonePrepareToPlayFileSeq
+	{
+public:
+	static CTestStepTonePrepareToPlayDRMFileSeq* NewL();
+	CTestStepTonePrepareToPlayDRMFileSeq();
+	~CTestStepTonePrepareToPlayDRMFileSeq();
+	virtual enum TVerdict DoTestStepPreambleL(void);
+	virtual enum TVerdict DoTestStepPostambleL(void);
+	virtual TVerdict DoTestStepL();
+	};
+
+/**
+ *
+ * Test Tone Prepare Descriptor Sequence 
+ *
+ * @lib "TSU_MMF_ACLNT_01.lib"
+ *
+ * @xxxx
+ *
+ */
+class CTestStepTonePrepareToPlayDescSeq :	public	CTestStepUnitMMFAudClient,
+											public	MMdaAudioToneObserver
+	{
+public:
+	static CTestStepTonePrepareToPlayDescSeq* NewL();
+	CTestStepTonePrepareToPlayDescSeq();
+	~CTestStepTonePrepareToPlayDescSeq();
+	virtual enum TVerdict DoTestStepPreambleL(void);
+	virtual enum TVerdict DoTestStepPostambleL(void);
+	virtual TVerdict DoTestStepL();
+
+	// from MMdaAudioToneObserver
+	virtual void MatoPrepareComplete(TInt aError);
+	virtual void MatoPlayComplete(TInt aError);
+
+private:
+	TInt iError;
+	CMMFMdaAudioToneUtility* iTone;
+	};
+
+/**
+ *
+ * Test Tone Prepare Fixed Sequence 
+ *
+ * @lib "TSU_MMF_ACLNT_01.lib"
+ *
+ * @xxxx
+ *
+ */
+class CTestStepTonePrepareToPlayFixedSeq :	public	CTestStepUnitMMFAudClient,
+											public	MMdaAudioToneObserver
+	{
+public:
+	static CTestStepTonePrepareToPlayFixedSeq* NewL();
+	CTestStepTonePrepareToPlayFixedSeq();
+	~CTestStepTonePrepareToPlayFixedSeq();
+	virtual enum TVerdict DoTestStepPreambleL(void);
+	virtual enum TVerdict DoTestStepPostambleL(void);
+	virtual TVerdict DoTestStepL();
+
+	// from MMdaAudioToneObserver
+	virtual void MatoPrepareComplete(TInt aError);
+	virtual void MatoPlayComplete(TInt aError);
+
+private:
+	TInt iError;
+	CMMFMdaAudioToneUtility* iTone;
+	};
+
+/**
+ *
+ * Alloc Failure New Tone utility
+ *
+ * @lib "TSU_MMF_ACLNT_01.lib"
+ *
+ * @xxxx
+ *
+ */
+class CTestStepTonePrepareToPlayTonePlay :	public	CTestStepUnitMMFAudClient,
+											public	MMdaAudioToneObserver
+	{
+public:
+	static CTestStepTonePrepareToPlayTonePlay* NewL();
+	CTestStepTonePrepareToPlayTonePlay();
+	~CTestStepTonePrepareToPlayTonePlay();
+	virtual enum TVerdict DoTestStepPreambleL(void);
+	virtual enum TVerdict DoTestStepPostambleL(void);
+	virtual TVerdict DoTestStepL();
+
+	// from MMdaAudioToneObserver
+	virtual void MatoPrepareComplete(TInt aError);
+	virtual void MatoPlayComplete(TInt aError);
+
+private:
+	TInt iError;
+	CMMFMdaAudioToneUtility* iTone;
+	TBool iHasPlayed;
+	};
+
+/**
+ * class used to encapsulate information about a dual tone 
+ */
+class TToneInfo
+	{
+public:
+	TInt iFreq1;
+	TInt iFreq2;
+	TInt iDuration;
+	};
+
+class CTestStepTonePrepareToPlayDualTonePlay :	public	CTestStepUnitMMFAudClient,
+											public	MMdaAudioToneObserver
+	{
+public:
+	static CTestStepTonePrepareToPlayDualTonePlay* NewL();
+	CTestStepTonePrepareToPlayDualTonePlay();
+	~CTestStepTonePrepareToPlayDualTonePlay();
+	virtual enum TVerdict DoTestStepPreambleL(void);
+	virtual enum TVerdict DoTestStepPostambleL(void);
+	virtual TVerdict DoTestStepL();
+
+	// from MMdaAudioToneObserver
+	virtual void MatoPrepareComplete(TInt aError);
+	virtual void MatoPlayComplete(TInt aError);
+
+private:
+	TInt GetTune(const TDesC& aDtmfString, RArray<TToneInfo>& aTones);
+
+private:
+	TInt iError;
+	CMMFMdaAudioToneUtility* iTone;
+	TBool iHasPlayed;
+	};
+
+class CTestStepTonePlayDualToneInvalidFreq :	public	CTestStepUnitMMFAudClient,
+											public	MMdaAudioToneObserver
+	{
+public:
+	static CTestStepTonePlayDualToneInvalidFreq* NewL(const TDesC& aName);
+	CTestStepTonePlayDualToneInvalidFreq(const TDesC& aName);
+	virtual enum TVerdict DoTestStepPreambleL(void);
+	virtual enum TVerdict DoTestStepPostambleL(void);
+	virtual TVerdict DoTestStepL();
+
+	// from MMdaAudioToneObserver
+	virtual void MatoPrepareComplete(TInt aError);
+	virtual void MatoPlayComplete(TInt aError);
+
+	virtual void TimeoutExpired();
+	static TInt TimeoutExpiredStaticCallback(TAny* aPtr);
+
+private:
+	TInt iPrepareError;
+	TInt iPlayError;
+	CMMFMdaAudioToneUtility* iTone;
+	};
+
+
+/**
+ *
+ * Cancel Play Tone utility
+ *
+ * @lib "TSU_MMF_ACLNT_01.lib"
+ *
+ * @xxxx
+ *
+ */
+class CTestStepToneCancelPlay :	public	CTestStepUnitMMFAudClient,
+								public	MMdaAudioToneObserver
+	{
+public:
+	static CTestStepToneCancelPlay* NewL();
+	CTestStepToneCancelPlay();
+	~CTestStepToneCancelPlay();
+	virtual enum TVerdict DoTestStepPreambleL(void);
+	virtual enum TVerdict DoTestStepPostambleL(void);
+	virtual TVerdict DoTestStepL();
+
+	// from MMdaAudioToneObserver
+	virtual void MatoPrepareComplete(TInt aError);
+	virtual void MatoPlayComplete(TInt aError);
+
+private:
+	TInt iError;
+	CMMFMdaAudioToneUtility* iTone;
+	};
+
+//-----------------------------------------------------------------
+/**
+ *
+ * Cancel Prepare Tone utility
+ *
+ * @lib "TSU_MMF_ACLNT_01.lib"
+ *
+ * @xxxx
+ *
+ */
+class CTestStepToneCancelPrepare :	public	CTestStepUnitMMFAudClient,
+									public	MMdaAudioToneObserver
+	{
+public:
+	static CTestStepToneCancelPrepare* NewL();
+	CTestStepToneCancelPrepare();
+	~CTestStepToneCancelPrepare();
+	virtual TVerdict DoTestStepPreambleL(void);
+	virtual TVerdict DoTestStepPostambleL(void);
+	virtual TVerdict DoTestStepL();
+
+	// from MMdaAudioToneObserver
+	virtual void MatoPrepareComplete(TInt aError);
+	virtual void MatoPlayComplete(TInt aError);
+
+private:
+	TInt iError;
+	CMMFMdaAudioToneUtility* iTone;
+	};
+//-----------------------------------------------------------------
+
+/**
+ *
+ * set DTMF lengths
+ *
+ * @lib "TSU_MMF_ACLNT_01.lib"
+ *
+ * @xxxx
+ *
+ */
+class CTestStepToneSetDTMFLengths :	public	CTestStepUnitMMFAudClient,
+									public	MMdaAudioToneObserver
+	{
+public:
+	static CTestStepToneSetDTMFLengths* NewL();
+	CTestStepToneSetDTMFLengths();
+	~CTestStepToneSetDTMFLengths();
+	virtual enum TVerdict DoTestStepPreambleL(void);
+	virtual enum TVerdict DoTestStepPostambleL(void);
+	virtual TVerdict DoTestStepL();
+
+	// from MMdaAudioToneObserver
+	virtual void MatoPrepareComplete(TInt aError);
+	virtual void MatoPlayComplete(TInt aError);
+
+private:
+	TInt iError;
+	CMMFMdaAudioToneUtility* iTone;
+	};
+
+/**
+ *
+ * Set Volume Tone Utility
+ *
+ * @lib "TSU_MMF_ACLNT_01.lib"
+ *
+ * @xxxx
+ *
+ */
+class CTestStepToneSetVolume :	public	CTestStepUnitMMFAudClient,
+								public	MMdaAudioToneObserver
+	{
+public:
+	static CTestStepToneSetVolume* NewL();
+	CTestStepToneSetVolume();
+	~CTestStepToneSetVolume();
+	virtual enum TVerdict DoTestStepPreambleL(void);
+	virtual enum TVerdict DoTestStepPostambleL(void);
+	virtual TVerdict DoTestStepL();
+
+	// from MMdaAudioToneObserver
+	virtual void MatoPrepareComplete(TInt aError);
+	virtual void MatoPlayComplete(TInt aError);
+
+private:
+	TInt iError;
+	CMMFMdaAudioToneUtility* iTone;
+	};
+
+/**
+ *
+ * Get Volume Tone Utility
+ *
+ * @lib "TSU_MMF_ACLNT_01.lib"
+ *
+ * @xxxx
+ *
+ */
+class CTestStepToneGetVolume :	public	CTestStepUnitMMFAudClient,
+								public	MMdaAudioToneObserver
+	{
+public:
+	static CTestStepToneGetVolume* NewL();
+	CTestStepToneGetVolume();
+	~CTestStepToneGetVolume();
+	virtual enum TVerdict DoTestStepPreambleL(void);
+	virtual enum TVerdict DoTestStepPostambleL(void);
+	virtual TVerdict DoTestStepL();
+
+	// from MMdaAudioToneObserver
+	virtual void MatoPrepareComplete(TInt aError);
+	virtual void MatoPlayComplete(TInt aError);
+
+private:
+	TInt iError;
+	CMMFMdaAudioToneUtility* iTone;
+	};
+
+/**
+ *
+ * Set Priority Tone Utility
+ *
+ * @lib "TSU_MMF_ACLNT_01.lib"
+ *
+ * @xxxx
+ *
+ */
+class CTestStepToneSetPriority :	public	CTestStepUnitMMFAudClient,
+									public	MMdaAudioToneObserver
+	{
+public:
+	static CTestStepToneSetPriority* NewL();
+	CTestStepToneSetPriority();
+	~CTestStepToneSetPriority();
+	virtual enum TVerdict DoTestStepPreambleL(void);
+	virtual enum TVerdict DoTestStepPostambleL(void);
+	virtual TVerdict DoTestStepL();
+
+	// from MMdaAudioToneObserver
+	virtual void MatoPrepareComplete(TInt aError);
+	virtual void MatoPlayComplete(TInt aError);
+
+private:
+	TInt iError;
+	CMMFMdaAudioToneUtility* iTone;
+	};
+
+/**
+ *
+ * Set Repeats Tone Utility
+ *
+ * @lib "TSU_MMF_ACLNT_01.lib"
+ *
+ * @xxxx
+ *
+ */
+class CTestStepToneSetRepeats :	public	CTestStepUnitMMFAudClient,
+									public	MMdaAudioToneObserver
+	{
+public:
+	static CTestStepToneSetRepeats* NewL();
+	CTestStepToneSetRepeats();
+	~CTestStepToneSetRepeats();
+	virtual enum TVerdict DoTestStepPreambleL(void);
+	virtual enum TVerdict DoTestStepPostambleL(void);
+	virtual TVerdict DoTestStepL();
+
+	// from MMdaAudioToneObserver
+	virtual void MatoPrepareComplete(TInt aError);
+	virtual void MatoPlayComplete(TInt aError);
+
+private:
+	TInt iError;
+	CMMFMdaAudioToneUtility* iTone;
+	};
+
+/**
+ *
+ * Set Volume Ramp Tone Utility
+ *
+ * @lib "TSU_MMF_ACLNT_01.lib"
+ *
+ * @xxxx
+ *
+ */
+class CTestStepToneSetVolumeRamp :	public	CTestStepUnitMMFAudClient,
+									public	MMdaAudioToneObserver
+	{
+public:
+	static CTestStepToneSetVolumeRamp* NewL();
+	CTestStepToneSetVolumeRamp();
+	~CTestStepToneSetVolumeRamp();
+	virtual enum TVerdict DoTestStepPreambleL(void);
+	virtual enum TVerdict DoTestStepPostambleL(void);
+	virtual TVerdict DoTestStepL();
+
+	// from MMdaAudioToneObserver
+	virtual void MatoPrepareComplete(TInt aError);
+	virtual void MatoPlayComplete(TInt aError);
+
+private:
+	TInt iError;
+	CMMFMdaAudioToneUtility* iTone;
+	};
+
+/**
+ *
+ * Get Fixed Sequence number and name Tone Utility
+ *
+ * @lib "TSU_MMF_ACLNT_01.lib"
+ *
+ * @xxxx
+ *
+ */
+class CTestStepToneGetFixedSeq :	public	CTestStepUnitMMFAudClient,
+									public	MMdaAudioToneObserver
+	{
+public:
+	static CTestStepToneGetFixedSeq* NewL();
+	CTestStepToneGetFixedSeq();
+	~CTestStepToneGetFixedSeq();
+	virtual enum TVerdict DoTestStepPreambleL(void);
+	virtual enum TVerdict DoTestStepPostambleL(void);
+	virtual TVerdict DoTestStepL();
+
+	// from MMdaAudioToneObserver
+	virtual void MatoPrepareComplete(TInt aError);
+	virtual void MatoPlayComplete(TInt aError);
+
+private:
+	TInt iError;
+	CMMFMdaAudioToneUtility* iTone;
+	};
+
+/**
+ *
+ * Get State Tone Utility
+ *
+ * @lib "TSU_MMF_ACLNT_01.lib"
+ *
+ * @xxxx
+ *
+ */
+class CTestStepToneState :	public	CTestStepUnitMMFAudClient,
+							public	MMdaAudioToneObserver
+	{
+public:
+	static CTestStepToneState* NewL();
+	CTestStepToneState();
+	~CTestStepToneState();
+	virtual enum TVerdict DoTestStepPreambleL(void);
+	virtual enum TVerdict DoTestStepPostambleL(void);
+	virtual TVerdict DoTestStepL();
+
+	// from MMdaAudioToneObserver
+	virtual void MatoPrepareComplete(TInt aError);
+	virtual void MatoPlayComplete(TInt aError);
+
+
+private:
+	TInt iError;
+	CMMFMdaAudioToneUtility* iTone;
+	TBool iHasPlayed;
+	};
+
+
+// Negative testing
+
+/**
+ *
+ * Test Tone Prepare DTMF String 
+ *
+ * @lib "TSU_MMF_ACLNT_01.lib"
+ *
+ * @xxxx
+ *
+ */
+class CTestStepTonePrepareToPlayIllegalDTMFString :	public	CTestStepUnitMMFAudClient,
+													public	MMdaAudioToneObserver
+	{
+public:
+	static CTestStepTonePrepareToPlayIllegalDTMFString* NewL();
+	CTestStepTonePrepareToPlayIllegalDTMFString();
+	~CTestStepTonePrepareToPlayIllegalDTMFString();
+	virtual enum TVerdict DoTestStepPreambleL(void);
+	virtual enum TVerdict DoTestStepPostambleL(void);
+	virtual TVerdict DoTestStepL();
+
+	// from MMdaAudioToneObserver
+	virtual void MatoPrepareComplete(TInt aError);
+	virtual void MatoPlayComplete(TInt aError);
+
+private:
+	TInt iError;
+	TBool iPlayComplete;
+	CMMFMdaAudioToneUtility* iTone;
+	};
+
+
+/**
+ *
+ * Test Playing a zero length tone on CMdaAudioToneUtility  
+ * (DEF044042)
+ * 
+ * @lib "TSU_MMF_ACLNT_01.lib"
+ * 
+ * @xxxx
+ *
+ */
+class CTestStepTonePlayZeroLength : public	CTestStepUnitMMFAudClient,
+									public 	MMdaAudioToneObserver
+	{
+public:
+	static CTestStepTonePlayZeroLength* NewL();
+	CTestStepTonePlayZeroLength();
+	~CTestStepTonePlayZeroLength();
+	virtual TVerdict DoTestStepPreambleL(void);
+	virtual TVerdict DoTestStepPostambleL(void);
+	virtual TVerdict DoTestStepL();
+	// From MMdaAudioToneObserver
+	virtual void MatoPrepareComplete(TInt aError);
+	virtual void MatoPlayComplete(TInt aError);
+private:
+	TInt iError;
+	CMdaAudioToneUtility* iTone;
+	};
+
+class CToneActiveObject;
+class RTestStepTonePlayBeforeInitialized : public RAsyncTestStep,
+										  public MMdaAudioToneObserver
+	{
+friend class CToneActiveObject;
+
+public:
+	static RTestStepTonePlayBeforeInitialized* NewL();
+	RTestStepTonePlayBeforeInitialized();
+
+	void KickoffTestL();
+	void CloseTest();
+	
+	void MatoPrepareComplete(TInt aError);
+	void MatoPlayComplete(TInt aError);
+private:
+	CMMFMdaAudioToneUtility* iTone;
+	CToneActiveObject* iToneActiveObject;
+	};
+
+class CToneActiveObject : public CActive
+	{
+public:
+	CToneActiveObject(RTestStepTonePlayBeforeInitialized& aTest);
+	~CToneActiveObject();
+	
+	void Activate();
+	void RunL();
+	void DoCancel();
+	
+private:
+	RTestStepTonePlayBeforeInitialized& iTest;
+	};
+	
+	
+class RTestStepTonePlayWhenBusy : public RAsyncTestStep,
+								  public MMdaAudioToneObserver
+	{
+public:
+	static RTestStepTonePlayWhenBusy* NewL();
+	
+	RTestStepTonePlayWhenBusy();
+	
+	void KickoffTestL();
+	void CloseTest();
+	
+	void MatoPrepareComplete(TInt aError);
+	void MatoPlayComplete(TInt aError);
+private:
+	CMdaAudioToneUtility* iTone;
+	CBusyTestUnit* iBusy;
+	TInt iBusyPercent; // how busy to make things in %age
+	TInt iBusyDelay;   // delay before busy time
+	TInt iBusyLength;  // length of busy period
+	TInt iToneLength;
+	};
+
+#endif //(__TEST_STEP_TONE__)