diff -r 5e8b14bae8c3 -r 73253677b50a mmserv/tms/tmsserver/src/tmsserver.cpp --- a/mmserv/tms/tmsserver/src/tmsserver.cpp Fri Jul 09 16:43:35 2010 -0500 +++ b/mmserv/tms/tmsserver/src/tmsserver.cpp Fri Jul 23 17:29:03 2010 -0500 @@ -32,8 +32,7 @@ #include "tmscenrepaudiohandler.h" #include "tmsdtmftoneplayer.h" #include "tmsdtmfprovider.h" -#include "tmsdtmfnotifier.h" -#include "tmsdtmfeventhandler.h" +#include "tmspubsublistener.h" #include "tmsrtparam.h" #include "tmsserver.h" @@ -86,14 +85,12 @@ delete iEffectSettings; delete iTarHandler; delete iAudioCenRepHandler; - delete iDTMFHandler; DeinitRingTonePlayer(); delete iTMSRtPlayer; delete iDTMFUplinkPlayer; delete iDTMFUplinkPlayerEtel; delete iDTMFDnlinkPlayer; - delete iDTMFNotifier; - + delete iSyncVol; TRACE_PRN_FN_EXT; } @@ -141,12 +138,11 @@ iEffectSettings = TMSGlobalEffectsSettings::NewL(); iTarHandler = NULL; iAudioCenRepHandler = NULL; - iDTMFHandler = NULL; iCurrentRouting = TMS_AUDIO_OUTPUT_PRIVATE; iDTMFDnlinkPlayer = NULL; iDTMFUplinkPlayer = NULL; iDTMFUplinkPlayerEtel = NULL; - iDTMFNotifier = NULL; + iSyncVol = TMSPubSubListener::NewL(KTMSPropertyCategory,ESyncVolume, this); //TODO: EUnit fails to initialize ProfileEngine in RT in eshell mode TRAP_IGNORE(InitRingTonePlayerL()); @@ -268,11 +264,13 @@ case TMS_AUDIO_OUTPUT_LOUDSPEAKER: { iEffectSettings->GetLoudSpkrVolume(volume); + TRACE_PRN_N1(_L("loudspk vol %d"),volume); } break; default: { iEffectSettings->GetEarPieceVolume(volume); + TRACE_PRN_N1(_L("ear vol %d"),volume); } break; } @@ -360,40 +358,6 @@ } // ----------------------------------------------------------------------------- -// TMSServer::StartDTMFNotifierL -// -// ----------------------------------------------------------------------------- -// -void TMSServer::StartDTMFNotifierL() - { - TRACE_PRN_FN_ENT; - - if (!iDTMFHandler) - { - iDTMFHandlerCount = 0; - iDTMFHandler = TMSDtmfEventHandler::NewL( - (const_cast (this))); - } - iDTMFHandlerCount++; - - TRACE_PRN_FN_EXT; - } - -// ----------------------------------------------------------------------------- -// TMSServer::CancelDTMFNotifier -// -// ----------------------------------------------------------------------------- -// -void TMSServer::CancelDTMFNotifier() - { - if (--iDTMFHandlerCount <= 0) - { - delete iDTMFHandler; - iDTMFHandler = NULL; - } - } - -// ----------------------------------------------------------------------------- // TMSServer::SetOutput // // ----------------------------------------------------------------------------- @@ -579,9 +543,11 @@ case TMS_AUDIO_OUTPUT_PUBLIC: case TMS_AUDIO_OUTPUT_LOUDSPEAKER: iEffectSettings->GetLoudSpkrVolume(volume); + TRACE_PRN_N1(_L("TMSServer::GetLevel loudspkr vol %d"),volume); break; default: iEffectSettings->GetEarPieceVolume(volume); + TRACE_PRN_N1(_L("TMSServer::GetLevel ear vol %d"),volume); break; } @@ -839,10 +805,12 @@ iCurrentRouting == TMS_AUDIO_OUTPUT_LOUDSPEAKER) { iEffectSettings->GetLoudSpkrVolume(vol); + TRACE_PRN_N1(_L("TMSServer::NotifyTarClients loudspkr vol %d"),vol); } else { iEffectSettings->GetEarPieceVolume(vol); + TRACE_PRN_N1(_L("TMSServer::NotifyTarClients ear vol %d"),vol); } TInt status = SendMessageToCallServ(TMS_EFFECT_GLOBAL_VOL_SET, vol); @@ -890,6 +858,7 @@ } if (!iDTMFUplinkPlayer) //IP call { + // TODO: Ongoing work with Audio Policy team... TRAP(status, iDTMFUplinkPlayer = TMSAudioDtmfTonePlayer::NewL(*this, // KAudioPrefVoipAudioUplinkNonSignal, // KAudioPrefVoipAudioUplink, @@ -906,10 +875,6 @@ KAudioDTMFString, KAudioPriorityDTMFString)); } } - if (!iDTMFNotifier && status == TMS_RESULT_SUCCESS) - { - TRAP(status, iDTMFNotifier = TMSDtmfNotifier::NewL()); - } aMessage.Complete(status); TRACE_PRN_FN_EXT; @@ -939,54 +904,45 @@ TPtr ptr = tone->Des(); status = aMessage.Read(1, ptr); TRACE_PRN_N(ptr); - TmsMsgBufPckg dtmfpckg; - dtmfpckg().iRequest = ECmdDTMFTonePlayFinished; if (strmtype == TMS_STREAM_UPLINK) { -//#ifdef __WINSCW__ - // Just to test playback in wins -// iActiveCallType = TMS_CALL_IP; -//#else +#ifdef __WINSCW__ + // Just to hear DTMF tones in Wins + iActiveCallType = TMS_CALL_IP; +#else FindActiveCallType(); -//#endif +#endif if (iActiveCallType == TMS_CALL_IP && iDTMFUplinkPlayer) { iDTMFUplinkPlayer->PlayDtmfTone(ptr); status = TMS_RESULT_SUCCESS; - dtmfpckg().iRequest = ECmdDTMFToneUplPlayStarted; } else if (iActiveCallType == TMS_CALL_CS && iDTMFUplinkPlayerEtel) { status = iDTMFUplinkPlayerEtel->SendDtmfToneString(ptr); - dtmfpckg().iRequest = ECmdDTMFToneUplPlayStarted; } else { status = TMS_RESULT_INVALID_STATE; } + NotifyDtmfClients(ECmdDTMFToneUplPlayStarted, status); } else if (strmtype == TMS_STREAM_DOWNLINK) { - //status = TMS_RESULT_UNINITIALIZED_OBJECT; + status = TMS_RESULT_INVALID_STATE; if (iDTMFDnlinkPlayer) { iDTMFDnlinkPlayer->PlayDtmfTone(ptr); status = TMS_RESULT_SUCCESS; - dtmfpckg().iRequest = ECmdDTMFToneDnlPlayStarted; } + NotifyDtmfClients(ECmdDTMFToneDnlPlayStarted, status); } else { status = TMS_RESULT_STREAM_TYPE_NOT_SUPPORTED; } - - if (iDTMFNotifier) - { - dtmfpckg().iStatus = TMSUtility::EtelToTMSResult(status); - iDTMFNotifier->SetDtmf(dtmfpckg); - } } delete tone; tone = NULL; @@ -1032,14 +988,7 @@ status = TMS_RESULT_SUCCESS; } } - if (iDTMFNotifier) - { - TmsMsgBufPckg dtmfpckg; - dtmfpckg().iStatus = status; - dtmfpckg().iRequest = ECmdDTMFTonePlayFinished; - iDTMFNotifier->SetDtmf(dtmfpckg); - } - + NotifyDtmfClients(ECmdDTMFTonePlayFinished, status); aMessage.Complete(status); TRACE_PRN_FN_EXT; return status; @@ -1073,14 +1022,14 @@ // // ----------------------------------------------------------------------------- // -TInt TMSServer::NotifyDtmfClients(TmsMsgBufPckg dtmfpckg) +TInt TMSServer::NotifyDtmfClients(gint aEventType, gint aError) { TRACE_PRN_FN_ENT; iSessionIter.SetToFirst(); TMSServerSession* ss = static_cast (iSessionIter++); while (ss != NULL) { - ss->NotifyClient(dtmfpckg().iRequest, dtmfpckg().iStatus); + ss->NotifyClient(aEventType, aError); ss = static_cast (iSessionIter++); } TRACE_PRN_FN_EXT; @@ -1093,10 +1042,13 @@ // // ----------------------------------------------------------------------------- // -void TMSServer::DTMFInitCompleted(gint /*status*/) +void TMSServer::DTMFInitCompleted(gint status) { TRACE_PRN_FN_ENT; - // TODO: process error + if (status != TMS_RESULT_SUCCESS) + { + NotifyDtmfClients(ECmdDTMFTonePlayFinished, status); + } TRACE_PRN_FN_EXT; } @@ -1109,19 +1061,13 @@ { TRACE_PRN_FN_ENT; TRACE_PRN_IF_ERR(status); - TmsMsgBufPckg dtmfpckg; // KErrUnderflow indicates end of DTMF playback. if (status == KErrUnderflow /*|| status == KErrInUse*/) { status = TMS_RESULT_SUCCESS; } - dtmfpckg().iStatus = TMSRESULT(status); - dtmfpckg().iRequest = ECmdDTMFTonePlayFinished; - if (iDTMFNotifier) - { - iDTMFNotifier->SetDtmf(dtmfpckg); - } + NotifyDtmfClients(ECmdDTMFTonePlayFinished, status); TRACE_PRN_FN_EXT; } @@ -1165,8 +1111,7 @@ { TRACE_PRN_FN_ENT; TRACE_PRN_IF_ERR(status); - TmsMsgBufPckg dtmfpckg; - dtmfpckg().iStatus = TMSUtility::EtelToTMSResult(status); + gint cmd = ECmdDTMFTonePlayFinished; switch (event) { @@ -1174,7 +1119,7 @@ break; case ECCPDtmfManualStart: //DTMF sending started manually case ECCPDtmfSequenceStart: //Automatic DTMF sending initialized - dtmfpckg().iRequest = ECmdDTMFToneUplPlayStarted; + cmd = ECmdDTMFToneUplPlayStarted; break; case ECCPDtmfManualStop: //DTMF sending stopped manually case ECCPDtmfManualAbort: //DTMF sending aborted manually @@ -1182,16 +1127,11 @@ case ECCPDtmfSequenceAbort: //Automatic DTMF sending aborted case ECCPDtmfStopInDtmfString: //There was stop mark in DTMF string case ECCPDtmfStringSendingCompleted://DTMF sending success - dtmfpckg().iRequest = ECmdDTMFTonePlayFinished; - break; default: break; } - if (iDTMFNotifier) - { - iDTMFNotifier->SetDtmf(dtmfpckg); - } + NotifyDtmfClients(cmd, status); TRACE_PRN_FN_EXT; } @@ -1482,6 +1422,22 @@ } // ----------------------------------------------------------------------------- +// TMSServer::HandleNotifyPSL +// +// ----------------------------------------------------------------------------- +// +void TMSServer::HandleNotifyPSL(const TUid aUid, const TInt& aKey, + const TRequestStatus& aStatus) + { + TRACE_PRN_FN_ENT; + if(iEffectSettings) + { + iEffectSettings->ResetDefaultVolume(); + } + TRACE_PRN_FN_EXT; + } + +// ----------------------------------------------------------------------------- // TMSServer::RunServerL // // -----------------------------------------------------------------------------