os/mm/devsound/sounddevbt/src/A2dpBlueTooth/server/A2dpBTHeadsetAudioIfServer.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.
     1 // Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
     2 // All rights reserved.
     3 // This component and the accompanying materials are made available
     4 // under the terms of "Eclipse Public License v1.0"
     5 // which accompanies this distribution, and is available
     6 // at the URL "http://www.eclipse.org/legal/epl-v10.html".
     7 //
     8 // Initial Contributors:
     9 // Nokia Corporation - initial contribution.
    10 //
    11 // Contributors:
    12 //
    13 // Description:
    14 //
    15 
    16 #ifndef __A2DPBTHEADSETAUDIOIFSERVER_H__
    17 #define __A2DPBTHEADSETAUDIOIFSERVER_H__
    18 
    19 #include <e32base.h>
    20 #include <mmf/common/mmfipc.h>
    21 #ifdef SYMBIAN_ENABLE_SPLIT_HEADERS
    22 #include <mmf/common/mmfipcserver.h>
    23 #endif
    24 #include "A2dpBTHeadsetAudioIfClientServer.h"
    25 
    26 class CA2dpBTHeadsetAudioInterface; // fwd declaration
    27 class TFourCC;
    28 class TRange;
    29 
    30 /**
    31  *	CA2dpBTHeadsetAudioIfServer definition
    32  */
    33 class CA2dpBTHeadsetAudioIfServer : public CMmfIpcServer
    34 	{
    35 public:
    36 	IMPORT_C static TInt StartThread(TAny* aParms);	// thread entry point
    37 	
    38 	static CA2dpBTHeadsetAudioIfServer* NewL();
    39 	~CA2dpBTHeadsetAudioIfServer();
    40 	CMmfIpcSession* NewSessionL(const TVersion &aVersion) const;
    41 private:
    42 	CA2dpBTHeadsetAudioIfServer();
    43 	void ConstructL();
    44 private:
    45 	CA2dpBTHeadsetAudioInterface* iBTAudioInterface;
    46 	};
    47 
    48 /**
    49  *	CA2dpBTHeadsetIfEventHandler
    50  */
    51 class CA2dpBTHeadsetIfEventHandler : public CActive
    52 	{
    53 public:
    54 	static CA2dpBTHeadsetIfEventHandler* NewL();
    55 	~CA2dpBTHeadsetIfEventHandler();
    56 	void StartL(const RMmfIpcMessage& aMessage);
    57 	void Stop();
    58 private:
    59 	CA2dpBTHeadsetIfEventHandler();
    60 	void RunL();
    61 	void DoCancel();
    62 	void ConstructL();
    63 private:
    64 	RMmfIpcMessage* iMessage;	
    65 	};
    66 	
    67 /**
    68  *	CA2dpBTHeadsetAudioIfSession definition
    69  */
    70 class CA2dpBTHeadsetAudioIfSession : public CMmfIpcSession
    71 	{
    72 public:
    73 	static CA2dpBTHeadsetAudioIfSession* NewL(CA2dpBTHeadsetAudioInterface* aBTAudioInterface);
    74  	~CA2dpBTHeadsetAudioIfSession();
    75 	void ServiceL(const RMessage2& aMessage);
    76 	
    77 private:
    78 	CA2dpBTHeadsetAudioIfSession(CA2dpBTHeadsetAudioInterface* aBTAudioInterface);
    79 	void ConstructL();
    80 	
    81 	TBool DoInitializeL(const RMmfIpcMessage& aMessage);
    82 	TBool DoCancelInitializeL(const RMmfIpcMessage& aMessage);
    83 	TBool DoCopyFourCCArrayDataL(const RMmfIpcMessage& aMessage);
    84 	TBool DoCopyUintArrayDataL(const RMmfIpcMessage& aMessage, RArray<TUint> aArray);
    85 	TBool DoCopyChannelsArrayDataL(const RMmfIpcMessage& aMessage);
    86 	TInt  DoGetSupportedDataTypesL(const RMmfIpcMessage& aMessage);// returns error value
    87 	TInt  DoGetSupportedSampleRatesL(const RMmfIpcMessage& aMessage);
    88 	TBool DoGetSupportedSampleRatesDiscreteL(const RMmfIpcMessage& aMessage);
    89 	TBool DoGetSupportedSampleRatesRangeL(const RMmfIpcMessage& aMessage);
    90 	TInt  DoGetSupportedChannelsL(const RMmfIpcMessage& aMessage);
    91 	TBool DoGetStereoSupportL(const RMmfIpcMessage& aMessage);
    92 	TInt DoSetDataTypeL(const RMmfIpcMessage& aMessage);	// returns error value
    93 	TInt DoSetSampleRateL(const RMmfIpcMessage& aMessage);// returns error value
    94 	TInt DoSetChannelsL(const RMmfIpcMessage& aMessage);// returns error value
    95 	TBool DoOpenDeviceL(const RMmfIpcMessage& aMessage);
    96 	TBool DoCancelOpenDevice(const RMmfIpcMessage& aMessage);
    97 	TBool DoCloseDeviceL(const RMmfIpcMessage& aMessage);
    98 	TBool DoVolumeL(const RMmfIpcMessage& aMessage);
    99 	TInt DoSetVolumeL(const RMmfIpcMessage& aMessage);// returns error value
   100 	TBool DoPlayDataL(const RMmfIpcMessage& aMessage);
   101 	TBool DoCancelPlayDataL(const RMmfIpcMessage& aMessage);
   102 	TBool DoFlushBufferL(const RMmfIpcMessage& aMessage);
   103 	TBool DoBytesPlayedL(const RMmfIpcMessage& aMessage);
   104 	TBool DoResetBytesPlayedL(const RMmfIpcMessage& aMessage);
   105 	TBool DoPauseBufferL(const RMmfIpcMessage& aMessage);
   106 	TBool DoResumePlayingL(const RMmfIpcMessage& aMessage);
   107 	TBool DoNotifyErrorL(const RMmfIpcMessage& aMessage);
   108 	TBool DoCancelNotifyErrorL(const RMmfIpcMessage& aMessage);
   109 
   110 private:
   111 	CA2dpBTHeadsetAudioInterface* iBTAudioInterface;	// Not owned
   112 	// Hmm - one handler per asynch call and then no need to store messages?
   113 	CA2dpBTHeadsetIfEventHandler* iInitHandler;	// AO to manage asynch calls to the interface
   114 	CA2dpBTHeadsetIfEventHandler* iOpenDeviceHandler;	// AO to manage asynch calls to the interface
   115 	CA2dpBTHeadsetIfEventHandler* iCloseDeviceHandler;	// AO to manage asynch calls to the interface
   116 	CA2dpBTHeadsetIfEventHandler* iPlayDataHandler;	// AO to manage asynch calls to the interface
   117 	CA2dpBTHeadsetIfEventHandler* iNotifyErrorHandler;	// AO to manage asynch calls to the interface
   118 	
   119 	RArray<TFourCC> iFourCCArray;
   120 	RArray<TUint> iDiscreteArray;
   121 	RArray<TRange> iRangeArray;
   122 	RArray<TUint> iStereoSupportArray;
   123 	};
   124 #endif