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: #include <f32file.h> sl@0: #include <e32math.h> sl@0: #include <s32mem.h> sl@0: #include "MmfBtDevSoundProxy.h" sl@0: #include "MmfBtDevSoundServerStart.h" sl@0: #include "../../../inc/common/mmfBtBase.hrh" sl@0: #include "MmfBtAudioClientServer.h" sl@0: sl@0: sl@0: EXPORT_C void RMMFDevSoundProxy::Close() sl@0: { sl@0: RMmfSessionBase::Close(); sl@0: delete iBuffer; sl@0: delete iSeqName; sl@0: } sl@0: sl@0: EXPORT_C TInt RMMFDevSoundProxy::Open() sl@0: { sl@0: TInt err = KErrNone; sl@0: RMMFAudioServerProxy* audioServerProxy = NULL; sl@0: HBufC* devSoundServerName = NULL; sl@0: iBuffer = NULL; sl@0: iSeqName = NULL; sl@0: TRAP(err, iSeqName = HBufC::NewL(KMaxFixedSequenceNameLength)); sl@0: if(err) sl@0: { sl@0: iSeqName = NULL; sl@0: return err; sl@0: } sl@0: sl@0: TRAP(err, audioServerProxy = new (ELeave) RMMFAudioServerProxy()); sl@0: if(err != KErrNone) sl@0: { sl@0: delete iSeqName; sl@0: iSeqName = NULL; sl@0: return err; sl@0: } sl@0: sl@0: err = audioServerProxy->Open(); sl@0: if(err != KErrNone) sl@0: { sl@0: delete audioServerProxy; sl@0: delete iSeqName; sl@0: iSeqName = NULL; sl@0: return err; sl@0: } sl@0: sl@0: sl@0: TRAP(err, devSoundServerName = audioServerProxy->GetDevSoundServerNameL()); sl@0: if(err) sl@0: { sl@0: audioServerProxy->Close(); sl@0: delete audioServerProxy; sl@0: delete iSeqName; sl@0: iSeqName = NULL; sl@0: return err; sl@0: } sl@0: sl@0: TPtr devSoundServerNamePtr = devSoundServerName->Des(); sl@0: sl@0: TInt retry=2; sl@0: for (;;) sl@0: { sl@0: err = CreateSession(devSoundServerNamePtr, TVersion(KMMFDevSoundServerVersion, sl@0: KMMFDevSoundServerMinorVersionNumber, sl@0: KMMFDevSoundServerBuildVersionNumber)); sl@0: sl@0: if (err!=KErrNotFound && err!=KErrServerTerminated) sl@0: break;//return r; sl@0: if (--retry==0) sl@0: break;//return r; sl@0: } sl@0: sl@0: if(err) sl@0: { sl@0: delete iSeqName; sl@0: iSeqName = NULL; sl@0: } sl@0: audioServerProxy->Close(); sl@0: delete audioServerProxy; sl@0: delete devSoundServerName; sl@0: sl@0: return err; sl@0: } sl@0: sl@0: EXPORT_C TInt RMMFDevSoundProxy::SetDevSoundInfo() sl@0: { sl@0: return SendReceive(EMMFAudioLaunchRequests); sl@0: } sl@0: sl@0: EXPORT_C TInt RMMFDevSoundProxy::InitializeL(TMMFState aMode) sl@0: { sl@0: TMMFDevSoundProxySettings set; sl@0: set.iMode = aMode; sl@0: TMMFDevSoundProxySettingsPckg pckg(set); sl@0: return SendReceive(EMMFDevSoundProxyInitialize1, pckg); sl@0: } sl@0: sl@0: EXPORT_C TInt RMMFDevSoundProxy::InitializeL(TUid aHWDev, TMMFState aMode) sl@0: { sl@0: TMMFDevSoundProxySettings set; sl@0: set.iHWDev = aHWDev; sl@0: set.iMode = aMode; sl@0: TMMFDevSoundProxySettingsPckg pckg(set); sl@0: return SendReceive(EMMFDevSoundProxyInitialize2, pckg); sl@0: } sl@0: sl@0: EXPORT_C TInt RMMFDevSoundProxy::InitializeL(CArrayPtr<TUid> /*aHWDevArray*/, TMMFState /*aMode*/) sl@0: { sl@0: return SendReceive(EMMFDevSoundProxyInitialize3); sl@0: } sl@0: sl@0: EXPORT_C TInt RMMFDevSoundProxy::InitializeL(TFourCC aDesiredFourCC, TMMFState aMode) sl@0: { sl@0: TMMFDevSoundProxySettings set; sl@0: set.iDesiredFourCC = aDesiredFourCC; sl@0: set.iMode = aMode; sl@0: TMMFDevSoundProxySettingsPckg pckg(set); sl@0: return SendReceive(EMMFDevSoundProxyInitialize4, pckg); sl@0: } sl@0: sl@0: EXPORT_C TMMFCapabilities RMMFDevSoundProxy::Capabilities() sl@0: { sl@0: TMMFDevSoundProxySettings set; sl@0: TMMFDevSoundProxySettingsPckg pckg(set); sl@0: SendReceiveResult(EMMFDevSoundProxyCapabilities,KNullDesC8,KNullDesC8,pckg); sl@0: return pckg().iCaps; sl@0: } sl@0: sl@0: EXPORT_C TMMFCapabilities RMMFDevSoundProxy::Config() sl@0: { sl@0: TMMFDevSoundProxySettings set; sl@0: TMMFDevSoundProxySettingsPckg pckg(set); sl@0: SendReceiveResult(EMMFDevSoundProxyConfig,KNullDesC8,KNullDesC8,pckg); sl@0: return pckg().iConfig; sl@0: } sl@0: sl@0: EXPORT_C TInt RMMFDevSoundProxy::SetConfigL(const TMMFCapabilities& aConfig) sl@0: { sl@0: TMMFDevSoundProxySettings set; sl@0: set.iConfig = aConfig; sl@0: TMMFDevSoundProxySettingsPckg pckg(set); sl@0: return SendReceive(EMMFDevSoundProxySetConfig, pckg); sl@0: } sl@0: sl@0: EXPORT_C TInt RMMFDevSoundProxy::MaxVolume() sl@0: { sl@0: TMMFDevSoundProxySettings set; sl@0: TMMFDevSoundProxySettingsPckg pckg(set); sl@0: SendReceiveResult(EMMFDevSoundProxyMaxVolume,KNullDesC8,KNullDesC8,pckg); sl@0: return pckg().iMaxVolume; sl@0: } sl@0: sl@0: EXPORT_C TInt RMMFDevSoundProxy::Volume() sl@0: { sl@0: TMMFDevSoundProxySettings set; sl@0: TMMFDevSoundProxySettingsPckg pckg(set); sl@0: SendReceiveResult(EMMFDevSoundProxyVolume,KNullDesC8,KNullDesC8,pckg); sl@0: return pckg().iVolume; sl@0: } sl@0: sl@0: EXPORT_C TInt RMMFDevSoundProxy::SetVolume(TInt aVolume) sl@0: { sl@0: TMMFDevSoundProxySettings set; sl@0: set.iVolume = aVolume; sl@0: TMMFDevSoundProxySettingsPckg pckg(set); sl@0: return SendReceive(EMMFDevSoundProxySetVolume, pckg); sl@0: } sl@0: sl@0: EXPORT_C TInt RMMFDevSoundProxy::MaxGain() sl@0: { sl@0: TMMFDevSoundProxySettings set; sl@0: TMMFDevSoundProxySettingsPckg pckg(set); sl@0: SendReceiveResult(EMMFDevSoundProxyMaxGain,KNullDesC8,KNullDesC8,pckg); sl@0: return pckg().iMaxGain; sl@0: } sl@0: sl@0: EXPORT_C TInt RMMFDevSoundProxy::Gain() sl@0: { sl@0: TMMFDevSoundProxySettings set; sl@0: TMMFDevSoundProxySettingsPckg pckg(set); sl@0: SendReceiveResult(EMMFDevSoundProxyGain,KNullDesC8,KNullDesC8,pckg); sl@0: return pckg().iGain; sl@0: } sl@0: sl@0: EXPORT_C TInt RMMFDevSoundProxy::SetGain(TInt aGain) sl@0: { sl@0: TMMFDevSoundProxySettings set; sl@0: set.iGain = aGain; sl@0: TMMFDevSoundProxySettingsPckg pckg(set); sl@0: return SendReceive(EMMFDevSoundProxySetGain, pckg); sl@0: } sl@0: sl@0: EXPORT_C void RMMFDevSoundProxy::GetPlayBalanceL(TInt& aLeftPercentage, TInt& aRightPercentage) sl@0: { sl@0: TMMFDevSoundProxySettings set; sl@0: TMMFDevSoundProxySettingsPckg pckg(set); sl@0: User::LeaveIfError(SendReceiveResult(EMMFDevSoundProxyPlayBalance,KNullDesC8,KNullDesC8,pckg)); sl@0: aLeftPercentage = pckg().iLeftPercentage; sl@0: aRightPercentage = pckg().iRightPercentage; sl@0: } sl@0: sl@0: EXPORT_C void RMMFDevSoundProxy::SetPlayBalanceL(TInt aLeftPercentage, TInt aRightPercentage) sl@0: { sl@0: TMMFDevSoundProxySettings set; sl@0: set.iLeftPercentage = aLeftPercentage; sl@0: set.iRightPercentage = aRightPercentage; sl@0: TMMFDevSoundProxySettingsPckg pckg(set); sl@0: User::LeaveIfError(SendReceive(EMMFDevSoundProxySetPlayBalance, pckg)); sl@0: } sl@0: sl@0: EXPORT_C void RMMFDevSoundProxy::GetRecordBalanceL(TInt& aLeftPercentage, TInt& aRightPercentage) sl@0: { sl@0: TMMFDevSoundProxySettings set; sl@0: TMMFDevSoundProxySettingsPckg pckg(set); sl@0: User::LeaveIfError(SendReceiveResult(EMMFDevSoundProxyRecordBalance,KNullDesC8,KNullDesC8,pckg)); sl@0: aLeftPercentage = pckg().iLeftPercentage; sl@0: aRightPercentage = pckg().iRightPercentage; sl@0: } sl@0: sl@0: EXPORT_C void RMMFDevSoundProxy::SetRecordBalanceL(TInt aLeftPercentage, TInt aRightPercentage) sl@0: { sl@0: TMMFDevSoundProxySettings set; sl@0: set.iLeftPercentage = aLeftPercentage; sl@0: set.iRightPercentage = aRightPercentage; sl@0: TMMFDevSoundProxySettingsPckg pckg(set); sl@0: User::LeaveIfError(SendReceive(EMMFDevSoundProxySetRecordBalance, pckg)); sl@0: } sl@0: sl@0: EXPORT_C void RMMFDevSoundProxy::PlayInitL() sl@0: { sl@0: User::LeaveIfError(SendReceive(EMMFDevSoundProxyPlayInit)); sl@0: } sl@0: sl@0: EXPORT_C void RMMFDevSoundProxy::RecordInitL() sl@0: { sl@0: User::LeaveIfError(SendReceive(EMMFDevSoundProxyRecordInit)); sl@0: } sl@0: sl@0: EXPORT_C void RMMFDevSoundProxy::PlayData() sl@0: { sl@0: TMMFDevSoundProxyHwBuf set; sl@0: set.iLastBuffer = iBuffer->LastBuffer(); sl@0: TMMFDevSoundProxyHwBufPckg pckg(set); sl@0: sl@0: SendReceive(EMMFDevSoundProxyPlayData, pckg, iBuffer->Data()); sl@0: } sl@0: sl@0: EXPORT_C void RMMFDevSoundProxy::RecordData() sl@0: { sl@0: SendReceive(EMMFDevSoundProxyRecordData); sl@0: } sl@0: sl@0: EXPORT_C void RMMFDevSoundProxy::Stop() sl@0: { sl@0: SendReceive(EMMFDevSoundProxyStop); sl@0: } sl@0: sl@0: EXPORT_C void RMMFDevSoundProxy::Pause() sl@0: { sl@0: SendReceive(EMMFDevSoundProxyPause); sl@0: } sl@0: sl@0: EXPORT_C void RMMFDevSoundProxy::PlayToneL(TInt aFrequency, const TTimeIntervalMicroSeconds& aDuration) sl@0: { sl@0: TMMFDevSoundProxySettings set; sl@0: set.iFrequencyOne = aFrequency; sl@0: set.iDuration = aDuration; sl@0: TMMFDevSoundProxySettingsPckg pckg(set); sl@0: User::LeaveIfError(SendReceive(EMMFDevSoundProxyPlayTone, pckg)); sl@0: } sl@0: sl@0: EXPORT_C void RMMFDevSoundProxy::PlayDualToneL(TInt aFrequencyOne, TInt aFrequencyTwo, const TTimeIntervalMicroSeconds& aDuration) sl@0: { sl@0: TMMFDevSoundProxySettings set; sl@0: set.iFrequencyOne = aFrequencyOne; sl@0: set.iFrequencyTwo = aFrequencyTwo; sl@0: set.iDuration = aDuration; sl@0: TMMFDevSoundProxySettingsPckg pckg(set); sl@0: SendReceive(EMMFDevSoundProxyPlayDualTone, pckg); sl@0: } sl@0: sl@0: EXPORT_C void RMMFDevSoundProxy::PlayDTMFStringL(const TDesC& aDTMFString) sl@0: { sl@0: SendReceive(EMMFDevSoundProxyPlayDTMFString, aDTMFString); sl@0: } sl@0: sl@0: EXPORT_C void RMMFDevSoundProxy::PlayToneSequenceL(const TDesC8& aData) sl@0: { sl@0: User::LeaveIfError(SendReceive(EMMFDevSoundProxyPlayToneSequence, aData)); sl@0: } sl@0: sl@0: EXPORT_C void RMMFDevSoundProxy::PlayFixedSequenceL(TInt aSequenceNumber) sl@0: { sl@0: TPckgBuf<TInt> seqNum(aSequenceNumber); sl@0: SendReceive(EMMFDevSoundProxyPlayFixedSequence, seqNum); sl@0: } sl@0: sl@0: EXPORT_C void RMMFDevSoundProxy::SetDTMFLengths(TTimeIntervalMicroSeconds32& aToneOnLength, sl@0: TTimeIntervalMicroSeconds32& aToneOffLength, sl@0: TTimeIntervalMicroSeconds32& aPauseLength) sl@0: { sl@0: TMMFDevSoundProxySettings set; sl@0: set.iToneOnLength = aToneOnLength; sl@0: set.iToneOffLength = aToneOffLength; sl@0: set.iPauseLength = aPauseLength; sl@0: TMMFDevSoundProxySettingsPckg pckg(set); sl@0: SendReceive(EMMFDevSoundProxySetDTMFLengths, pckg); sl@0: } sl@0: sl@0: EXPORT_C void RMMFDevSoundProxy::SetVolumeRamp(const TTimeIntervalMicroSeconds& aRampDuration) sl@0: { sl@0: TMMFDevSoundProxySettings set; sl@0: set.iDuration = aRampDuration; sl@0: TMMFDevSoundProxySettingsPckg pckg(set); sl@0: SendReceive(EMMFDevSoundProxySetVolumeRamp, pckg); sl@0: } sl@0: sl@0: EXPORT_C void RMMFDevSoundProxy::GetSupportedInputDataTypesL(RArray<TFourCC>& aSupportedDataTypes, const TMMFPrioritySettings& aPrioritySettings) sl@0: { sl@0: aSupportedDataTypes.Reset(); sl@0: sl@0: TMMFPrioritySettings prioritySet = aPrioritySettings; sl@0: TMMFPrioritySettingsPckg pckg(prioritySet); sl@0: sl@0: TPckgBuf<TInt> numberOfElementsPckg; sl@0: User::LeaveIfError(SendReceiveResult(EMMFDevSoundProxyGetSupportedInputDataTypes, pckg, KNullDesC8, numberOfElementsPckg)); sl@0: sl@0: HBufC8* buf = HBufC8::NewLC(numberOfElementsPckg()*sizeof(TFourCC)); sl@0: TPtr8 ptr = buf->Des(); sl@0: sl@0: sl@0: User::LeaveIfError(SendReceiveResult(EMMFDevSoundProxyCopyFourCCArrayData,KNullDesC8,KNullDesC8,ptr)); sl@0: RDesReadStream stream(ptr); sl@0: CleanupClosePushL(stream); sl@0: sl@0: for (TInt i=0; i<numberOfElementsPckg(); i++) sl@0: { sl@0: TInt err = aSupportedDataTypes.Append(stream.ReadInt32L()); sl@0: if (err) sl@0: {//note we don't destroy array because we don't own it sl@0: //but we do reset it as it is incomplete sl@0: aSupportedDataTypes.Reset(); sl@0: User::Leave(err); sl@0: } sl@0: } sl@0: CleanupStack::PopAndDestroy(2, buf);//stream, buf sl@0: } sl@0: sl@0: sl@0: EXPORT_C void RMMFDevSoundProxy::GetSupportedOutputDataTypesL(RArray<TFourCC>& aSupportedDataTypes, const TMMFPrioritySettings& aPrioritySettings) sl@0: { sl@0: aSupportedDataTypes.Reset(); sl@0: sl@0: TMMFPrioritySettings prioritySet = aPrioritySettings; sl@0: TMMFPrioritySettingsPckg pckg(prioritySet); sl@0: sl@0: TPckgBuf<TInt> numberOfElementsPckg; sl@0: User::LeaveIfError(SendReceiveResult(EMMFDevSoundProxyGetSupportedOutputDataTypes, pckg, KNullDesC8, numberOfElementsPckg)); sl@0: sl@0: HBufC8* buf = HBufC8::NewLC(numberOfElementsPckg()*sizeof(TFourCC)); sl@0: TPtr8 ptr = buf->Des(); sl@0: sl@0: sl@0: User::LeaveIfError(SendReceiveResult(EMMFDevSoundProxyCopyFourCCArrayData,KNullDesC8,KNullDesC8,ptr)); sl@0: RDesReadStream stream(ptr); sl@0: CleanupClosePushL(stream); sl@0: sl@0: for (TInt i=0; i<numberOfElementsPckg(); i++) sl@0: { sl@0: TInt err = aSupportedDataTypes.Append(stream.ReadInt32L()); sl@0: if (err) sl@0: {//note we don't destroy array because we don't own it sl@0: //but we do reset it as it is incomplete sl@0: aSupportedDataTypes.Reset(); sl@0: User::Leave(err); sl@0: } sl@0: } sl@0: CleanupStack::PopAndDestroy(2, buf);//stream, buf sl@0: } sl@0: sl@0: EXPORT_C TInt RMMFDevSoundProxy::SamplesRecorded() sl@0: { sl@0: TPckgBuf<TInt> numSamples; sl@0: SendReceiveResult(EMMFDevSoundProxySamplesRecorded, KNullDesC8, KNullDesC8, numSamples); sl@0: return numSamples(); sl@0: } sl@0: sl@0: EXPORT_C TInt RMMFDevSoundProxy::SamplesPlayed() sl@0: { sl@0: TPckgBuf<TInt> numSamples; sl@0: SendReceiveResult(EMMFDevSoundProxySamplesPlayed, KNullDesC8, KNullDesC8, numSamples); sl@0: return numSamples(); sl@0: } sl@0: sl@0: EXPORT_C void RMMFDevSoundProxy::SetToneRepeats(TInt aRepeatCount, const TTimeIntervalMicroSeconds& aRepeatTrailingSilence) sl@0: { sl@0: TPckgBuf<TInt> countRepeat(aRepeatCount); sl@0: TPckgBuf<TTimeIntervalMicroSeconds> repeatTS(aRepeatTrailingSilence); sl@0: SendReceive(EMMFDevSoundProxySetToneRepeats, countRepeat, repeatTS); sl@0: } sl@0: sl@0: EXPORT_C void RMMFDevSoundProxy::SetPrioritySettings(const TMMFPrioritySettings& aPrioritySettings) sl@0: { sl@0: TPckgBuf<TMMFPrioritySettings> prioritySet(aPrioritySettings); sl@0: SendReceive(EMMFDevSoundProxySetPrioritySettings, prioritySet); sl@0: } sl@0: sl@0: EXPORT_C const TDesC& RMMFDevSoundProxy::FixedSequenceName(TInt aSequenceNumber) sl@0: { sl@0: TPckgBuf<TInt> seqNum(aSequenceNumber); sl@0: TPtr SeqNamePtr = iSeqName->Des(); sl@0: SeqNamePtr.FillZ(); sl@0: SendReceiveResult(EMMFDevSoundProxyFixedSequenceName, seqNum, KNullDesC8, SeqNamePtr); sl@0: return *iSeqName; sl@0: } sl@0: sl@0: sl@0: EXPORT_C void RMMFDevSoundProxy::ConvertInitL() sl@0: { sl@0: SendReceive(EMMFDevSoundProxyConvertInit); sl@0: } sl@0: sl@0: EXPORT_C void RMMFDevSoundProxy::ConvertData() sl@0: { sl@0: SendReceive(EMMFDevSoundProxyConvertData); sl@0: } sl@0: sl@0: EXPORT_C TAny* RMMFDevSoundProxy::CustomInterface(TUid /*aInterfaceId*/) sl@0: { sl@0: // No custom interfaces are supported at the moment so return NULL. sl@0: //TO DO sl@0: return NULL; sl@0: } sl@0: sl@0: EXPORT_C TInt RMMFDevSoundProxy::FixedSequenceCount() sl@0: { sl@0: TPckgBuf<TInt> fixSeqCountPckg; sl@0: SendReceiveResult(EMMFDevSoundProxyFixedSequenceCount, fixSeqCountPckg); sl@0: return fixSeqCountPckg(); sl@0: } sl@0: sl@0: EXPORT_C void RMMFDevSoundProxy::ReceiveInitializeCompleteEvent(TMMFDevSoundProxyHwBufPckg& aSetPckg, TRequestStatus& aStatus) sl@0: { sl@0: aStatus = KRequestPending; sl@0: SendReceive(EMMFDevSoundProxyReceiveICEvent, aSetPckg, aStatus); sl@0: } sl@0: sl@0: EXPORT_C void RMMFDevSoundProxy::CancelReceiveInitializeCompleteEvent() sl@0: { sl@0: SendReceive(EMMFDevSoundProxyCancelReceiveICEvent); sl@0: } sl@0: sl@0: EXPORT_C void RMMFDevSoundProxy::ReceiveBufferToBeFilledEvent(TMMFDevSoundProxyHwBufPckg& aSetPckg, TRequestStatus& aStatus) sl@0: { sl@0: aStatus = KRequestPending; sl@0: SendReceiveResult(EMMFDevSoundProxyReceiveBTBFEvent, aSetPckg, aStatus); sl@0: } sl@0: sl@0: EXPORT_C void RMMFDevSoundProxy::CancelReceiveBufferToBeFilledEvent() sl@0: { sl@0: SendReceive(EMMFDevSoundProxyCancelReceiveBTBFEvent); sl@0: } sl@0: sl@0: EXPORT_C void RMMFDevSoundProxy::ReceiveBufferToBeEmptiedEvent(TMMFDevSoundProxyHwBufPckg& aSetPckg, TRequestStatus& aStatus) sl@0: { sl@0: aStatus = KRequestPending; sl@0: SendReceiveResult(EMMFDevSoundProxyReceiveBTBEEvent, aSetPckg, aStatus); sl@0: } sl@0: sl@0: EXPORT_C void RMMFDevSoundProxy::CancelReceiveBufferToBeEmptiedEvent() sl@0: { sl@0: SendReceive(EMMFDevSoundProxyCancelReceiveBTBEEvent); sl@0: } sl@0: sl@0: EXPORT_C void RMMFDevSoundProxy::ReceivePlayErrorEvent(TMMFDevSoundProxyHwBufPckg& aSetPckg, TRequestStatus& aStatus) sl@0: { sl@0: aStatus = KRequestPending; sl@0: SendReceive(EMMFDevSoundProxyReceivePEEvent, aSetPckg, aStatus); sl@0: } sl@0: sl@0: EXPORT_C void RMMFDevSoundProxy::CancelReceivePlayErrorEvent() sl@0: { sl@0: SendReceive(EMMFDevSoundProxyCancelReceivePEEvent); sl@0: } sl@0: sl@0: EXPORT_C void RMMFDevSoundProxy::ReceiveRecordErrorEvent(TMMFDevSoundProxyHwBufPckg& aSetPckg, TRequestStatus& aStatus) sl@0: { sl@0: aStatus = KRequestPending; sl@0: SendReceive(EMMFDevSoundProxyReceiveREEvent, aSetPckg, aStatus); sl@0: } sl@0: sl@0: EXPORT_C void RMMFDevSoundProxy::CancelReceiveRecordErrorEvent() sl@0: { sl@0: SendReceive(EMMFDevSoundProxyCancelReceiveREEvent); sl@0: } sl@0: sl@0: EXPORT_C void RMMFDevSoundProxy::ReceiveToneFinishedEvent(TMMFDevSoundProxyHwBufPckg& aSetPckg, TRequestStatus& aStatus) sl@0: { sl@0: aStatus = KRequestPending; sl@0: SendReceive(EMMFDevSoundProxyReceiveTFEvent, aSetPckg, aStatus); sl@0: } sl@0: sl@0: EXPORT_C void RMMFDevSoundProxy::CancelReceiveToneFinishedEvent() sl@0: { sl@0: SendReceive(EMMFDevSoundProxyCancelReceiveTFEvent); sl@0: } sl@0: sl@0: EXPORT_C void RMMFDevSoundProxy::ReceiveSendEventToClientEvent(TMMFEventPckg& aEventPckg, TRequestStatus& aStatus) sl@0: { sl@0: aStatus = KRequestPending; sl@0: SendReceiveResult(EMMFDevSoundProxyReceiveSETCEvent, aEventPckg, aStatus); sl@0: } sl@0: sl@0: EXPORT_C void RMMFDevSoundProxy::CancelReceiveSendEventToClientEvent() sl@0: { sl@0: SendReceive(EMMFDevSoundProxyCancelReceiveSETCEvent); sl@0: } sl@0: sl@0: EXPORT_C void RMMFDevSoundProxy::SetBuffer(CMMFDataBuffer* aBuffer) sl@0: { sl@0: if(iBuffer) sl@0: delete iBuffer; sl@0: iBuffer = aBuffer; sl@0: } sl@0: sl@0: EXPORT_C TInt RMMFDevSoundProxy::GetRecordedBufferL(CMMFDataBuffer& aBuffer) sl@0: { sl@0: return SendReceiveResult(EMMFDevSoundProxyGetRecordedBuffer, aBuffer.Data()); sl@0: } sl@0: sl@0: EXPORT_C TInt RMMFDevSoundProxy::RegisterAsClient(TUid aEventType, const TDesC8& aNotificationRegistrationData) sl@0: { sl@0: TMMFDevSoundProxySettings set; sl@0: set.iNotificationEventUid = aEventType; sl@0: TMMFDevSoundProxySettingsPckg pckg(set); sl@0: return SendReceive(EMMFDevSoundProxyRequestResourceNotification, pckg, aNotificationRegistrationData); sl@0: } sl@0: sl@0: EXPORT_C TInt RMMFDevSoundProxy::CancelRegisterAsClient(TUid aEventType) sl@0: { sl@0: TMMFDevSoundProxySettings set; sl@0: set.iNotificationEventUid = aEventType; sl@0: TMMFDevSoundProxySettingsPckg pckg(set); sl@0: return SendReceiveResult(EMMFDevSoundProxyCancelRequestResourceNotification, pckg); sl@0: } sl@0: sl@0: EXPORT_C TInt RMMFDevSoundProxy::GetResourceNotificationData(TUid aEventType, TDes8& aNotificationData) sl@0: { sl@0: TMMFDevSoundProxySettings set; sl@0: set.iNotificationEventUid = aEventType; sl@0: TMMFDevSoundProxySettingsPckg pckg(set); sl@0: return SendReceiveResult(EMMFDevSoundProxyGetResourceNotificationData, pckg,KNullDesC8,aNotificationData); sl@0: } sl@0: sl@0: EXPORT_C TInt RMMFDevSoundProxy::WillResumePlay() sl@0: { sl@0: return SendReceive(EMMFDevSoundProxyWillResumePlay); sl@0: } sl@0: sl@0: EXPORT_C TInt RMMFDevSoundProxy::SetClientThreadInfo(TThreadId& aTid) sl@0: { sl@0: TPckgBuf<TThreadId> threadId(aTid); sl@0: return SendReceive(EMMFDevSoundProxySetClientThreadInfo, threadId); sl@0: } sl@0: