1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1.2 +++ b/os/mm/devsound/sounddevbt/PlatSec/src/Server/AudioServer/MmfBtDevSoundSession.h Fri Jun 15 03:10:57 2012 +0200
1.3 @@ -0,0 +1,198 @@
1.4 +// Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
1.5 +// All rights reserved.
1.6 +// This component and the accompanying materials are made available
1.7 +// under the terms of "Eclipse Public License v1.0"
1.8 +// which accompanies this distribution, and is available
1.9 +// at the URL "http://www.eclipse.org/legal/epl-v10.html".
1.10 +//
1.11 +// Initial Contributors:
1.12 +// Nokia Corporation - initial contribution.
1.13 +//
1.14 +// Contributors:
1.15 +//
1.16 +// Description:
1.17 +//
1.18 +
1.19 +#ifndef __MMFBTDEVSOUNDSESSION_H__
1.20 +#define __MMFBTDEVSOUNDSESSION_H__
1.21 +
1.22 +#include <e32base.h>
1.23 +#include <e32std.h>
1.24 +#include <mmfbase.h>
1.25 +#include <mmfutilities.h>
1.26 +#include <mmf/common/mmfcontroller.h>
1.27 +#include <mmf/common/mmfipc.h>
1.28 +#ifdef SYMBIAN_ENABLE_SPLIT_HEADERS
1.29 +#include <mmf/common/mmfipcserver.h>
1.30 +#endif
1.31 +#include <mmf/server/sounddevice.h>
1.32 +#include "MmfBtAudioClientServer.h"
1.33 +
1.34 +
1.35 +class CMMFAudioServer;
1.36 +class CMMFDevSoundServer;
1.37 +class CMMFDevSoundSvrImp;
1.38 +
1.39 +class CMMFDevSoundSession : public CMmfIpcSession, public MDevSoundObserver
1.40 + {
1.41 +public:
1.42 + static CMMFDevSoundSession* NewL(RServer2& aPolicyServerHandle);
1.43 + ~CMMFDevSoundSession();
1.44 +
1.45 + void CreateL(const CMmfIpcServer& aServer);
1.46 + void ServiceL(const RMmfIpcMessage& aMessage);
1.47 + TInt DevSoundSessionId(void) {return iDevSoundSessionId;};
1.48 + void SendEventToClient(/*TMMFAudioServerEvent& aEvent*/);
1.49 + TBool CheckClientCapabilities();
1.50 +
1.51 +
1.52 + TBool DoInitialize1L(const RMmfIpcMessage& aMessage);
1.53 + TBool DoInitialize2L(const RMmfIpcMessage& aMessage);
1.54 + TBool DoInitialize3L(const RMmfIpcMessage& aMessage);
1.55 + TBool DoInitialize4L(const RMmfIpcMessage& aMessage);
1.56 + TBool DoCapabilitiesL(const RMmfIpcMessage& aMessage);
1.57 + TBool DoConfigL(const RMmfIpcMessage& aMessage);
1.58 + TBool DoSetConfigL(const RMmfIpcMessage& aMessage);
1.59 + TBool DoMaxVolumeL(const RMmfIpcMessage& aMessage);
1.60 + TBool DoVolumeL(const RMmfIpcMessage& aMessage);
1.61 + TBool DoSetVolumeL(const RMmfIpcMessage& aMessage);
1.62 + TBool DoMaxGainL(const RMmfIpcMessage& aMessage);
1.63 + TBool DoGainL(const RMmfIpcMessage& aMessage);
1.64 + TBool DoSetGainL(const RMmfIpcMessage& aMessage);
1.65 + TBool DoGetPlayBalanceL(const RMmfIpcMessage& aMessage);
1.66 + TBool DoSetPlayBalanceL(const RMmfIpcMessage& aMessage);
1.67 + TBool DoGetRecordBalanceL(const RMmfIpcMessage& aMessage);
1.68 + TBool DoSetRecordBalanceL(const RMmfIpcMessage& aMessage);
1.69 + TBool DoPlayInitL(const RMmfIpcMessage& aMessage);
1.70 + TBool DoRecordInitL(const RMmfIpcMessage& aMessage);
1.71 + TBool DoPlayDataL(const RMmfIpcMessage& aMessage);
1.72 + TBool DoRecordDataL(const RMmfIpcMessage& aMessage);
1.73 + TBool DoStopL(const RMmfIpcMessage& aMessage);
1.74 + TBool DoPauseL(const RMmfIpcMessage& aMessage);
1.75 + TBool DoPlayToneL(const RMmfIpcMessage& aMessage);
1.76 + TBool DoPlayDualToneL(const RMmfIpcMessage& aMessage);
1.77 + TBool DoPlayDTMFStringL(const RMmfIpcMessage& aMessage);
1.78 + TBool DoPlayToneSequenceL(const RMmfIpcMessage& aMessage);
1.79 + TBool DoPlayFixedSequenceL(const RMmfIpcMessage& aMessage);
1.80 + TBool DoSetDTMFLengthsL(const RMmfIpcMessage& aMessage);
1.81 + TBool DoSetVolumeRampL(const RMmfIpcMessage& aMessage);
1.82 + TBool DoGetSupportedInputDataTypesL(const RMmfIpcMessage& aMessage);
1.83 + TBool DoCopyFourCCArrayDataL(const RMmfIpcMessage& aMessage);
1.84 + TBool DoGetRecordedBufferL(const RMmfIpcMessage& aMessage);
1.85 + TBool DoSamplesRecordedL(const RMmfIpcMessage& aMessage);
1.86 + TBool DoSamplesPlayedL(const RMmfIpcMessage& aMessage);
1.87 + TBool DoSetToneRepeatsL(const RMmfIpcMessage& aMessage);
1.88 + TBool DoSetPrioritySettingsL(const RMmfIpcMessage& aMessage);
1.89 + TBool DoFixedSequenceNameL(const RMmfIpcMessage& aMessage);
1.90 + TBool DoConvertInitL(const RMmfIpcMessage& aMessage);
1.91 + TBool DoConvertDataL(const RMmfIpcMessage& aMessage);
1.92 + TBool DoFixedSequenceCountL(const RMmfIpcMessage& aMessage);
1.93 + TBool DoGetSupportedOutputDataTypesL(const RMmfIpcMessage& aMessage);
1.94 +
1.95 + TBool DoInitializeCompleteEventL(const RMmfIpcMessage& aMessage);
1.96 + TBool DoCancelInitializeCompleteEventL(const RMmfIpcMessage& aMessage);
1.97 + TBool DoBufferToBeFilledEventL(const RMmfIpcMessage& aMessage);
1.98 + TBool DoCancelBufferToBeFilledEventL(const RMmfIpcMessage& aMessage);
1.99 + TBool DoBufferToBeEmptiedEventL(const RMmfIpcMessage& aMessage);
1.100 + TBool DoCancelBufferToBeEmptiedEventL(const RMmfIpcMessage& aMessage);
1.101 + TBool DoPlayErrorEventL(const RMmfIpcMessage& aMessage);
1.102 + TBool DoCancelPlayErrorEventL(const RMmfIpcMessage& aMessage);
1.103 + TBool DoRecordErrorEventL(const RMmfIpcMessage& aMessage);
1.104 + TBool DoCancelRecordErrorEventL(const RMmfIpcMessage& aMessage);
1.105 + TBool DoToneFinishedEventL(const RMmfIpcMessage& aMessage);
1.106 + TBool DoCancelToneFinishedEventL(const RMmfIpcMessage& aMessage);
1.107 + TBool DoSendEventToClientEventL(const RMmfIpcMessage& aMessage);
1.108 + TBool DoCancelSendEventToClientEventL(const RMmfIpcMessage& aMessage);
1.109 + TBool DoRegisterAsClientL(const RMmfIpcMessage& aMessage);
1.110 + TBool DoCancelRegisterAsClientL(const RMmfIpcMessage& aMessage);
1.111 + TBool DoGetResourceNotificationDataL(const RMmfIpcMessage& aMessage);
1.112 + TBool DoWillResumePlayL(const RMmfIpcMessage& aMessage);
1.113 + TBool DoSetClientThreadInfoL(const RMmfIpcMessage& aMessage);
1.114 +
1.115 + void InitializeL(MDevSoundObserver& aDevSoundObserver, TMMFState aMode);
1.116 + void InitializeL(MDevSoundObserver& aDevSoundObserver, TUid aHWDev, TMMFState aMode);
1.117 + void InitializeL(MDevSoundObserver& aDevSoundObserver, CArrayPtr<TUid> aHWDevArray, TMMFState aMode);
1.118 + void InitializeL(MDevSoundObserver& aDevSoundObserver, TFourCC aDesiredFourCC, TMMFState aMode);
1.119 +
1.120 + TMMFCapabilities Capabilities();
1.121 + TMMFCapabilities Config() const;
1.122 + void SetConfigL(const TMMFCapabilities& aCaps);
1.123 + TInt MaxVolume();
1.124 + TInt Volume();
1.125 + void SetVolume(TInt aVolume);
1.126 + TInt MaxGain();
1.127 + TInt Gain();
1.128 + void SetGain(TInt aGain);
1.129 + void GetPlayBalanceL(TInt& aLeftPercentage, TInt& aRightPercentage);
1.130 + void SetPlayBalanceL(TInt aLeftPercentage, TInt aRightPercentage);
1.131 + void GetRecordBalanceL(TInt& aLeftPercentage, TInt& aRightPercentage);
1.132 + void SetRecordBalanceL(TInt aLeftPercentage, TInt aRightPercentage);
1.133 + void PlayInitL();
1.134 + void RecordInitL();
1.135 + void PlayData();
1.136 + void RecordData();
1.137 + void Stop();
1.138 + void Pause();
1.139 + TInt SamplesRecorded();
1.140 + TInt SamplesPlayed();
1.141 + void PlayToneL(TInt aFrequency, const TTimeIntervalMicroSeconds& aDuration);
1.142 + void PlayDualToneL(TInt aFrequencyOne, TInt aFrequencyTwo, const TTimeIntervalMicroSeconds& aDuration);
1.143 + void PlayDTMFStringL(const TDesC& aDTMFString);
1.144 + void PlayToneSequenceL(const TDesC8& aData);
1.145 + void PlayFixedSequenceL(TInt aSequenceNumber);
1.146 + void SetToneRepeats(TInt aRepeatCount,
1.147 + const TTimeIntervalMicroSeconds& aRepeatTrailingSilence);
1.148 + void SetDTMFLengths(TTimeIntervalMicroSeconds32& aToneOnLength,
1.149 + TTimeIntervalMicroSeconds32& aToneOffLength,
1.150 + TTimeIntervalMicroSeconds32& aPauseLength);
1.151 +
1.152 + void SetVolumeRamp(const TTimeIntervalMicroSeconds& aRampDuration);
1.153 + void SetPrioritySettings(const TMMFPrioritySettings& aPrioritySettings);
1.154 + void ConvertInitL();
1.155 + void ConvertData();
1.156 + TAny* CustomInterface(TUid aInterfaceId);
1.157 + TInt FixedSequenceCount();
1.158 + const TDesC& FixedSequenceName(TInt aSequenceNumber);
1.159 + void GetSupportedInputDataTypesL(RArray<TFourCC>& aSupportedDataTypes, const TMMFPrioritySettings& aPrioritySettings) const;
1.160 + void GetSupportedOutputDataTypesL(RArray<TFourCC>& aSupportedDataTypes, const TMMFPrioritySettings& aPrioritySettings) const;
1.161 +
1.162 + void InitializeComplete(TInt aError);
1.163 + void ToneFinished(TInt aError);
1.164 + void BufferToBeFilled(CMMFBuffer* aBuffer);
1.165 + void PlayError(TInt aError);
1.166 + void BufferToBeEmptied(CMMFBuffer* aBuffer);
1.167 + void RecordError(TInt aError);
1.168 + void ConvertError(TInt aError);
1.169 + void DeviceMessage(TUid aMessageType, const TDesC8& aMsg);
1.170 + void SendEventToClient(const TMMFEvent& aEvent);
1.171 +
1.172 + TInt RegisterAsClient(TUid aEventType, const TDesC8& aNotificationRegistrationData = KNullDesC8);
1.173 + TInt CancelRegisterAsClient(TUid aEventType);
1.174 + TInt GetResourceNotificationData(TUid aEventType, TDes8& aNotificationData);
1.175 + TInt WillResumePlay();
1.176 +
1.177 +protected:
1.178 + CMMFDevSoundSession();
1.179 + void ConstructL(RServer2& aPolicyServerHandle);
1.180 + CMMFDevSoundSvrImp* iBody;
1.181 +
1.182 +private:
1.183 + TInt iDevSoundSessionId;
1.184 + RMmfIpcMessage* iBTBFMessage;
1.185 + RMmfIpcMessage* iBTBEMessage;
1.186 + RMmfIpcMessage* iPEMessage;
1.187 + RMmfIpcMessage* iREMessage;
1.188 + RMmfIpcMessage* iTFMessage;
1.189 + RMmfIpcMessage* iICMessage;
1.190 + RMmfIpcMessage* iSETCMessage;
1.191 + CMMFDataBuffer* iBufferPlay;
1.192 + CMMFDataBuffer* iBufferRecord;
1.193 + RArray<TFourCC> iArray;
1.194 + HBufC* iDTMFString;
1.195 + HBufC8* iToneSeqBuf;
1.196 + TBool iClientHasCaps;
1.197 + };
1.198 +
1.199 +
1.200 +
1.201 +#endif