diff -r 71ca22bcf22a -r 5a06f39ad45b mmserv/tms/tmsserver/src/tmsserver.cpp --- a/mmserv/tms/tmsserver/src/tmsserver.cpp Tue Feb 02 01:08:46 2010 +0200 +++ b/mmserv/tms/tmsserver/src/tmsserver.cpp Fri Apr 16 15:29:42 2010 +0300 @@ -18,22 +18,26 @@ #include #include #include +#include #include "tmsutility.h" #include "tmsclientserver.h" -#include "tmsserver.h" +#include "tmstelephonycenrep.h" #include "tmsservershutdown.h" #include "tmsserversession.h" #include "tmscallserverstartparam.h" #include "tmscallserver.h" #include "tmscallclisrv.h" -#include "globaleffectssettings.h" -#include "tareventhandler.h" -#include "cspaudiohandler.h" +#include "tmsglobaleffectssettings.h" +#include "tmstareventhandler.h" +#include "tmscenrepaudiohandler.h" +#include "tmsdtmfeventhandler.h" +#include "tmsrtparam.h" +#include "tmsserver.h" using namespace TMS; // CONSTANTS -const TInt KShutDownDelayTime = 5000000; // 5 sec delay time +const TInt KTMSShutDownDelayTime = 1000000; // 1 sec delay time const TInt KOutputsArraySize = 10; // ----------------------------------------------------------------------------- @@ -80,6 +84,9 @@ delete iEffectSettings; CancelRoutingNotifier(); CancelCenRepHandler(); + CancelDTMFNotifier(); + DeinitRingTonePlayer(); + delete iTMSRtPlayer; TRACE_PRN_FN_EXT; } @@ -100,8 +107,7 @@ } const TVersion version(KTMSServMajorVersionNumber, - KTMSServMinorVersionNumber, - KTMSServBuildVersionNumber); + KTMSServMinorVersionNumber, KTMSServBuildVersionNumber); if (!User::QueryVersionSupported(version, aVersion)) { @@ -126,10 +132,12 @@ iShutdownTimer = TMSServerShutDown::NewL(); StartL(KTMSServerName); RThread().SetPriority(EPriorityRealTime); - iEffectSettings = GlobalEffectsSettings::NewL(); + iEffectSettings = TMSGlobalEffectsSettings::NewL(); iTarHandler = NULL; iAudioCenRepHandler = NULL; + iDTMFHandler = NULL; iCurrentRouting = TMS_AUDIO_OUTPUT_NONE; + InitRingTonePlayerL(); TRACE_PRN_FN_EXT; } @@ -161,7 +169,7 @@ if (iSession == 0) { iShutdownTimer->SetDelay(TTimeIntervalMicroSeconds32( - KShutDownDelayTime)); + KTMSShutDownDelayTime)); } TRACE_PRN_N1(_L("TMS->DNL: DropSession->Active Sessions: [%d]"), iSession); @@ -172,7 +180,7 @@ // // ----------------------------------------------------------------------------- // -TInt TMSServer::SessionCount() +TInt TMSServer::SessionCount() const { return iSession; } @@ -182,7 +190,7 @@ // // ----------------------------------------------------------------------------- // -void TMSServer::SetDnLinkSession(TBool aSession) +void TMSServer::SetDnLinkSession(const TBool aSession) { iDnlinkSession = aSession; } @@ -192,7 +200,7 @@ // // ----------------------------------------------------------------------------- // -void TMSServer::SetUpLinkSession(TBool aSession) +void TMSServer::SetUpLinkSession(const TBool aSession) { iUplinkSession = aSession; } @@ -229,7 +237,7 @@ TInt i = 0; while (i < iTMSCallServList.Count()) { - CStartAndMonitorTMSCallThread* callThread = iTMSCallServList[i]; + TMSStartAndMonitorTMSCallThread* callThread = iTMSCallServList[i]; if (!callThread->IsActive()) { iTMSCallServList.Remove(i); @@ -245,6 +253,7 @@ TMSCallProxyLocal tmsCallSessionHandle; User::LeaveIfError(StartTMSCallServer(tmsCallSessionHandle)); aHandle = tmsCallSessionHandle; + TRACE_PRN_FN_EXT; } @@ -256,19 +265,19 @@ TInt TMSServer::StartTMSCallServer(TMSCallProxyLocal& aHandle) { TRACE_PRN_FN_ENT; - TInt status = KErrNone; - CStartAndMonitorTMSCallThread* callServerThread = NULL; - TRAP(status, callServerThread = - CStartAndMonitorTMSCallThread::NewL(const_cast(this))); - if (status != KErrNone) + TInt status = TMS_RESULT_SUCCESS; + TMSStartAndMonitorTMSCallThread* callServerThread = NULL; + TRAP(status, callServerThread =TMSStartAndMonitorTMSCallThread::NewL( + const_cast(this))); + if (status != TMS_RESULT_SUCCESS) { delete callServerThread; } else { status = iTMSCallServList.Append(callServerThread); - if (callServerThread && status == KErrNone) + if (callServerThread && status == TMS_RESULT_SUCCESS) { status = callServerThread->StartTMSCallServer(aHandle); TInt count = 0; @@ -313,10 +322,16 @@ // void TMSServer::StartRoutingNotifierL() { + TRACE_PRN_FN_ENT; + if (!iTarHandler) { - iTarHandler = CTarEventHandler::NewL((const_cast (this))); + iTarHandlerCount = 0; + iTarHandler = TMSTarEventHandler::NewL((const_cast (this))); } + iTarHandlerCount++; + + TRACE_PRN_FN_EXT; } // ----------------------------------------------------------------------------- @@ -326,8 +341,11 @@ // void TMSServer::CancelRoutingNotifier() { - delete iTarHandler; - iTarHandler = NULL; + if (--iTarHandlerCount <= 0) + { + delete iTarHandler; + iTarHandler = NULL; + } } // ----------------------------------------------------------------------------- @@ -337,13 +355,19 @@ // void TMSServer::StartCenRepHandlerL() { + TRACE_PRN_FN_ENT; + #ifdef _USE_TELEPHONY_CENREP_ if (!iAudioCenRepHandler) { - iAudioCenRepHandler = CSPAudioHandler::NewL( + iAudioCenRepHandlerCount = 0; + iAudioCenRepHandler = TMSCenRepAudioHandler::NewL( (const_cast (this))); } + iAudioCenRepHandlerCount++; #endif + + TRACE_PRN_FN_EXT; } // ----------------------------------------------------------------------------- @@ -353,8 +377,45 @@ // void TMSServer::CancelCenRepHandler() { - delete iAudioCenRepHandler; - iAudioCenRepHandler = NULL; + if (--iAudioCenRepHandlerCount <= 0) + { + delete iAudioCenRepHandler; + iAudioCenRepHandler = NULL; + } + } + +// ----------------------------------------------------------------------------- +// 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; + } } // ----------------------------------------------------------------------------- @@ -365,11 +426,9 @@ TInt TMSServer::SetOutput(CSession2* /*sid*/, TInt output) { TRACE_PRN_FN_ENT; - TInt status(KErrNone); - status = SendMessageToCallServ(TMS_ROUTING_OUTPUT_SET, output); - - if (status == KErrNone) + TInt status = SendMessageToCallServ(TMS_ROUTING_OUTPUT_SET, output); + if (status == TMS_RESULT_SUCCESS) { iCurrentRouting = output; } @@ -389,16 +448,16 @@ TUint output; TInt i = 0; - TInt status(KErrNone); + TInt status(TMS_RESULT_SUCCESS); while (i < iTMSCallServList.Count()) { - CStartAndMonitorTMSCallThread* callThread = iTMSCallServList[i]; + TMSStartAndMonitorTMSCallThread* callThread = iTMSCallServList[i]; if (callThread) { status = callThread->iTMSCallProxyLocal.ReceiveFromCallServer( TMS_ROUTING_OUTPUT_GET, output); - if (status != KErrNone) + if (status != TMS_RESULT_SUCCESS) { break; } @@ -407,9 +466,10 @@ } TPckgBuf p(output); aMessage.Write(0, p); - aMessage.Complete(KErrNone); + aMessage.Complete(TMS_RESULT_SUCCESS); + TRACE_PRN_FN_EXT; - return KErrNone; + return status; } // ----------------------------------------------------------------------------- @@ -420,18 +480,19 @@ TInt TMSServer::GetPreviousOutput(const RMessage2& aMessage) { TRACE_PRN_FN_ENT; + TUint output; TInt i = 0; - TInt status(KErrNone); + TInt status(TMS_RESULT_SUCCESS); while (i < iTMSCallServList.Count()) { - CStartAndMonitorTMSCallThread* callThread = iTMSCallServList[i]; + TMSStartAndMonitorTMSCallThread* callThread = iTMSCallServList[i]; if (callThread) { status = callThread->iTMSCallProxyLocal.ReceiveFromCallServer( TMS_ROUTING_PREVIOUSOUTPUT_GET, output); - if (status != KErrNone) + if (status != TMS_RESULT_SUCCESS) { break; } @@ -440,7 +501,8 @@ } TPckgBuf p(output); aMessage.Write(0, p); - aMessage.Complete(KErrNone); + aMessage.Complete(TMS_RESULT_SUCCESS); + TRACE_PRN_FN_EXT; return status; } @@ -465,7 +527,7 @@ { TRACE_PRN_FN_ENT; - TInt status = KErrNone; + TInt status = TMS_RESULT_SUCCESS; OutputVector outputs; HBufC8* buf = HBufC8::NewLC(KOutputsArraySize * sizeof(TUint32)); TPtr8 ptr = buf->Des(); @@ -478,13 +540,13 @@ while (i < iTMSCallServList.Count()) { - CStartAndMonitorTMSCallThread* callThread = iTMSCallServList[i]; + TMSStartAndMonitorTMSCallThread* callThread = iTMSCallServList[i]; if (callThread) { status = callThread->iTMSCallProxyLocal.ReceiveFromCallServer( TMS_ROUTING_AVAILABLE_OUTPUT_GET, args); - if (status != KErrNone) + if (status != TMS_RESULT_SUCCESS) { break; } @@ -509,15 +571,17 @@ TInt TMSServer::GetMaxLevel(const RMessage2& aMessage) { TRACE_PRN_FN_ENT; - TInt status(KErrNone); + + TInt status(TMS_RESULT_SUCCESS); TPckgBuf pckg; pckg() = iEffectSettings->MaxVolume(); - if (status == KErrNone) + if (status == TMS_RESULT_SUCCESS) { status = aMessage.Write(0, pckg); aMessage.Complete(status); } + TRACE_PRN_FN_EXT; return status; } @@ -530,7 +594,8 @@ TInt TMSServer::GetLevel(const RMessage2& aMessage) { TRACE_PRN_FN_ENT; - TInt status(KErrNone); + + TInt status(TMS_RESULT_SUCCESS); TPckgBuf pckg; TInt volume; @@ -546,7 +611,7 @@ } pckg() = volume; - if (status == KErrNone) + if (status == TMS_RESULT_SUCCESS) { aMessage.Write(0, pckg); aMessage.Complete(status); @@ -564,11 +629,9 @@ TInt TMSServer::SetLevel(CSession2* /*sid*/, TBool tmsclient, TInt level) { TRACE_PRN_FN_ENT; - TInt status(KErrNone); - status = SendMessageToCallServ(TMS_EFFECT_GLOBAL_VOL_SET, level); - - if (status == KErrNone) + TInt status = SendMessageToCallServ(TMS_EFFECT_GLOBAL_VOL_SET, level); + if (status == TMS_RESULT_SUCCESS) { switch (iCurrentRouting) { @@ -625,11 +688,11 @@ TInt TMSServer::GetMaxGain(const RMessage2& aMessage) { TRACE_PRN_FN_ENT; - TInt status(KErrNone); + + TInt status(TMS_RESULT_SUCCESS); TPckgBuf pckg; - pckg() = iEffectSettings->MaxGain(); - if (status == KErrNone) + if (status == TMS_RESULT_SUCCESS) { status = aMessage.Write(0, pckg); aMessage.Complete(status); @@ -647,11 +710,11 @@ TInt TMSServer::GetGain(const RMessage2& aMessage) { TRACE_PRN_FN_ENT; - TInt status(KErrNone); + + TInt status(TMS_RESULT_SUCCESS); TPckgBuf pckg; - pckg() = iEffectSettings->Gain(); - if (status == KErrNone) + if (status == TMS_RESULT_SUCCESS) { status = aMessage.Write(0, pckg); aMessage.Complete(status); @@ -669,11 +732,9 @@ TInt TMSServer::SetGain(CSession2* /*sid*/, TInt level) { TRACE_PRN_FN_ENT; - TInt status(KErrNone); - status = SendMessageToCallServ(TMS_EFFECT_GLOBAL_GAIN_SET, level); - - if (status == KErrNone) + TInt status = SendMessageToCallServ(TMS_EFFECT_GLOBAL_GAIN_SET, level); + if (status == TMS_RESULT_SUCCESS) { iEffectSettings->SetGain(level); iSessionIter.SetToFirst(); @@ -701,6 +762,8 @@ TInt TMSServer::GetSupportedCodecs(const TMSStreamType strmType, RArray*& aCodecs) { + TRACE_PRN_FN_ENT; + if (strmType == TMS_STREAM_UPLINK) { aCodecs = &iUplCodecs; @@ -709,7 +772,9 @@ { aCodecs = &iDnlCodecs; } - return KErrNone; + + TRACE_PRN_FN_EXT; + return TMS_RESULT_SUCCESS; } // ----------------------------------------------------------------------------- @@ -719,11 +784,13 @@ // TInt TMSServer::SendMessageToCallServ(TInt func, TInt value) { - TInt status(KErrNone); + TRACE_PRN_FN_ENT; + + TInt status(TMS_RESULT_SUCCESS); TInt i = 0; while (i < iTMSCallServList.Count()) { - CStartAndMonitorTMSCallThread* callThread = iTMSCallServList[i]; + TMSStartAndMonitorTMSCallThread* callThread = iTMSCallServList[i]; if (callThread) { @@ -736,7 +803,7 @@ { status = callThread->iTMSCallProxyLocal.SendToCallServer( func, value); - if (status != KErrNone) + if (status != TMS_RESULT_SUCCESS) { break; } @@ -744,6 +811,8 @@ } i++; } + + TRACE_PRN_FN_EXT; return status; } @@ -754,11 +823,13 @@ // TInt TMSServer::SendMessageToCallServ(TInt func, TIpcArgs args) { - TInt status(KErrNone); + TRACE_PRN_FN_ENT; + + TInt status(TMS_RESULT_SUCCESS); TInt i = 0; while (i < iTMSCallServList.Count()) { - CStartAndMonitorTMSCallThread* callThread = iTMSCallServList[i]; + TMSStartAndMonitorTMSCallThread* callThread = iTMSCallServList[i]; if (callThread) { @@ -771,7 +842,7 @@ { status = callThread->iTMSCallProxyLocal.SendToCallServer( func, args); - if (status != KErrNone) + if (status != TMS_RESULT_SUCCESS) { break; } @@ -779,6 +850,8 @@ } i++; } + + TRACE_PRN_FN_EXT; return status; } @@ -789,6 +862,8 @@ // TInt TMSServer::NotifyTarClients(TRoutingMsgBufPckg routingpckg) { + TRACE_PRN_FN_ENT; + iCurrentRouting = routingpckg().iOutput; iSessionIter.SetToFirst(); TMSServerSession* serverSession = @@ -799,7 +874,397 @@ serverSession->HandleRoutingChange(routingpckg); serverSession = static_cast (iSessionIter++); } - return KErrNone; + + TRACE_PRN_FN_EXT; + return TMS_RESULT_SUCCESS; + } + +// ----------------------------------------------------------------------------- +// TMSServer::StartDTMF +// +// ----------------------------------------------------------------------------- +// +TInt TMSServer::StartDTMF(const RMessage2& aMessage) + { + TRACE_PRN_FN_ENT; + + TInt status(TMS_RESULT_SUCCESS); + TInt len(0); + TMSStreamType strmtype; + + strmtype = (TMSStreamType) aMessage.Int0(); + len = aMessage.GetDesLength(1); + HBufC* tone(NULL); + if (len > 0) + { + delete tone; + tone = NULL; + TRAP(status,tone = HBufC::NewL(len)); + if (status == TMS_RESULT_SUCCESS) + { + TPtr ptr = tone->Des(); + status = aMessage.Read(1, ptr); + TRACE_PRN_N(ptr); + + TIpcArgs args; + args.Set(0, strmtype); + args.Set(1, &ptr); + status = SendMessageToCallServ(TMS_DTMF_START, args); + delete tone; + tone = NULL; + } + } + aMessage.Complete(status); + + TRACE_PRN_FN_EXT; + return status; + } + +// ----------------------------------------------------------------------------- +// TMSServer::StopDTMF +// +// ----------------------------------------------------------------------------- +// +TInt TMSServer::StopDTMF(const RMessage2& aMessage) + { + TRACE_PRN_FN_ENT; + + TInt status(TMS_RESULT_SUCCESS); + TMSStreamType streamtype; + streamtype = (TMSStreamType) aMessage.Int0(); + status = SendMessageToCallServ(TMS_DTMF_STOP, streamtype); + aMessage.Complete(status); + + TRACE_PRN_FN_EXT; + return status; + } + +// ----------------------------------------------------------------------------- +// TMSServer::ContinueSendingDTMF +// +// ----------------------------------------------------------------------------- +// +TInt TMSServer::ContinueSendingDTMF(const RMessage2& aMessage) + { + TRACE_PRN_FN_ENT; + + TInt status(TMS_RESULT_SUCCESS); + TBool continuesending; + continuesending = (TBool) aMessage.Int0(); + status = SendMessageToCallServ(TMS_DTMF_CONTINUE, continuesending); + aMessage.Complete(status); + + TRACE_PRN_FN_EXT; + return status; + } + +// ----------------------------------------------------------------------------- +// TMSServer::NotifyDtmfClients +// +// ----------------------------------------------------------------------------- +// +TInt TMSServer::NotifyDtmfClients(TmsMsgBufPckg dtmfpckg) + { + TRACE_PRN_FN_ENT; + + iSessionIter.SetToFirst(); + TMSServerSession* serverSession = + static_cast (iSessionIter++); + + while (serverSession != NULL) + { + serverSession->NotifyClient(dtmfpckg().iRequest, dtmfpckg().iStatus); + serverSession = static_cast (iSessionIter++); + } + + TRACE_PRN_FN_EXT; + return TMS_RESULT_SUCCESS; + } + +// ----------------------------------------------------------------------------- +// TMSServer::InitRingTonePlayerL +// +// ----------------------------------------------------------------------------- +// +void TMSServer::InitRingTonePlayerL() + { + TRACE_PRN_FN_ENT; + + DeinitRingTonePlayer(); + + if (!iTMSRtPlayer) + { + iTMSRtPlayer = TMSRingTonePlayer::NewL(*this); + } + + TRACE_PRN_FN_EXT; + } + +// ----------------------------------------------------------------------------- +// TMSServer::DeinitRingTonePlayer +// +// ----------------------------------------------------------------------------- +// +void TMSServer::DeinitRingTonePlayer() + { + TRACE_PRN_FN_ENT; + + if (iTMSRtPlayer) + { + iTMSRtPlayer->DeinitRingTonePlayer(); + } + + delete iRtFile; + iRtFile = NULL; + delete iRtSequence; + iRtSequence = NULL; + delete iTtsText; + iTtsText = NULL; + + TRACE_PRN_FN_EXT; + } + +// ----------------------------------------------------------------------------- +// TMSServer::OpenRingTonePlayerFromFileL +// +// ----------------------------------------------------------------------------- +// +void TMSServer::OpenRingTonePlayerFromFileL(const RMessage2& aMessage) + { + TRACE_PRN_FN_ENT; + + gint status(TMS_RESULT_INVALID_ARGUMENT); + gint len = aMessage.GetDesLength(0); + if (len > 0) + { + InitRingTonePlayerL(); + + if (iTMSRtPlayer) + { + iRtFile = HBufC::NewL(len); + TPtr ptr = iRtFile->Des(); + aMessage.ReadL(0, ptr); + iTMSRtPlayer->CreateRingTonePlayerL(EPlayerAudio, *iRtFile); + len = aMessage.GetDesLength(1); + if (len > 0) + { + delete iTtsText; + iTtsText = NULL; + iTtsText = HBufC::NewL(len); + TPtr ptr1 = iTtsText->Des(); + aMessage.ReadL(1, ptr1); + iTMSRtPlayer->CreateTTSPlayerL(ptr1); + } + status = TMS_RESULT_SUCCESS; + } + } + aMessage.Complete(status); + + TRACE_PRN_FN_EXT; + } + +// ----------------------------------------------------------------------------- +// TMSServer::OpenRingTonePlayerFromProfileL +// +// ----------------------------------------------------------------------------- +// +void TMSServer::OpenRingTonePlayerFromProfileL(const RMessage2& aMessage) + { + TRACE_PRN_FN_ENT; + + gint status(TMS_RESULT_INVALID_ARGUMENT); + InitRingTonePlayerL(); + + if (iTMSRtPlayer) + { + iTMSRtPlayer->CreateRingTonePlayerL(EPlayerDefault); + gint len = aMessage.GetDesLength(1); + if (len > 0) + { + delete iTtsText; + iTtsText = NULL; + iTtsText = HBufC::NewL(len); + TPtr ptr = iTtsText->Des(); + aMessage.ReadL(1, ptr); + iTMSRtPlayer->CreateTTSPlayerL(ptr); + } + status = TMS_RESULT_SUCCESS; + } + aMessage.Complete(status); + + TRACE_PRN_FN_EXT; + } + +// ----------------------------------------------------------------------------- +// TMSServer::OpenRingToneSequencePlayerL +// +// ----------------------------------------------------------------------------- +// +void TMSServer::OpenRingToneSequencePlayerL(const RMessage2& aMessage) + { + TRACE_PRN_FN_ENT; + + gint status(TMS_RESULT_INVALID_ARGUMENT); + gint len = aMessage.GetDesLength(0); + if (len > 0) + { + InitRingTonePlayerL(); + iRtSequence = HBufC8::NewL(len); + TPtr8 ptr = iRtSequence->Des(); + aMessage.ReadL(0, ptr); + + if (iTMSRtPlayer) + { + iTMSRtPlayer->CreateCustomSequencePlayerL(ptr); + status = TMS_RESULT_SUCCESS; + } + } + aMessage.Complete(status); + + TRACE_PRN_FN_EXT; + } + +// ----------------------------------------------------------------------------- +// TMSServer::OpenRingToneBeepOnceL +// +// ----------------------------------------------------------------------------- +// +void TMSServer::OpenRingToneBeepOnceL() + { + TRACE_PRN_FN_ENT; + + InitRingTonePlayerL(); + + if (iTMSRtPlayer) + { + iTMSRtPlayer->CreateSequencePlayerL(EPlayerBeepOnce); + } + + TRACE_PRN_FN_EXT; + } + +// ----------------------------------------------------------------------------- +// TMSServer::DeinitRingTone +// +// ----------------------------------------------------------------------------- +// +void TMSServer::OpenRingToneSilentL() + { + TRACE_PRN_FN_ENT; + + InitRingTonePlayerL(); + + if (iTMSRtPlayer) + { + iTMSRtPlayer->CreateSequencePlayerL(EPlayerSilent); + } + + TRACE_PRN_FN_EXT; + } + +// ----------------------------------------------------------------------------- +// TMSServer::OpenRingToneUnsecureVoipL +// +// ----------------------------------------------------------------------------- +// +void TMSServer::OpenRingToneUnsecureVoipL() + { + TRACE_PRN_FN_ENT; + + InitRingTonePlayerL(); + + if (iTMSRtPlayer) + { + iTMSRtPlayer->CreateSequencePlayerL(EPlayerUnsecureVoIP); + } + + TRACE_PRN_FN_EXT; + } + +// ----------------------------------------------------------------------------- +// TMSServer::PlayRingToneL +// +// ----------------------------------------------------------------------------- +// +void TMSServer::PlayRingToneL() + { + TRACE_PRN_FN_ENT; + + if (iTMSRtPlayer) + { + iTMSRtPlayer->PlayRingToneL(); + } + else + { + User::Leave(TMS_RESULT_UNINITIALIZED_OBJECT); + } + + TRACE_PRN_FN_EXT; + } + +// ----------------------------------------------------------------------------- +// TMSServer::PauseVideoRingTone +// +// ----------------------------------------------------------------------------- +// +void TMSServer::PauseVideoRingTone() + { + StopRingTone(); + } + +// ----------------------------------------------------------------------------- +// TMSServer::StopRingTone +// +// ----------------------------------------------------------------------------- +// +void TMSServer::StopRingTone() + { + TRACE_PRN_FN_ENT; + + if (iTMSRtPlayer) + { + iTMSRtPlayer->StopPlaying(); + } + + TRACE_PRN_FN_EXT; + } + +// ----------------------------------------------------------------------------- +// TMSServer::MuteRingTone +// +// ----------------------------------------------------------------------------- +// +void TMSServer::MuteRingTone() + { + TRACE_PRN_FN_ENT; + + if (iTMSRtPlayer) + { + iTMSRtPlayer->MuteRingTone(); + } + + TRACE_PRN_FN_EXT; + } + +// ----------------------------------------------------------------------------- +// TMSServer::RtPlayerEvent +// +// ----------------------------------------------------------------------------- +// +void TMSServer::RtPlayerEvent(gint aEventType, gint aError) + { + TRACE_PRN_FN_ENT; + + iSessionIter.SetToFirst(); + TMSServerSession* ss = static_cast (iSessionIter++); + + while (ss != NULL) + { + ss->NotifyClient(aEventType, aError); + ss = static_cast (iSessionIter++); + } + + TRACE_PRN_FN_EXT; } // ----------------------------------------------------------------------------- @@ -820,7 +1285,7 @@ TMSServer* server = TMSServer::NewL(); // Initialisation complete, now signal the client - RProcess::Rendezvous(KErrNone); + RProcess::Rendezvous(TMS_RESULT_SUCCESS); // Start the scheduler and wait for client requests CActiveScheduler::Start(); @@ -834,11 +1299,11 @@ } // ----------------------------------------------------------------------------- -// CStartAndMonitorTMSCallThread::CStartAndMonitorTMSCallThread +// TMSStartAndMonitorTMSCallThread::TMSStartAndMonitorTMSCallThread // Perhaps we need to move this to a .cpp? // ----------------------------------------------------------------------------- // -CStartAndMonitorTMSCallThread::CStartAndMonitorTMSCallThread( +TMSStartAndMonitorTMSCallThread::TMSStartAndMonitorTMSCallThread( TMSServer* aServer) : CActive(EPriorityStandard), iTMSServer(aServer) @@ -849,11 +1314,11 @@ } // ----------------------------------------------------------------------------- -// CStartAndMonitorTMSCallThread::~CStartAndMonitorTMSCallThread +// TMSStartAndMonitorTMSCallThread::~TMSStartAndMonitorTMSCallThread // // ----------------------------------------------------------------------------- // -CStartAndMonitorTMSCallThread::~CStartAndMonitorTMSCallThread() +TMSStartAndMonitorTMSCallThread::~TMSStartAndMonitorTMSCallThread() { TRACE_PRN_FN_ENT; Cancel(); @@ -861,44 +1326,47 @@ } // ----------------------------------------------------------------------------- -// CStartAndMonitorTMSCallThread::NewL +// TMSStartAndMonitorTMSCallThread::NewL // // ----------------------------------------------------------------------------- // -CStartAndMonitorTMSCallThread* CStartAndMonitorTMSCallThread::NewL( +TMSStartAndMonitorTMSCallThread* TMSStartAndMonitorTMSCallThread::NewL( TMSServer* aServer) { TRACE_PRN_FN_ENT; - CStartAndMonitorTMSCallThread* self = - new (ELeave) CStartAndMonitorTMSCallThread(aServer); + + TMSStartAndMonitorTMSCallThread* self = + new (ELeave) TMSStartAndMonitorTMSCallThread(aServer); CleanupStack::PushL(self); self->ConstructL(); CleanupStack::Pop(self); + TRACE_PRN_FN_EXT; return self; } // ----------------------------------------------------------------------------- -// CStartAndMonitorTMSCallThread::ConstructL +// TMSStartAndMonitorTMSCallThread::ConstructL // // ----------------------------------------------------------------------------- // -void CStartAndMonitorTMSCallThread::ConstructL() +void TMSStartAndMonitorTMSCallThread::ConstructL() { TRACE_PRN_FN_ENT; TRACE_PRN_FN_EXT; } // ----------------------------------------------------------------------------- -// CStartAndMonitorTMSCallThread::StartTMSCallServer +// TMSStartAndMonitorTMSCallThread::StartTMSCallServer // // ----------------------------------------------------------------------------- // -TInt CStartAndMonitorTMSCallThread::StartTMSCallServer(TMSCallProxyLocal& aHndl) +TInt TMSStartAndMonitorTMSCallThread::StartTMSCallServer( + TMSCallProxyLocal& aHndl) { TRACE_PRN_FN_ENT; - TInt status(KErrNone); + TInt status(TMS_RESULT_SUCCESS); TMSCallServerStartParam start(iTMSServer, iCallSrvrHndl); const TUidType serverUid(KNullUid, KNullUid, KUidTMSCallServerUid3); TThreadFunction serverFunc = TMSCallServer::StartThread; @@ -911,7 +1379,7 @@ &start, EOwnerProcess); - if (status != KErrNone) + if (status != TMS_RESULT_SUCCESS) { return status; } @@ -935,7 +1403,7 @@ } User::WaitForRequest(reqStatus); // wait for start or death - if (reqStatus.Int() != KErrNone) + if (reqStatus.Int() != TMS_RESULT_SUCCESS) { iServerThread.Close(); iCallSrvrHndl.Close(); @@ -943,43 +1411,48 @@ } status = aHndl.Open(iCallSrvrHndl); - if (status != KErrNone) + if (status != TMS_RESULT_SUCCESS) { iServerThread.Close(); iCallSrvrHndl.Close(); return status; } aHndl.ShareProtected(); + iStatus = KRequestPending; iServerThread.Logon(iStatus); SetActive(); TRACE_PRN_FN_EXT; - return KErrNone; + return TMS_RESULT_SUCCESS; } // ----------------------------------------------------------------------------- -// CStartAndMonitorTMSCallThread::RunL +// TMSStartAndMonitorTMSCallThread::RunL // From CActive // ----------------------------------------------------------------------------- // -void CStartAndMonitorTMSCallThread::RunL() +void TMSStartAndMonitorTMSCallThread::RunL() { TRACE_PRN_FN_ENT; iServerThread.Close(); - //NOTE: This is causing a panic when closing down tms server. + //NOTE: This is causing a panic when closing down TMS server. //iCallSrvrHndl.Close(); TRACE_PRN_FN_EXT; } // ----------------------------------------------------------------------------- -// CStartAndMonitorTMSCallThread::DoCancel +// TMSStartAndMonitorTMSCallThread::DoCancel // From CActive // ----------------------------------------------------------------------------- // -void CStartAndMonitorTMSCallThread::DoCancel() +void TMSStartAndMonitorTMSCallThread::DoCancel() { TRACE_PRN_FN_ENT; - iServerThread.LogonCancel(iStatus); + if (iServerThread.Handle()) + { + iServerThread.LogonCancel(iStatus); + User::WaitForRequest(iStatus); + } TRACE_PRN_FN_EXT; } @@ -990,6 +1463,7 @@ TInt TMSCallProxyLocal::Open(RServer2& aTMSCallServerHandle) { TRACE_PRN_FN_ENT; + TInt status(KErrNotSupported); status = CreateSession(aTMSCallServerHandle, TVersion(KTMSCallServerMajorVersionNumber, @@ -1008,7 +1482,7 @@ // TInt TMSCallProxyLocal::SendToCallServer(TInt aFunc, TUint value) { - TInt status(KErrNone); + TInt status(TMS_RESULT_SUCCESS); status = SendReceive(aFunc, TIpcArgs(value)); return status; } @@ -1020,7 +1494,7 @@ // TInt TMSCallProxyLocal::SendToCallServer(TInt aFunc, TIpcArgs args) { - TInt status(KErrNone); + TInt status(TMS_RESULT_SUCCESS); status = SendReceive(aFunc, args); return status; } @@ -1032,11 +1506,11 @@ // TInt TMSCallProxyLocal::ReceiveFromCallServer(TInt aFunc, TUint& value) { - TInt status(KErrNone); + TInt status(TMS_RESULT_SUCCESS); TPckgBuf pckg; TIpcArgs args(&pckg); status = SendReceive(aFunc, args); - if (status == KErrNone) + if (status == TMS_RESULT_SUCCESS) { value = pckg(); } @@ -1050,7 +1524,7 @@ // TInt TMSCallProxyLocal::ReceiveFromCallServer(TInt aFunc, TIpcArgs args) { - TInt status(KErrNone); + TInt status(TMS_RESULT_SUCCESS); status = SendReceive(aFunc, args); return status; }