devsound/a3fdevsound/src/mmfaudioserver/mmfaudioserver.h
author hgs
Tue, 02 Nov 2010 12:28:51 +0000
changeset 6 fe9d1bf55678
parent 0 b8ed18f6c07b
permissions -rw-r--r--
2010wk46_02
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
0
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
     1
/*
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
     2
* Copyright (c) 2006-2009 Nokia Corporation and/or its subsidiary(-ies).
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
     3
* All rights reserved.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
     4
* This component and the accompanying materials are made available
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
     5
* under the terms of "Eclipse Public License v1.0"
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
     6
* which accompanies this distribution, and is available
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
     7
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
     8
*
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
     9
* Initial Contributors:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    10
* Nokia Corporation - initial contribution.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    11
*
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    12
* Contributors:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    13
*
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    14
* Description:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    15
*
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    16
*/
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    17
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
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    22
 @file
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    23
 @internalTechnology 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    24
*/
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    25
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    26
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    27
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    28
#ifndef MMFAUDIOSERVER_H
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    29
#define MMFAUDIOSERVER_H
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    30
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    31
#include <e32base.h>
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    32
#include <e32std.h>
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    33
#include <mmf/common/mmfipc.h>
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    34
#ifdef SYMBIAN_ENABLE_SPLIT_HEADERS
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    35
#include <mmf/common/mmfipcserver.h>
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    36
#endif
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    37
#include <a3f/a3ffourcclookup.h>
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    38
#include "mglobalproperties.h"
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    39
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    40
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    41
// FORWARD DECLARATIONS
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    42
class CStartAndMonitorDevSoundThread;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    43
class CMMFAudioServerFactory;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    44
class RMMFDevSoundServerProxy;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    45
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    46
enum TMMFAudioServerPanicCodes
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    47
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    48
	EMMFAudioServerIsActive = 1
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    49
	};
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    50
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    51
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    52
	The Audio Server holds a list of DevSound servers and manages it.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    53
	This class is a container process for all the DevSound Server threads that are
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    54
	created for each DevSound proxy and for all other servers that are created
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    55
	using Factory.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    56
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    57
	@lib MmfAudioServer.exe
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    58
*/
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    59
class CMMFAudioServer : public CMmfIpcServer, public MGlobalProperties
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    60
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    61
public:
6
fe9d1bf55678 2010wk46_02
hgs
parents: 0
diff changeset
    62
	
0
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    63
	/**
6
fe9d1bf55678 2010wk46_02
hgs
parents: 0
diff changeset
    64
        Constructs, and returns a pointer to, a new CMMFAudioServer
fe9d1bf55678 2010wk46_02
hgs
parents: 0
diff changeset
    65
        object.
fe9d1bf55678 2010wk46_02
hgs
parents: 0
diff changeset
    66
        @param aStayOpen whether or not the server should stay open permanently
fe9d1bf55678 2010wk46_02
hgs
parents: 0
diff changeset
    67
        @return CMMFAudioServer* A pointer to newly created object.
fe9d1bf55678 2010wk46_02
hgs
parents: 0
diff changeset
    68
    */
fe9d1bf55678 2010wk46_02
hgs
parents: 0
diff changeset
    69
	static CMMFAudioServer* NewL(TBool aStayOpen);
0
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    70
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    71
	/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    72
		Destructor.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    73
	*/
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    74
	~CMMFAudioServer();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    75
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    76
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    77
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    78
	/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    79
		From CServer2. Creates a server-side client session object.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    80
		@param aVersion server version requested by the client.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    81
		@return CMmfIpcSession* A pointer to newly created session.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    82
	*/
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    83
	CMmfIpcSession* NewSessionL(const TVersion &aVersion) const;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    84
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    85
	/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    86
		Increment the session Id.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    87
	*/
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    88
	void IncrementSessionId();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    89
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    90
	/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    91
		Decrement the session Id.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    92
	*/
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    93
	void DecrementSessionId();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    94
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    95
	/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    96
		Increment the DevSound server counter.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    97
	*/
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    98
	void IncrementDevSoundCount();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    99
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   100
	/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   101
		Decrement the DevSound server counter.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   102
		Once the number of DevSound server's instances becomes zero, Audio
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   103
		Server will start its shutdown routine.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   104
	*/
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   105
	void DecrementDevSoundCount();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   106
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   107
	/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   108
		Sends Event to DevSound client.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   109
		@param  aSessionToAlert Id of DevSound to be alerted.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   110
		@param  aSessionToBeLaunched Id of DevSound to be launched.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   111
	*/
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   112
	void SendEventToClient(TInt aSessionToAlert, TInt aSessionToBeLaunched);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   113
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   114
	/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   115
		Launches the DevSound servers waiting for Audio Policy.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   116
		@param  aSessionToBeLaunched Id of DevSound to be launched.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   117
	*/
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   118
	void LaunchRequest(TInt aSessionId);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   119
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   120
	/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   121
		Returns Audio Server session identifier.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   122
		@return a integer representing session id.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   123
	*/
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   124
	TInt AudioServerSessionId() {return iAudioServerSessionId;};
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   125
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   126
	/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   127
		Starts a new DevSound server instance.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   128
		@param  aDevSoundSessionHandle. A handle to the DevSound server session to be launched.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   129
		@return KErrNone if successfull, else corresponding error code.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   130
	*/
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   131
	TInt StartDevSoundServer(RMMFDevSoundServerProxy& aDevSoundSessionHandle) const;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   132
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   133
	// From MGlobalProperties
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   134
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   135
	/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   136
	 * Returns reference to FourCC to format converter
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   137
	 * (other items were commented in a header).
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   138
	*/
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   139
	inline const CFourCCConvertor& GetFourCCConvertor();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   140
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   141
private:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   142
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   143
		//A timer utility class used by Audio Server for shutdown purpose.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   144
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   145
	class CDelayAudioServerShutDown : public CActive
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   146
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   147
	public:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   148
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   149
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   150
		//Constructs and returns a pointer to a new CDelayAudioServerShutDown object.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   151
		static CDelayAudioServerShutDown* NewL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   152
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   153
		//Destructor.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   154
		~CDelayAudioServerShutDown();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   155
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   156
		//Request a timeout after aDelay
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   157
		void SetDelay(TTimeIntervalMicroSeconds32 aDelay);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   158
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   159
	private:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   160
		// From CActive
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   161
		void RunL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   162
		void DoCancel();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   163
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   164
	private:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   165
		//Standart Constructor
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   166
		CDelayAudioServerShutDown();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   167
		//Second phase contructor.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   168
		void ConstructL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   169
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   170
		RTimer iShutDownTimer;
