sl@0: // Copyright (c) 2004-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: // sl@0: sl@0: #ifndef __MMFBTDEVSOUNDSESSION_H__ sl@0: #define __MMFBTDEVSOUNDSESSION_H__ sl@0: sl@0: #include sl@0: #include sl@0: #include sl@0: #include sl@0: #include sl@0: #include sl@0: #ifdef SYMBIAN_ENABLE_SPLIT_HEADERS sl@0: #include sl@0: #endif sl@0: #include sl@0: #include "MmfBtAudioClientServer.h" sl@0: sl@0: sl@0: class CMMFAudioServer; sl@0: class CMMFDevSoundServer; sl@0: class CMMFDevSoundSvrImp; sl@0: sl@0: class CMMFDevSoundSession : public CMmfIpcSession, public MDevSoundObserver sl@0: { sl@0: public: sl@0: static CMMFDevSoundSession* NewL(RServer2& aPolicyServerHandle); sl@0: ~CMMFDevSoundSession(); sl@0: sl@0: void CreateL(const CMmfIpcServer& aServer); sl@0: void ServiceL(const RMmfIpcMessage& aMessage); sl@0: TInt DevSoundSessionId(void) {return iDevSoundSessionId;}; sl@0: void SendEventToClient(/*TMMFAudioServerEvent& aEvent*/); sl@0: TBool CheckClientCapabilities(); sl@0: sl@0: sl@0: TBool DoInitialize1L(const RMmfIpcMessage& aMessage); sl@0: TBool DoInitialize2L(const RMmfIpcMessage& aMessage); sl@0: TBool DoInitialize3L(const RMmfIpcMessage& aMessage); sl@0: TBool DoInitialize4L(const RMmfIpcMessage& aMessage); sl@0: TBool DoCapabilitiesL(const RMmfIpcMessage& aMessage); sl@0: TBool DoConfigL(const RMmfIpcMessage& aMessage); sl@0: TBool DoSetConfigL(const RMmfIpcMessage& aMessage); sl@0: TBool DoMaxVolumeL(const RMmfIpcMessage& aMessage); sl@0: TBool DoVolumeL(const RMmfIpcMessage& aMessage); sl@0: TBool DoSetVolumeL(const RMmfIpcMessage& aMessage); sl@0: TBool DoMaxGainL(const RMmfIpcMessage& aMessage); sl@0: TBool DoGainL(const RMmfIpcMessage& aMessage); sl@0: TBool DoSetGainL(const RMmfIpcMessage& aMessage); sl@0: TBool DoGetPlayBalanceL(const RMmfIpcMessage& aMessage); sl@0: TBool DoSetPlayBalanceL(const RMmfIpcMessage& aMessage); sl@0: TBool DoGetRecordBalanceL(const RMmfIpcMessage& aMessage); sl@0: TBool DoSetRecordBalanceL(const RMmfIpcMessage& aMessage); sl@0: TBool DoPlayInitL(const RMmfIpcMessage& aMessage); sl@0: TBool DoRecordInitL(const RMmfIpcMessage& aMessage); sl@0: TBool DoPlayDataL(const RMmfIpcMessage& aMessage); sl@0: TBool DoRecordDataL(const RMmfIpcMessage& aMessage); sl@0: TBool DoStopL(const RMmfIpcMessage& aMessage); sl@0: TBool DoPauseL(const RMmfIpcMessage& aMessage); sl@0: TBool DoPlayToneL(const RMmfIpcMessage& aMessage); sl@0: TBool DoPlayDualToneL(const RMmfIpcMessage& aMessage); sl@0: TBool DoPlayDTMFStringL(const RMmfIpcMessage& aMessage); sl@0: TBool DoPlayToneSequenceL(const RMmfIpcMessage& aMessage); sl@0: TBool DoPlayFixedSequenceL(const RMmfIpcMessage& aMessage); sl@0: TBool DoSetDTMFLengthsL(const RMmfIpcMessage& aMessage); sl@0: TBool DoSetVolumeRampL(const RMmfIpcMessage& aMessage); sl@0: TBool DoGetSupportedInputDataTypesL(const RMmfIpcMessage& aMessage); sl@0: TBool DoCopyFourCCArrayDataL(const RMmfIpcMessage& aMessage); sl@0: TBool DoGetRecordedBufferL(const RMmfIpcMessage& aMessage); sl@0: TBool DoSamplesRecordedL(const RMmfIpcMessage& aMessage); sl@0: TBool DoSamplesPlayedL(const RMmfIpcMessage& aMessage); sl@0: TBool DoSetToneRepeatsL(const RMmfIpcMessage& aMessage); sl@0: TBool DoSetPrioritySettingsL(const RMmfIpcMessage& aMessage); sl@0: TBool DoFixedSequenceNameL(const RMmfIpcMessage& aMessage); sl@0: TBool DoConvertInitL(const RMmfIpcMessage& aMessage); sl@0: TBool DoConvertDataL(const RMmfIpcMessage& aMessage); sl@0: TBool DoFixedSequenceCountL(const RMmfIpcMessage& aMessage); sl@0: TBool DoGetSupportedOutputDataTypesL(const RMmfIpcMessage& aMessage); sl@0: sl@0: TBool DoInitializeCompleteEventL(const RMmfIpcMessage& aMessage); sl@0: TBool DoCancelInitializeCompleteEventL(const RMmfIpcMessage& aMessage); sl@0: TBool DoBufferToBeFilledEventL(const RMmfIpcMessage& aMessage); sl@0: TBool DoCancelBufferToBeFilledEventL(const RMmfIpcMessage& aMessage); sl@0: TBool DoBufferToBeEmptiedEventL(const RMmfIpcMessage& aMessage); sl@0: TBool DoCancelBufferToBeEmptiedEventL(const RMmfIpcMessage& aMessage); sl@0: TBool DoPlayErrorEventL(const RMmfIpcMessage& aMessage); sl@0: TBool DoCancelPlayErrorEventL(const RMmfIpcMessage& aMessage); sl@0: TBool DoRecordErrorEventL(const RMmfIpcMessage& aMessage); sl@0: TBool DoCancelRecordErrorEventL(const RMmfIpcMessage& aMessage); sl@0: TBool DoToneFinishedEventL(const RMmfIpcMessage& aMessage); sl@0: TBool DoCancelToneFinishedEventL(const RMmfIpcMessage& aMessage); sl@0: TBool DoSendEventToClientEventL(const RMmfIpcMessage& aMessage); sl@0: TBool DoCancelSendEventToClientEventL(const RMmfIpcMessage& aMessage); sl@0: TBool DoRegisterAsClientL(const RMmfIpcMessage& aMessage); sl@0: TBool DoCancelRegisterAsClientL(const RMmfIpcMessage& aMessage); sl@0: TBool DoGetResourceNotificationDataL(const RMmfIpcMessage& aMessage); sl@0: TBool DoWillResumePlayL(const RMmfIpcMessage& aMessage); sl@0: TBool DoSetClientThreadInfoL(const RMmfIpcMessage& aMessage); sl@0: sl@0: void InitializeL(MDevSoundObserver& aDevSoundObserver, TMMFState aMode); sl@0: void InitializeL(MDevSoundObserver& aDevSoundObserver, TUid aHWDev, TMMFState aMode); sl@0: void InitializeL(MDevSoundObserver& aDevSoundObserver, CArrayPtr aHWDevArray, TMMFState aMode); sl@0: void InitializeL(MDevSoundObserver& aDevSoundObserver, TFourCC aDesiredFourCC, TMMFState aMode); sl@0: sl@0: TMMFCapabilities Capabilities(); sl@0: TMMFCapabilities Config() const; sl@0: void SetConfigL(const TMMFCapabilities& aCaps); sl@0: TInt MaxVolume(); sl@0: TInt Volume(); sl@0: void SetVolume(TInt aVolume); sl@0: TInt MaxGain(); sl@0: TInt Gain(); sl@0: void SetGain(TInt aGain); sl@0: void GetPlayBalanceL(TInt& aLeftPercentage, TInt& aRightPercentage); sl@0: void SetPlayBalanceL(TInt aLeftPercentage, TInt aRightPercentage); sl@0: void GetRecordBalanceL(TInt& aLeftPercentage, TInt& aRightPercentage); sl@0: void SetRecordBalanceL(TInt aLeftPercentage, TInt aRightPercentage); sl@0: void PlayInitL(); sl@0: void RecordInitL(); sl@0: void PlayData(); sl@0: void RecordData(); sl@0: void Stop(); sl@0: void Pause(); sl@0: TInt SamplesRecorded(); sl@0: TInt SamplesPlayed(); sl@0: void PlayToneL(TInt aFrequency, const TTimeIntervalMicroSeconds& aDuration); sl@0: void PlayDualToneL(TInt aFrequencyOne, TInt aFrequencyTwo, const TTimeIntervalMicroSeconds& aDuration); sl@0: void PlayDTMFStringL(const TDesC& aDTMFString); sl@0: void PlayToneSequenceL(const TDesC8& aData); sl@0: void PlayFixedSequenceL(TInt aSequenceNumber); sl@0: void SetToneRepeats(TInt aRepeatCount, sl@0: const TTimeIntervalMicroSeconds& aRepeatTrailingSilence); sl@0: void SetDTMFLengths(TTimeIntervalMicroSeconds32& aToneOnLength, sl@0: TTimeIntervalMicroSeconds32& aToneOffLength, sl@0: TTimeIntervalMicroSeconds32& aPauseLength); sl@0: sl@0: void SetVolumeRamp(const TTimeIntervalMicroSeconds& aRampDuration); sl@0: void SetPrioritySettings(const TMMFPrioritySettings& aPrioritySettings); sl@0: void ConvertInitL(); sl@0: void ConvertData(); sl@0: TAny* CustomInterface(TUid aInterfaceId); sl@0: TInt FixedSequenceCount(); sl@0: const TDesC& FixedSequenceName(TInt aSequenceNumber); sl@0: void GetSupportedInputDataTypesL(RArray& aSupportedDataTypes, const TMMFPrioritySettings& aPrioritySettings) const; sl@0: void GetSupportedOutputDataTypesL(RArray& aSupportedDataTypes, const TMMFPrioritySettings& aPrioritySettings) const; sl@0: sl@0: void InitializeComplete(TInt aError); sl@0: void ToneFinished(TInt aError); sl@0: void BufferToBeFilled(CMMFBuffer* aBuffer); sl@0: void PlayError(TInt aError); sl@0: void BufferToBeEmptied(CMMFBuffer* aBuffer); sl@0: void RecordError(TInt aError); sl@0: void ConvertError(TInt aError); sl@0: void DeviceMessage(TUid aMessageType, const TDesC8& aMsg); sl@0: void SendEventToClient(const TMMFEvent& aEvent); sl@0: sl@0: TInt RegisterAsClient(TUid aEventType, const TDesC8& aNotificationRegistrationData = KNullDesC8); sl@0: TInt CancelRegisterAsClient(TUid aEventType); sl@0: TInt GetResourceNotificationData(TUid aEventType, TDes8& aNotificationData); sl@0: TInt WillResumePlay(); sl@0: sl@0: protected: sl@0: CMMFDevSoundSession(); sl@0: void ConstructL(RServer2& aPolicyServerHandle); sl@0: CMMFDevSoundSvrImp* iBody; sl@0: sl@0: private: sl@0: TInt iDevSoundSessionId; sl@0: RMmfIpcMessage* iBTBFMessage; sl@0: RMmfIpcMessage* iBTBEMessage; sl@0: RMmfIpcMessage* iPEMessage; sl@0: RMmfIpcMessage* iREMessage; sl@0: RMmfIpcMessage* iTFMessage; sl@0: RMmfIpcMessage* iICMessage; sl@0: RMmfIpcMessage* iSETCMessage; sl@0: CMMFDataBuffer* iBufferPlay; sl@0: CMMFDataBuffer* iBufferRecord; sl@0: RArray iArray; sl@0: HBufC* iDTMFString; sl@0: HBufC8* iToneSeqBuf; sl@0: TBool iClientHasCaps; sl@0: }; sl@0: sl@0: sl@0: sl@0: #endif