devsound/a3fdevsound/src/mmfaudioserver/mmfaudioserver.h
author hgs
Thu, 07 Oct 2010 22:34:12 +0100
changeset 0 b8ed18f6c07b
child 6 fe9d1bf55678
permissions -rw-r--r--
2010wk40
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:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    62
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    63
	/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    64
		Constructs, and returns a pointer to, a new CMMFAudioServer
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    65
		object.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    66
		@return CMMFAudioServer* A pointer to newly created object.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    67
	*/
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    68
	static CMMFAudioServer* NewL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    69
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    70
	/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    71
		Destructor.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    72
	*/
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    73
	~CMMFAudioServer();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    74
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
		From CServer2. Creates a server-side client session object.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    79
		@param aVersion server version requested by the client.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    80
		@return CMmfIpcSession* A pointer to newly created session.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    81
	*/
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    82
	CMmfIpcSession* NewSessionL(const TVersion &aVersion) const;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    83
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    84
	/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    85
		Increment the session Id.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    86
	*/
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    87
	void IncrementSessionId();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    88
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    89
	/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    90
		Decrement the session Id.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    91
	*/
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    92
	void DecrementSessionId();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    93
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    94
	/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    95
		Increment the DevSound server counter.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    96
	*/
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    97
	void IncrementDevSoundCount();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    98
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    99
	/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   100
		Decrement the DevSound server counter.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   101
		Once the number of DevSound server's instances becomes zero, Audio
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   102
		Server will start its shutdown routine.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   103
	*/
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   104
	void DecrementDevSoundCount();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   105
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   106
	/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   107
		Sends Event to DevSound client.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   108
		@param  aSessionToAlert Id of DevSound to be alerted.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   109
		@param  aSessionToBeLaunched Id of DevSound to be launched.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   110
	*/
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   111
	void SendEventToClient(TInt aSessionToAlert, TInt aSessionToBeLaunched);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   112
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   113
	/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   114
		Launches the DevSound servers waiting for Audio Policy.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   115
		@param  aSessionToBeLaunched Id of DevSound to be launched.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   116
	*/
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   117
	void LaunchRequest(TInt aSessionId);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   118
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   119
	/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   120
		Returns Audio Server session identifier.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   121
		@return a integer representing session id.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   122
	*/
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   123
	TInt AudioServerSessionId() {return iAudioServerSessionId;};
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   124
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   125
	/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   126
		Starts a new DevSound server instance.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   127
		@param  aDevSoundSessionHandle. A handle to the DevSound server session to be launched.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   128
		@return KErrNone if successfull, else corresponding error code.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   129
	*/
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   130
	TInt StartDevSoundServer(RMMFDevSoundServerProxy& aDevSoundSessionHandle) const;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   131
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   132
	// From MGlobalProperties
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   133
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   134
	/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   135
	 * Returns reference to FourCC to format converter
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   136
	 * (other items were commented in a header).
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   137
	*/
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   138
	inline const CFourCCConvertor& GetFourCCConvertor();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   139
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   140
private:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   141
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   142
		//A timer utility class used by Audio Server for shutdown purpose.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   143
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   144
	class CDelayAudioServerShutDown : public CActive
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   145
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   146
	public:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   147
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   148
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   149
		//Constructs and returns a pointer to a new CDelayAudioServerShutDown object.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   150
		static CDelayAudioServerShutDown* NewL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   151
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   152
		//Destructor.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   153
		~CDelayAudioServerShutDown();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   154
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   155
		//Request a timeout after aDelay
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   156
		void SetDelay(TTimeIntervalMicroSeconds32 aDelay);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   157
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   158
	private:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   159
		// From CActive
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   160
		void RunL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   161
		void DoCancel();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   162
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   163
	private:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   164
		//Standart Constructor
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   165
		CDelayAudioServerShutDown();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   166
		//Second phase contructor.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   167
		void ConstructL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   168
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   169
		RTimer iShutDownTimer;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   170
		};
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   171
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   172
private:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   173
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   174
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   175
	//Default constructor.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   176
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   177
	CMMFAudioServer();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   178
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   179
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   180
	//Second phase constructor.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   181
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   182
	void ConstructL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   183
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   184
private:	// Data
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   185
	// FourCC to format convertor
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   186
	CFourCCConvertor* iFourCCConvertor;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   187
	// Current session id
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   188
	TInt iAudioServerSessionId;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   189
	// Number of DevSound servers.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   190
	TInt iDevSoundCount;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   191
	// Audio Server shutdown utility
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   192
	CDelayAudioServerShutDown* iDelayAudioServerShutDown;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   193
	// Array of DevSound server monitor objects.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   194
	mutable RPointerArray<CStartAndMonitorDevSoundThread> iDevSoundServList;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   195
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   196
	CMMFAudioServerFactory* iFactory;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   197
	};
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   198
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   199
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   200
	A utility class to monitor the DevSound server state.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   201
	This class is used by Audio Server to monitor the state of DevSound server
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   202
	and to manage the client side RThread handle.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   203
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   204
	@lib MmfAudioServer.exe
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   205
*/
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   206
class CStartAndMonitorDevSoundThread: public CActive
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   207
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   208
public:	// Constructors and destructor
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   209
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   210
	/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   211
		Constructs, and returns a pointer to, a new CStartAndMonitorDevSoundThread object.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   212
		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   213
		@return CStartAndMonitorDevSoundThread* a pointer to newly created
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   214
		object.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   215
	*/
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   216
	static CStartAndMonitorDevSoundThread* NewL(CMMFAudioServer* aAudioServer);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   217
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   218
	/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   219
		Destructor.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   220
	*/
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   221
	~CStartAndMonitorDevSoundThread();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   222
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   223
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   224
	/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   225
		Starts a new instance of DevSound server. The server is given a unique
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   226
		name using aDevSoundName and aUniqueNum passed in by Audio Server.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   227
		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   228
		@param aMessage. A reference to client message requesting to create a new DevSound server.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   229
		@param aDevSoundSessionHandle. A handle to the DevSound server session.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   230
		@return KErrNone if succesful else a systemwide error code.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   231
	*/
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   232
	TInt StartDevSoundServer(RMessage2& aMessage,RMMFDevSoundServerProxy& aDevSoundSessionHandle);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   233
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   234
private: // Functions from base classes
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   235
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   236
	// From CActive
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   237
	//Called by Active Object framework when DevSound server is destroyed.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   238
	void RunL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   239
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   240
	//Called by Active Object framework when client cancels active object.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   241
	void DoCancel();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   242
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   243
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   244
	//Constructor.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   245
	CStartAndMonitorDevSoundThread(CMMFAudioServer* aAudioServer);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   246
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   247
	//Second phase constructor.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   248
	void ConstructL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   249
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   250
private:	// Data
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   251
	// A pointer reference to Audio Server.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   252
	CMMFAudioServer* iAudioServer;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   253
	// Client side handle to DevSound server thread.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   254
	RThread iServer;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   255
	};
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
	DevSound server client-side proxy class.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   260
	This class is used by the Audio Server to open new session with
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   261
	the DevSound server.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   262
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   263
	@lib MmfAudioServer.exe
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   264
*/
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   265
class RMMFDevSoundServerProxy : public RMmfSessionBase
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   266
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   267
public:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   268
	/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   269
		Opens new session with the DevSound server. The server is given a
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   270
		unique handle passed in by the Audio Server.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   271
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   272
		@param aDevSoundServerHandle A handle to the DevSound server.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   273
		@return KErrNone if successfull, else corresponding error code.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   274
	*/
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   275
	TInt Open(RServer2& aDevSoundServerHandle);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   276
	};
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   277
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   278
#include "mmfaudioserver.inl"
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   279
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   280
#endif // MMFAUDIOSERVER_H
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   281
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   282
// End of File
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   283