6
fe9d1bf55678 2010wk46_02
hgs
parents: 0
diff changeset
   171
		
0
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   172
		};
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   173
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   174
private:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   175
	
6
fe9d1bf55678 2010wk46_02
hgs
parents: 0
diff changeset
   176
	CMMFAudioServer(TBool aStayOpen);
0
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   177
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   178
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   179
	//Second phase constructor.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   180
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   181
	void ConstructL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   182
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   183
private:	// Data
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   184
	// FourCC to format convertor
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   185
	CFourCCConvertor* iFourCCConvertor;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   186
	// Current session id
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   187
	TInt iAudioServerSessionId;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   188
	// Number of DevSound servers.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   189
	TInt iDevSoundCount;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   190
	// Audio Server shutdown utility
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   191
	CDelayAudioServerShutDown* iDelayAudioServerShutDown;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   192
	// Array of DevSound server monitor objects.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   193
	mutable RPointerArray<CStartAndMonitorDevSoundThread> iDevSoundServList;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   194
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   195
	CMMFAudioServerFactory* iFactory;
6
fe9d1bf55678 2010wk46_02
hgs
parents: 0
diff changeset
   196
	//if the server is to stay open permanently
fe9d1bf55678 2010wk46_02
hgs
parents: 0
diff changeset
   197
	TBool iStayOpen;
0
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   198
	};
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   199
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   200
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   201
	A utility class to monitor the DevSound server state.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   202
	This class is used by Audio Server to monitor the state of DevSound server
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   203
	and to manage the client side RThread handle.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   204
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   205
	@lib MmfAudioServer.exe
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   206
*/
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   207
class CStartAndMonitorDevSoundThread: public CActive
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   208
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   209
public:	// Constructors and destructor
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   210
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   211
	/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   212
		Constructs, and returns a pointer to, a new CStartAndMonitorDevSoundThread object.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   213
		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   214
		@return CStartAndMonitorDevSoundThread* a pointer to newly created
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   215
		object.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   216
	*/
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   217
	static CStartAndMonitorDevSoundThread* NewL(CMMFAudioServer* aAudioServer);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   218
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   219
	/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   220
		Destructor.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   221
	*/
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   222
	~CStartAndMonitorDevSoundThread();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   223
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   224
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   225
	/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   226
		Starts a new instance of DevSound server. The server is given a unique
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   227
		name using aDevSoundName and aUniqueNum passed in by Audio Server.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   228
		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   229
		@param aMessage. A reference to client message requesting to create a new DevSound server.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   230
		@param aDevSoundSessionHandle. A handle to the DevSound server session.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   231
		@return KErrNone if succesful else a systemwide error code.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   232
	*/
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   233
	TInt StartDevSoundServer(RMessage2& aMessage,RMMFDevSoundServerProxy& aDevSoundSessionHandle);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   234
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   235
private: // Functions from base classes
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   236
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   237
	// From CActive
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   238
	//Called by Active Object framework when DevSound server is destroyed.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   239
	void RunL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   240
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   241
	//Called by Active Object framework when client cancels active object.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   242
	void DoCancel();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   243
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   244
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   245
	//Constructor.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   246
	CStartAndMonitorDevSoundThread(CMMFAudioServer* aAudioServer);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   247
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   248
	//Second phase constructor.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   249
	void ConstructL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   250
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   251
private:	// Data
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   252
	// A pointer reference to Audio Server.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   253
	CMMFAudioServer* iAudioServer;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   254
	// Client side handle to DevSound server thread.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   255
	RThread iServer;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   256
	};
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   257
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   258
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   259
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   260
	DevSound server client-side proxy class.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   261
	This class is used by the Audio Server to open new session with
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   262
	the DevSound server.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   263
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   264
	@lib MmfAudioServer.exe
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   265
*/
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   266
class RMMFDevSoundServerProxy : public RMmfSessionBase
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   267
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   268
public:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   269
	/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   270
		Opens new session with the DevSound server. The server is given a
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   271
		unique handle passed in by the Audio Server.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   272
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   273
		@param aDevSoundServerHandle A handle to the DevSound server.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   274
		@return KErrNone if successfull, else corresponding error code.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   275
	*/
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   276
	TInt Open(RServer2& aDevSoundServerHandle);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   277
	};
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   278
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   279
#include "mmfaudioserver.inl"
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   280
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   281
#endif // MMFAUDIOSERVER_H
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   282
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   283
// End of File
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   284