sl@0: // Copyright (c) 2005-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: // MmfDevSoundCIMuxUtility.cpp
sl@0: // 
sl@0: //
sl@0: 
sl@0: #ifndef MMFDEVSOUNDCIMUXUTILITY_H
sl@0: #define MMFDEVSOUNDCIMUXUTILITY_H
sl@0: 
sl@0: #include <f32file.h>
sl@0: #include <e32math.h>
sl@0: #include <s32mem.h> 
sl@0: #include "MmfDevSoundServerStart.h"
sl@0: #include "MmfAudioClientServer.h"
sl@0: #include <mmf/server/mmfdevsoundcustominterface.h>
sl@0: 
sl@0: 
sl@0: /**
sl@0: * @internalTechnology
sl@0: * @file
sl@0: */
sl@0: 
sl@0: class CMMFDevSoundCIMuxUtility;
sl@0: NONSHARABLE_CLASS( CMMFDevSoundCIMuxUtility ) : public CBase, 
sl@0: 												public MMMFDevSoundCustomInterfaceMuxUtility
sl@0: 	{
sl@0: public:
sl@0: 	static CMMFDevSoundCIMuxUtility* NewL(MMMFDevSoundCustomInterfaceChannel* aCustomChannel);
sl@0: 	virtual ~CMMFDevSoundCIMuxUtility();
sl@0: 	void ConstructL();
sl@0: 
sl@0: 	// create a custom interface Mux implementation
sl@0: 	MMMFDevSoundCustomInterfaceMuxPlugin* CreateCustomInterfaceMuxL(TUid aInterfaceId);
sl@0: 	
sl@0: 	// from MMMFDevSoundCustomInterfaceMux interface
sl@0: 	virtual TInt OpenSlave(TUid, const TDesC8& aPackageBuf);
sl@0: 	virtual void CloseSlave(TInt aHandle);
sl@0: 	virtual TInt SendSlaveSyncCommand(TInt aHandle, TInt aCommand, const TDesC8& aPackageBuf);
sl@0: 	virtual TInt SendSlaveSyncCommandResult(TInt aHandle, TInt aCommand, const TDesC8& aPackageBuf, TDes8& aResultBuf); 
sl@0: 	virtual void SendSlaveAsyncCommand(TMMFDevSoundCustomInterfaceCommandPackage& aComPackage, TRequestStatus& aStatus, const TDesC8& aPackageBuf);
sl@0: 	virtual void SendSlaveAsyncCommandResult(TMMFDevSoundCustomInterfaceCommandPackage& aComPackage, TRequestStatus& aStatus, const TDesC8& aPackageBuf, TDes8& aResultBuf);	
sl@0: private:
sl@0: 	CMMFDevSoundCIMuxUtility(MMMFDevSoundCustomInterfaceChannel* aCustomChannel);
sl@0: 
sl@0: 	MMMFDevSoundCustomInterfaceChannel* iCustomChannel;
sl@0: 	};
sl@0: 
sl@0: 
sl@0: 
sl@0: 
sl@0: 
sl@0: #endif