sl@0: // Copyright (c) 2002-2009 Nokia Corporation and/or its subsidiary(-ies). sl@0: // All rights reserved. sl@0: // This component and the accompanying materials are made available sl@0: // under the terms of "Eclipse Public License v1.0" sl@0: // which accompanies this distribution, and is available sl@0: // at the URL "http://www.eclipse.org/legal/epl-v10.html". sl@0: // sl@0: // Initial Contributors: sl@0: // Nokia Corporation - initial contribution. sl@0: // sl@0: // Contributors: sl@0: // sl@0: // Description: sl@0: // sl@0: sl@0: #ifndef __TEST_MMF_CUSTOM_MMF_AUDIO_CONTROLLER_H__ sl@0: #define __TEST_MMF_CUSTOM_MMF_AUDIO_CONTROLLER_H__ sl@0: sl@0: #include "MmfAudioController.h" sl@0: #include sl@0: sl@0: sl@0: class CCustomMMFMessageHolder : public CBase sl@0: { sl@0: public: sl@0: static CCustomMMFMessageHolder* NewL(TMMFMessage& aMessage) sl@0: {return new CCustomMMFMessageHolder(aMessage);} sl@0: TMMFMessage iMessage; sl@0: private: sl@0: CCustomMMFMessageHolder(TMMFMessage& aMessage): CBase(), iMessage(aMessage){} sl@0: }; sl@0: sl@0: sl@0: sl@0: class CCustomMmfAudioController: public CMMFAudioController sl@0: { sl@0: public: sl@0: static CMMFController* NewL() ; sl@0: virtual ~CCustomMmfAudioController(); sl@0: virtual void PrimeL(); sl@0: virtual void PlayL(); sl@0: virtual void PauseL(); sl@0: virtual void StopL(); sl@0: virtual void PrimeL(TMMFMessage& aMessage); sl@0: virtual void PlayL(TMMFMessage& aMessage); sl@0: virtual void PauseL(TMMFMessage& aMessage); sl@0: sl@0: virtual void ResetL(); sl@0: virtual void RemoveDataSourceL(MDataSource& aDataSource); sl@0: virtual void RemoveDataSinkL(MDataSink& aDataSink); sl@0: virtual void MapdSetVolumeL(TInt aVolume); sl@0: virtual void MapdGetMaxVolumeL(TInt& aMaxVolume); sl@0: virtual void MapdGetVolumeL(TInt& aVolume); sl@0: virtual void CustomCommand(TMMFMessage& aMessage); sl@0: virtual void MarcSetMaxFileSizeL(TInt aFileSize); sl@0: virtual void MarcGetRecordTimeAvailableL(TTimeIntervalMicroSeconds& aTime); sl@0: sl@0: private: sl@0: TBool IsMemoryAllocCmd(TMMFMessage& aMessage ); sl@0: TInt AllocMemoryTestL(); sl@0: CCustomMMFMessageHolder* iStoppingMessage; sl@0: sl@0: protected: sl@0: CCustomMmfAudioController(); sl@0: virtual TBool IsUnderTest(){return iIsTest;} sl@0: TBool iIsTest; sl@0: }; sl@0: sl@0: //The controller is meant for testing. Other than the overridden functions, other functions sl@0: //inherited from CMMFAudioController should not be used. sl@0: class CMemoryFailAudioController : public CMMFAudioController sl@0: { sl@0: public: sl@0: static CMMFController* NewL() ; sl@0: ~CMemoryFailAudioController(); sl@0: virtual void AddDataSourceL(MDataSource& aSource); sl@0: virtual void AddDataSinkL(MDataSink& aSink); sl@0: virtual void SetPrioritySettings(const TMMFPrioritySettings& aSettings); sl@0: virtual TTimeIntervalMicroSeconds DurationL() const; sl@0: protected: sl@0: CMemoryFailAudioController(); sl@0: //Source which is not owned by the controller sl@0: CMMFClip* iClip; sl@0: MDataSink* iSink; sl@0: //Extracted from MDataSink passed by the MMF. Not owned by the controller sl@0: CMMFDevSound* iMMFDevSound; sl@0: TMMFPrioritySettings iPrioritySettings; sl@0: }; sl@0: sl@0: //The controller is same as that of CMemoryFailAudioController. The only difference is NewL() sl@0: //is overridden. sl@0: class CMemoryPassAudioController : public CMemoryFailAudioController sl@0: { sl@0: public: sl@0: static CMMFController* NewL() ; sl@0: protected: sl@0: CMemoryPassAudioController(); sl@0: }; sl@0: sl@0: //Test Controller that panics the Controller thread during playing/recording sl@0: //This verifies the fix for DEF127630 sl@0: class CPanicAudioController : public CMMFAudioController sl@0: { sl@0: public: sl@0: static CMMFController* NewL(); sl@0: ~CPanicAudioController(); sl@0: void AddDataSourceL(MDataSource& aSource); sl@0: void AddDataSinkL(MDataSink& aSink); sl@0: void PrimeL(); sl@0: void PlayL(); sl@0: TTimeIntervalMicroSeconds DurationL() const; sl@0: void SetPositionL(const TTimeIntervalMicroSeconds& aPosition); sl@0: protected: sl@0: CPanicAudioController(); sl@0: void ConstructL(); sl@0: static TInt PanicTimerComplete(TAny* aParent); sl@0: private: sl@0: CPeriodic* iPanicTimer; sl@0: }; sl@0: #endif