os/mm/mmlibs/mmfw/tsrc/mmfunittest/Actrl/TestPlugins/AudioController/CustomMmfAudioController.h
author sl@SLION-WIN7.fritz.box
Fri, 15 Jun 2012 03:10:57 +0200
changeset 0 bde4ae8d615e
permissions -rw-r--r--
First public contribution.
sl@0
     1
// Copyright (c) 2002-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
#ifndef __TEST_MMF_CUSTOM_MMF_AUDIO_CONTROLLER_H__
sl@0
    17
#define __TEST_MMF_CUSTOM_MMF_AUDIO_CONTROLLER_H__
sl@0
    18
sl@0
    19
#include "MmfAudioController.h"
sl@0
    20
#include <mmf/server/mmfclip.h>
sl@0
    21
sl@0
    22
sl@0
    23
class CCustomMMFMessageHolder : public CBase
sl@0
    24
	{
sl@0
    25
public:
sl@0
    26
	static CCustomMMFMessageHolder* NewL(TMMFMessage& aMessage)
sl@0
    27
		{return new CCustomMMFMessageHolder(aMessage);}
sl@0
    28
	TMMFMessage iMessage;
sl@0
    29
private:
sl@0
    30
	CCustomMMFMessageHolder(TMMFMessage& aMessage): CBase(), iMessage(aMessage){}
sl@0
    31
	};
sl@0
    32
sl@0
    33
sl@0
    34
sl@0
    35
class CCustomMmfAudioController: public CMMFAudioController 
sl@0
    36
	{
sl@0
    37
public:
sl@0
    38
	static CMMFController* NewL() ;
sl@0
    39
    virtual ~CCustomMmfAudioController();
sl@0
    40
	virtual void PrimeL();
sl@0
    41
	virtual void PlayL();
sl@0
    42
	virtual void PauseL();
sl@0
    43
	virtual void StopL();
sl@0
    44
	virtual void PrimeL(TMMFMessage& aMessage);
sl@0
    45
	virtual void PlayL(TMMFMessage& aMessage);
sl@0
    46
	virtual void PauseL(TMMFMessage& aMessage);
sl@0
    47
	
sl@0
    48
	virtual void ResetL();
sl@0
    49
	virtual void RemoveDataSourceL(MDataSource& aDataSource);
sl@0
    50
	virtual void RemoveDataSinkL(MDataSink& aDataSink);
sl@0
    51
	virtual void MapdSetVolumeL(TInt aVolume);
sl@0
    52
	virtual void MapdGetMaxVolumeL(TInt& aMaxVolume);
sl@0
    53
	virtual void MapdGetVolumeL(TInt& aVolume);
sl@0
    54
	virtual void CustomCommand(TMMFMessage& aMessage);
sl@0
    55
	virtual void MarcSetMaxFileSizeL(TInt aFileSize);
sl@0
    56
	virtual void MarcGetRecordTimeAvailableL(TTimeIntervalMicroSeconds& aTime);
sl@0
    57
sl@0
    58
private:
sl@0
    59
	 TBool IsMemoryAllocCmd(TMMFMessage& aMessage );
sl@0
    60
	 TInt  AllocMemoryTestL();
sl@0
    61
	 CCustomMMFMessageHolder* iStoppingMessage;
sl@0
    62
	 
sl@0
    63
protected:
sl@0
    64
	CCustomMmfAudioController();
sl@0
    65
	virtual TBool IsUnderTest(){return iIsTest;}
sl@0
    66
	TBool iIsTest;
sl@0
    67
	};
sl@0
    68
sl@0
    69
//The controller is meant for testing. Other than the overridden functions, other functions
sl@0
    70
//inherited from CMMFAudioController should not be used.
sl@0
    71
class CMemoryFailAudioController : public CMMFAudioController
sl@0
    72
	{
sl@0
    73
public:
sl@0
    74
	static CMMFController* NewL() ;
sl@0
    75
	~CMemoryFailAudioController();
sl@0
    76
    virtual void AddDataSourceL(MDataSource& aSource);
sl@0
    77
    virtual void AddDataSinkL(MDataSink& aSink);
sl@0
    78
	virtual void SetPrioritySettings(const TMMFPrioritySettings& aSettings);
sl@0
    79
	virtual TTimeIntervalMicroSeconds DurationL() const;
sl@0
    80
protected:
sl@0
    81
	CMemoryFailAudioController();
sl@0
    82
    //Source which is not owned by the controller
sl@0
    83
    CMMFClip* iClip;
sl@0
    84
    MDataSink* iSink;
sl@0
    85
    //Extracted from MDataSink passed by the MMF. Not owned by the controller
sl@0
    86
    CMMFDevSound* iMMFDevSound;
sl@0
    87
	TMMFPrioritySettings    iPrioritySettings;
sl@0
    88
	};
sl@0
    89
sl@0
    90
//The controller is same as that of CMemoryFailAudioController. The only difference is NewL()
sl@0
    91
//is overridden.
sl@0
    92
class CMemoryPassAudioController : public CMemoryFailAudioController
sl@0
    93
	{
sl@0
    94
public:
sl@0
    95
	static CMMFController* NewL() ;
sl@0
    96
protected:
sl@0
    97
	CMemoryPassAudioController();
sl@0
    98
	};
sl@0
    99
sl@0
   100
//Test Controller that panics the Controller thread during playing/recording
sl@0
   101
//This verifies the fix for DEF127630
sl@0
   102
class CPanicAudioController : public CMMFAudioController
sl@0
   103
	{
sl@0
   104
public:
sl@0
   105
	static CMMFController* NewL();
sl@0
   106
	~CPanicAudioController();
sl@0
   107
	void AddDataSourceL(MDataSource& aSource);
sl@0
   108
	void AddDataSinkL(MDataSink& aSink);
sl@0
   109
	void PrimeL();
sl@0
   110
	void PlayL();
sl@0
   111
	TTimeIntervalMicroSeconds DurationL() const;
sl@0
   112
	void SetPositionL(const TTimeIntervalMicroSeconds& aPosition);
sl@0
   113
protected:
sl@0
   114
	CPanicAudioController();
sl@0
   115
	void ConstructL();
sl@0
   116
	static TInt PanicTimerComplete(TAny* aParent);
sl@0
   117
private:
sl@0
   118
	CPeriodic* iPanicTimer;
sl@0
   119
	};
sl@0
   120
#endif