--- a/devsound/devsoundpluginsupport/inc/MmfDevSoundCustomInterface.h Thu Jun 24 10:37:45 2010 +0100
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,430 +0,0 @@
-// Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
-// All rights reserved.
-// This component and the accompanying materials are made available
-// under the terms of "Eclipse Public License v1.0"
-// which accompanies this distribution, and is available
-// at the URL "http://www.eclipse.org/legal/epl-v10.html".
-//
-// Initial Contributors:
-// Nokia Corporation - initial contribution.
-//
-// Contributors:
-//
-// Description:
-//
-
-/**
- @publishedPartner
- @released
- @file
-*/
-
-#ifndef MMFDEVSOUNDCUSTOMINTERFACE_H
-#define MMFDEVSOUNDCUSTOMINTERFACE_H
-
-// forward reference
-class MMMFDevSoundCustomInterfaceMuxPlugin;
-class MMMFDevSoundCustomInterfaceDeMuxPlugin;
-
-/**
-* structure to hold command, handle pair
-*/
-class TMMFDevSoundCustomInterfaceCommand
- {
-public:
- TInt iCommand;
- TInt iHandle;
- };
-
-typedef TPckgBuf<TMMFDevSoundCustomInterfaceCommand> TMMFDevSoundCustomInterfaceCommandPackage;
-
-/**
-* structure to hold custom interface data
-*/
-class TMMFDevSoundCustomInterfaceData
- {
-public:
- TUid iId;
- TInt iHandle;
- MMMFDevSoundCustomInterfaceMuxPlugin* iInterface;
- };
-
-/**
-* structure to hold custom interface data on server side
-*/
-class TMMFDevSoundCustomInterfaceDeMuxData
- {
-public:
- TUid iId;
- MMMFDevSoundCustomInterfaceDeMuxPlugin* iInterface;
- };
-
-
-/**
-* mixin for custom command pipeline used by utility to reroute commands
-*/
-class MMMFDevSoundCustomInterfaceChannel
- {
-public:
- /**
- Implements a synchronous custom command
- @param aUid
- The UID of the custom command
- @param aParam1
- A buffer of data to be supplied to the receiver
- @param aParam2
- A buffer of data to be supplied to the receiver
- @param aOutParam
- A buffer that will be written into by the receiver
- and returned to the client
- @return the result of the custom command
- */
- virtual TInt SyncCustomCommand(TUid aUid, const TDesC8& aParam1, const TDesC8& aParam2, TDes8* aOutParam) = 0;
-
- /**
- Implements an asynchronous custom command
- @param aUid
- The UID of the custom command
- @param aStatus
- The request status of the active object that
- will be called upon the completion of the request
- @param aParam1
- A buffer of data to be supplied to the receiver
- @param aParam2
- A buffer of data to be supplied to the receiver
- @param aOutParam
- A buffer that will be written into by the receiver
- and returned to the client
- */
- virtual void AsyncCustomCommand(TUid aUid, TRequestStatus& aStatus, const TDesC8& aParam1, const TDesC8& aParam2, TDes8* aOutParam) = 0;
- };
-
-
-/**
-* custom interface API mixin
-*/
-class MMMFDevSoundCustomInterfaceTarget
- {
-public:
- /**
- Obtain a custom interface
- @param aInterfaceId
- The UID of the required custom interface
- @return a pointer to the custom interface
- */
- virtual TAny* CustomInterface(TUid aInterfaceId) = 0;
- };
-
-
-/**
-* the custom interface MUX Mixin class implemented by the mux utility
-*/
-class MMMFDevSoundCustomInterfaceMuxUtility
- {
-public:
- /**
- Attempt to open the slave plugin
- @param aInterface
- The UID of the requested slave
- @param aPackageBuf
- A buffer that can be used to supply initialisation data
- @return one of the system-wide error codes
- */
- virtual TInt OpenSlave(TUid aInterface, const TDesC8& aPackageBuf) = 0;
-
- /**
- Close the slave plugin
- @param aHandle
- The handle of the slave to close
- */
- virtual void CloseSlave(TInt aHandle) = 0;
-
- /**
- Send a synchronous command to the slave
- @param aHandle
- The handle of the remote slave plugin
- @param aCommand
- The command to send to the slave
- @param aPackageBuf
- Buffer of data to send to slave
- @return the return code from the command
- */
- virtual TInt SendSlaveSyncCommand(TInt aHandle, TInt aCommand, const TDesC8& aPackageBuf) = 0;
-
- /**
- Send a synchronous command to the slave and obtain a result
- @param aHandle
- The handle of the remote slave plugin
- @param aCommand
- The command to send to the slave
- @param aPackageBuf
- Buffer of data to send to slave
- @param aResultBuf
- Buffer to contain the result from the destination.
- This must be large enough to contain the result.
- @return the return code from the command
- */
- virtual TInt SendSlaveSyncCommandResult(TInt aHandle, TInt aCommand, const TDesC8& aPackageBuf, TDes8& aResultBuf) = 0;
-
- /**
- Send an asychronous command to the slave
- @param aComPackage
- A package containing the handle of the remote slave and
- the command to be sent
- @see TMMFDevSoundCustomInterfaceCommandPackage
- @param aStatus
- The request status of the active object that will called
- upon the completion of the request
- @param aPackageBuf
- Buffer of data to send to slave
- */
- virtual void SendSlaveAsyncCommand(TMMFDevSoundCustomInterfaceCommandPackage& aComPackage, TRequestStatus& aStatus, const TDesC8& aPackageBuf) = 0;
-
- /**
- Send an asychronous command to the slave and obtain a result
- @param aComPackage
- A package containing the handle of the remote slave and
- the command to be sent
- @see TMMFDevSoundCustomInterfaceCommandPackage
- @param aStatus
- The request status of the active object that will be called
- upon the completion of the request
- @param aPackageBuf
- Buffer of data to send to slave
- @param aResultBuf
- Buffer to contain the result from the destination.
- This must be large enough to contain the result.
- */
- virtual void SendSlaveAsyncCommandResult(TMMFDevSoundCustomInterfaceCommandPackage& aComPackage, TRequestStatus& aStatus, const TDesC8& aPackageBuf, TDes8& aResultBuf) = 0;
- };
-
-
-/**
-* mixin implemented by Mux plugin itself
-*/
-class MMMFDevSoundCustomInterfaceMuxPlugin
- {
-public:
- /**
- Attempt to open the interface.
- @param aInterfaceId
- The UID of the required interface
- @return one of the system wide error codes
- */
- virtual TInt OpenInterface(TUid aInterfaceId) = 0;
-
- /**
- Equivalent to destructor. Called to destroy plugin.
- */
- virtual void Release() = 0;
- /**
- Pass destructor key.
- Called on construction so plugin takes responsibility to call REComSession::DestroyedImplementation()
- @param aDestructorKey
- The Uid returned by REComSession::CreateImplementationL() or similar
- */
- virtual void PassDestructorKey(TUid aDestructorKey) = 0;
-
- /**
- Complete construction.
- Pass additional values from the construction phase, used subsequently by the plugin.
- @param aCustomUtility
- The custom interface utility used by the plugin to communicate with the remote
- server side DeMux plugin
- */
- virtual void CompleteConstructL(MMMFDevSoundCustomInterfaceMuxUtility* aCustomUtility) = 0;
-
- /**
- Return the custom interface
- @param aInterfaceId
- The id of the required custom interface
- @return the custom interface supported by this plugin
- */
- virtual TAny* CustomInterface(TUid aInterfaceId) = 0;
- };
-
-
-/**
-* the custom interface DEMUX Mixin class implemented by the DeMux interface
-* this is likely to be the DevSound server implementation
-*/
-class MMMFDevSoundCustomInterfaceDeMuxInterface
- {
-public:
- /**
- Open the slave
- @param aInterface
- The UID of the requested interface
- @param aPackageBuf
- A package of data that can be supplied for initialisation
- @return the result of the operation
- */
- virtual TInt DoOpenSlaveL(TUid aInterface, const TDesC8& aPackageBuf) = 0;
-
- /**
- Close the slave
- @param aHandle
- The handle of the slave plugin
- */
- virtual void DoCloseSlaveL(TInt aHandle) = 0;
-
- // original RMessage is supplied so that remote demux plugin can extract necessary details
- // using DeMux utility
-
- /**
- Relay the synchronous custom command onto the slave
- @param aMessage
- The IPC message to be sent to the slave
- @return the result of the operation
- */
- virtual TInt DoSendSlaveSyncCommandL(const RMmfIpcMessage& aMessage) = 0;
-
- /**
- Relay the synchronous custom command onto the slave and obtain a result
- @param aMessage
- The IPC message to be sent to the slave
- @return the result of the operation
- */
- virtual TInt DoSendSlaveSyncCommandResultL(const RMmfIpcMessage& aMessage) = 0;
-
- /**
- Relay an asynchronous command onto the slave
- @param aMessage
- The IPC message to be sent to the slave
- */
- virtual void DoSendSlaveAsyncCommandL(const RMmfIpcMessage& aMessage) = 0;
-
- /**
- Relay an asynchronous command onto the slave and obtain a result
- @param aMessage
- The IPC message to be sent to the slave@param aMessage
- */
- virtual void DoSendSlaveAsyncCommandResultL(const RMmfIpcMessage& aMessage) = 0;
- };
-
-
-/**
-* message data structure for demux utility
-*/
-class TMMFDevSoundCIMessageData
- {
-public:
- TInt iCommand;
- TInt iHandle;
- };
-
-
-/**
-* mixin class implemented by the demux utility
-*/
-class MMMFDevSoundCustomInterfaceDeMuxUtility
- {
-public:
- /**
- Get all settings at once into a client supplied package
- @param aMessage
- The IPC message
- @param aData
- Structure containing the command and handle
- @see TMMFDevSoundCIMessageData
- */
- virtual void GetSyncMessageDataL(const RMmfIpcMessage& aMessage, TMMFDevSoundCIMessageData& aData) = 0;
-
- /**
- Get all settings at once into a client supplied package
- from an asynchronous message
- @param aMessage
- The IPC message
- @param aData
- Structure containing the command and handle
- @see TMMFDevSoundCIMessageData
- */
- virtual void GetAsyncMessageDataL(const RMmfIpcMessage& aMessage, TMMFDevSoundCIMessageData& aData) = 0;
-
- /**
- Obtain the input descriptor length from the message
- @param aMessage
- The IPC message
- @return the length of the input descriptor in the message
- */
- virtual TInt InputDesLength(const RMmfIpcMessage& aMessage) = 0;
-
- /**
- Read the data from the input descriptor into the supplied buffer
- @param aMessage
- The IPC message
- @param aBufToFill
- The descriptor to copy the data from the input message into
- */
- virtual void ReadFromInputDesL(const RMmfIpcMessage& aMessage, TDes8* aBufToFill) = 0;
-
- /**
- Write the supplied buffer into the output buffer in the IPC message
- @param aMessage
- The IPC message
- @param aBufToWrite
- The buffer to write to the output buffer in the supplied IPC message
- */
- virtual void WriteToOutputDesL(const RMmfIpcMessage& aMessage, TDesC8& aBufToWrite) = 0;
-
- /**
- Complete the supplied IPC message with the supplied error code
- @param aMessage
- The IPC message
- @param aError
- One of the system wide error codes to complete the message with
- */
- virtual void CompleteMessage(const RMmfIpcMessage& aMessage, TInt aError) = 0;
- };
-
-
-/**
-* mixin implemented by DeMux plugin itself
-*/
-class MMMFDevSoundCustomInterfaceDeMuxPlugin : public MMMFDevSoundCustomInterfaceDeMuxInterface
- {
-public:
- /**
- Attempt to open the interface.
- @param aInterfaceId
- The UID of the required interface
- @return a handle to the remote plugin
- */
- virtual TInt OpenInterface(TUid aInterfaceId) = 0;
-
- /**
- Equivalent to destructor. Called to destroy plugin.
- */
- virtual void Release() = 0;
- /**
- Pass destructor key.
- Called on construction so plugin takes responsibility to call REComSession::DestroyedImplementation()
- @param aDestructorKey
- The Uid returned by REComSession::CreateImplementationL() or similar
- */
- virtual void PassDestructorKey(TUid aDestructorKey) = 0;
-
- /**
- Complete construction.
- Set the target of the custom interface call
- @param aDevSoundServer
- The DevSound to call the custom interface on.
- */
- virtual void SetInterfaceTarget(MMMFDevSoundCustomInterfaceTarget* aTarget) = 0;
-
- /**
- Complete construction.
- @param aUtility
- A pointer to the DeMux utility to use
- */
- virtual void CompleteConstructL(MMMFDevSoundCustomInterfaceDeMuxUtility* aUtility) = 0;
-
- /**
- Refresh the interfaces if circumstances / other areas of DevSound have changed
- */
- virtual void RefreshL() = 0;
- };
-
-
-
-#endif