mmserv/tms/tmsserver/src/tmsserver.cpp
changeset 42 1fa3fb47b1e3
parent 32 94fc26b6e006
child 47 c2e43643db4c
equal deleted inserted replaced
32:94fc26b6e006 42:1fa3fb47b1e3
    28 #include "tmscallserver.h"
    28 #include "tmscallserver.h"
    29 #include "tmscallclisrv.h"
    29 #include "tmscallclisrv.h"
    30 #include "tmsglobaleffectssettings.h"
    30 #include "tmsglobaleffectssettings.h"
    31 #include "tmstareventhandler.h"
    31 #include "tmstareventhandler.h"
    32 #include "tmscenrepaudiohandler.h"
    32 #include "tmscenrepaudiohandler.h"
    33 #include "tmsdtmfeventhandler.h"
    33 #include "tmsdtmftoneplayer.h"
       
    34 #include "tmsdtmfprovider.h"
       
    35 #include "tmspubsublistener.h"
    34 #include "tmsrtparam.h"
    36 #include "tmsrtparam.h"
    35 #include "tmsserver.h"
    37 #include "tmsserver.h"
    36 
    38 
    37 using namespace TMS;
    39 using namespace TMS;
    38 
    40 
    81     iUplCodecs.Reset();
    83     iUplCodecs.Reset();
    82     iUplCodecs.Close();
    84     iUplCodecs.Close();
    83     delete iEffectSettings;
    85     delete iEffectSettings;
    84     delete iTarHandler;
    86     delete iTarHandler;
    85     delete iAudioCenRepHandler;
    87     delete iAudioCenRepHandler;
    86     delete iDTMFHandler;
       
    87     DeinitRingTonePlayer();
    88     DeinitRingTonePlayer();
    88     delete iTMSRtPlayer;
    89     delete iTMSRtPlayer;
    89 
    90     delete iDTMFUplinkPlayer;
       
    91     delete iDTMFUplinkPlayerEtel;
       
    92     delete iDTMFDnlinkPlayer;
       
    93     delete iSyncVol;
    90     TRACE_PRN_FN_EXT;
    94     TRACE_PRN_FN_EXT;
    91     }
    95     }
    92 
    96 
    93 // -----------------------------------------------------------------------------
    97 // -----------------------------------------------------------------------------
    94 // TMSServer::NewSessionL
    98 // TMSServer::NewSessionL
   132     StartL(KTMSServerName);
   136     StartL(KTMSServerName);
   133     RThread().SetPriority(EPriorityRealTime);
   137     RThread().SetPriority(EPriorityRealTime);
   134     iEffectSettings = TMSGlobalEffectsSettings::NewL();
   138     iEffectSettings = TMSGlobalEffectsSettings::NewL();
   135     iTarHandler = NULL;
   139     iTarHandler = NULL;
   136     iAudioCenRepHandler = NULL;
   140     iAudioCenRepHandler = NULL;
   137     iDTMFHandler = NULL;
       
   138     iCurrentRouting = TMS_AUDIO_OUTPUT_PRIVATE;
   141     iCurrentRouting = TMS_AUDIO_OUTPUT_PRIVATE;
       
   142     iDTMFDnlinkPlayer = NULL;
       
   143     iDTMFUplinkPlayer = NULL;
       
   144     iDTMFUplinkPlayerEtel = NULL;
       
   145     iActiveCallType = -1;
       
   146     iSyncVol = TMSPubSubListener::NewL(KTMSPropertyCategory,ESyncVolume, this);
   139 
   147 
   140     //TODO: EUnit fails to initialize ProfileEngine in RT in eshell mode
   148     //TODO: EUnit fails to initialize ProfileEngine in RT in eshell mode
   141     TRAP_IGNORE(InitRingTonePlayerL());
   149     TRAP_IGNORE(InitRingTonePlayerL());
   142 
   150 
   143     // We need it running for global volume change updates
   151     // We need it running for global volume change updates
   188     {
   196     {
   189     return iSession;
   197     return iSession;
   190     }
   198     }
   191 
   199 
   192 // -----------------------------------------------------------------------------
   200 // -----------------------------------------------------------------------------
   193 // TMSServer::SetDnLinkSession
       
   194 //
       
   195 // -----------------------------------------------------------------------------
       
   196 //
       
   197 void TMSServer::SetDnLinkSession(const TBool aSession)
       
   198     {
       
   199     iDnlinkSession = aSession;
       
   200     }
       
   201 
       
   202 // -----------------------------------------------------------------------------
       
   203 // TMSServer::SetUpLinkSession
       
   204 //
       
   205 // -----------------------------------------------------------------------------
       
   206 //
       
   207 void TMSServer::SetUpLinkSession(const TBool aSession)
       
   208     {
       
   209     iUplinkSession = aSession;
       
   210     }
       
   211 
       
   212 // -----------------------------------------------------------------------------
       
   213 // TMSServer::HasDnLinkSession
       
   214 //
       
   215 // -----------------------------------------------------------------------------
       
   216 //
       
   217 TBool TMSServer::HasDnLinkSession() const
       
   218     {
       
   219     return iDnlinkSession;
       
   220     }
       
   221 
       
   222 // -----------------------------------------------------------------------------
       
   223 // TMSServer::HasUpLinkSession
       
   224 //
       
   225 // -----------------------------------------------------------------------------
       
   226 //
       
   227 TBool TMSServer::HasUpLinkSession() const
       
   228     {
       
   229     return iUplinkSession;
       
   230     }
       
   231 
       
   232 // -----------------------------------------------------------------------------
       
   233 // TMSServer::GetNewTMSCallSessionHandleL
   201 // TMSServer::GetNewTMSCallSessionHandleL
   234 //
   202 //
   235 // -----------------------------------------------------------------------------
   203 // -----------------------------------------------------------------------------
   236 //
   204 //
   237 void TMSServer::GetNewTMSCallSessionHandleL(RHandleBase& aHandle)
   205 void TMSServer::GetNewTMSCallSessionHandleL(RHandleBase& aHandle)
   270     {
   238     {
   271     TRACE_PRN_FN_ENT;
   239     TRACE_PRN_FN_ENT;
   272 
   240 
   273     TInt status = TMS_RESULT_SUCCESS;
   241     TInt status = TMS_RESULT_SUCCESS;
   274     TMSStartAndMonitorTMSCallThread* callServerThread = NULL;
   242     TMSStartAndMonitorTMSCallThread* callServerThread = NULL;
   275     TRAP(status, callServerThread =TMSStartAndMonitorTMSCallThread::NewL(
   243     TRAP(status, callServerThread = TMSStartAndMonitorTMSCallThread::NewL(
   276             const_cast<TMSServer*>(this)));
   244             const_cast<TMSServer*>(this)));
   277     if (status != TMS_RESULT_SUCCESS)
   245     if (status != TMS_RESULT_SUCCESS)
   278         {
   246         {
   279         delete callServerThread;
   247         delete callServerThread;
   280         }
   248         }
   295                 {
   263                 {
   296                 case TMS_AUDIO_OUTPUT_PUBLIC:
   264                 case TMS_AUDIO_OUTPUT_PUBLIC:
   297                 case TMS_AUDIO_OUTPUT_LOUDSPEAKER:
   265                 case TMS_AUDIO_OUTPUT_LOUDSPEAKER:
   298                     {
   266                     {
   299                     iEffectSettings->GetLoudSpkrVolume(volume);
   267                     iEffectSettings->GetLoudSpkrVolume(volume);
       
   268                     TRACE_PRN_N1(_L("loudspk vol %d"),volume);
   300                     }
   269                     }
   301                     break;
   270                     break;
   302                 default:
   271                 default:
   303                     {
   272                     {
   304                     iEffectSettings->GetEarPieceVolume(volume);
   273                     iEffectSettings->GetEarPieceVolume(volume);
       
   274                     TRACE_PRN_N1(_L("ear vol %d"),volume);
   305                     }
   275                     }
   306                     break;
   276                     break;
   307                 }
   277                 }
   308             aHandle.SendToCallServer(TMS_EFFECT_GLOBAL_VOL_SET, volume);
   278             aHandle.SendToCallServer(TMS_EFFECT_GLOBAL_VOL_SET, volume);
   309             aHandle.SendToCallServer(TMS_EFFECT_GLOBAL_GAIN_SET,
   279             aHandle.SendToCallServer(TMS_EFFECT_GLOBAL_GAIN_SET,
   383     {
   353     {
   384     if (--iAudioCenRepHandlerCount <= 0)
   354     if (--iAudioCenRepHandlerCount <= 0)
   385         {
   355         {
   386         delete iAudioCenRepHandler;
   356         delete iAudioCenRepHandler;
   387         iAudioCenRepHandler = NULL;
   357         iAudioCenRepHandler = NULL;
   388         }
       
   389     }
       
   390 
       
   391 // -----------------------------------------------------------------------------
       
   392 // TMSServer::StartDTMFNotifierL
       
   393 //
       
   394 // -----------------------------------------------------------------------------
       
   395 //
       
   396 void TMSServer::StartDTMFNotifierL()
       
   397     {
       
   398     TRACE_PRN_FN_ENT;
       
   399 
       
   400     if (!iDTMFHandler)
       
   401         {
       
   402         iDTMFHandlerCount = 0;
       
   403         iDTMFHandler = TMSDtmfEventHandler::NewL(
       
   404                 (const_cast<TMSServer*> (this)));
       
   405         }
       
   406     iDTMFHandlerCount++;
       
   407 
       
   408     TRACE_PRN_FN_EXT;
       
   409     }
       
   410 
       
   411 // -----------------------------------------------------------------------------
       
   412 // TMSServer::CancelDTMFNotifier
       
   413 //
       
   414 // -----------------------------------------------------------------------------
       
   415 //
       
   416 void TMSServer::CancelDTMFNotifier()
       
   417     {
       
   418     if (--iDTMFHandlerCount <= 0)
       
   419         {
       
   420         delete iDTMFHandler;
       
   421         iDTMFHandler = NULL;
       
   422         }
   358         }
   423     }
   359     }
   424 
   360 
   425 // -----------------------------------------------------------------------------
   361 // -----------------------------------------------------------------------------
   426 // TMSServer::SetOutput
   362 // TMSServer::SetOutput
   606     switch (iCurrentRouting)
   542     switch (iCurrentRouting)
   607         {
   543         {
   608         case TMS_AUDIO_OUTPUT_PUBLIC:
   544         case TMS_AUDIO_OUTPUT_PUBLIC:
   609         case TMS_AUDIO_OUTPUT_LOUDSPEAKER:
   545         case TMS_AUDIO_OUTPUT_LOUDSPEAKER:
   610             iEffectSettings->GetLoudSpkrVolume(volume);
   546             iEffectSettings->GetLoudSpkrVolume(volume);
       
   547             TRACE_PRN_N1(_L("TMSServer::GetLevel loudspkr vol %d"),volume);
   611             break;
   548             break;
   612         default:
   549         default:
   613             iEffectSettings->GetEarPieceVolume(volume);
   550             iEffectSettings->GetEarPieceVolume(volume);
       
   551             TRACE_PRN_N1(_L("TMSServer::GetLevel ear vol %d"),volume);
   614             break;
   552             break;
   615         }
   553         }
   616 
   554 
   617     pckg() = volume;
   555     pckg() = volume;
   618     if (status == TMS_RESULT_SUCCESS)
   556     if (status == TMS_RESULT_SUCCESS)
   666             default:
   604             default:
   667                 break;
   605                 break;
   668             }
   606             }
   669 
   607 
   670         iSessionIter.SetToFirst();
   608         iSessionIter.SetToFirst();
   671         TMSServerSession* serverSession =
   609         TMSServerSession* ss = static_cast<TMSServerSession*> (iSessionIter++);
   672                 static_cast<TMSServerSession*> (iSessionIter++);
   610         while (ss != NULL)
   673 
   611             {
   674         while (serverSession != NULL)
   612             ss->HandleGlobalEffectChange(TMS_EVENT_EFFECT_VOL_CHANGED, level,
   675             {
   613                     EFalse, iCurrentRouting);
   676             serverSession->HandleGlobalEffectChange(
   614             ss = static_cast<TMSServerSession*> (iSessionIter++);
   677                     TMS_EVENT_EFFECT_VOL_CHANGED, level, EFalse,
       
   678                     iCurrentRouting);
       
   679 
       
   680             serverSession = static_cast<TMSServerSession*> (iSessionIter++);
       
   681             }
   615             }
   682         }
   616         }
   683 
   617 
   684     TRACE_PRN_FN_EXT;
   618     TRACE_PRN_FN_EXT;
   685     return status;
   619     return status;
   742     if (status == TMS_RESULT_SUCCESS)
   676     if (status == TMS_RESULT_SUCCESS)
   743         {
   677         {
   744         iAudioCenRepHandler->SetMuteState(level);
   678         iAudioCenRepHandler->SetMuteState(level);
   745         iEffectSettings->SetGain(level);
   679         iEffectSettings->SetGain(level);
   746         iSessionIter.SetToFirst();
   680         iSessionIter.SetToFirst();
   747 
   681         TMSServerSession* ss = static_cast<TMSServerSession*> (iSessionIter++);
   748         TMSServerSession* serverSession =
   682         while (ss != NULL)
   749                 static_cast<TMSServerSession*> (iSessionIter++);
   683             {
   750 
   684             ss->HandleGlobalEffectChange(TMS_EVENT_EFFECT_GAIN_CHANGED, level);
   751         while (serverSession != NULL)
   685             ss = static_cast<TMSServerSession*> (iSessionIter++);
   752             {
       
   753             serverSession->HandleGlobalEffectChange(
       
   754                     TMS_EVENT_EFFECT_GAIN_CHANGED, level);
       
   755             serverSession = static_cast<TMSServerSession*> (iSessionIter++);
       
   756             }
   686             }
   757         }
   687         }
   758 
   688 
   759     TRACE_PRN_FN_EXT;
   689     TRACE_PRN_FN_EXT;
   760     return status;
   690     return status;
   874     iCurrentRouting = routingpckg().iOutput;
   804     iCurrentRouting = routingpckg().iOutput;
   875     if (iCurrentRouting == TMS_AUDIO_OUTPUT_PUBLIC ||
   805     if (iCurrentRouting == TMS_AUDIO_OUTPUT_PUBLIC ||
   876             iCurrentRouting == TMS_AUDIO_OUTPUT_LOUDSPEAKER)
   806             iCurrentRouting == TMS_AUDIO_OUTPUT_LOUDSPEAKER)
   877         {
   807         {
   878         iEffectSettings->GetLoudSpkrVolume(vol);
   808         iEffectSettings->GetLoudSpkrVolume(vol);
       
   809         TRACE_PRN_N1(_L("TMSServer::NotifyTarClients loudspkr vol %d"),vol);
   879         }
   810         }
   880     else
   811     else
   881         {
   812         {
   882         iEffectSettings->GetEarPieceVolume(vol);
   813         iEffectSettings->GetEarPieceVolume(vol);
       
   814         TRACE_PRN_N1(_L("TMSServer::NotifyTarClients ear vol %d"),vol);
   883         }
   815         }
   884 
   816 
   885     TInt status = SendMessageToCallServ(TMS_EFFECT_GLOBAL_VOL_SET, vol);
   817     TInt status = SendMessageToCallServ(TMS_EFFECT_GLOBAL_VOL_SET, vol);
   886 
   818 
   887     iSessionIter.SetToFirst();
   819     iSessionIter.SetToFirst();
   888     TMSServerSession* serverSession =
   820     TMSServerSession* ss = static_cast<TMSServerSession*> (iSessionIter++);
   889             static_cast<TMSServerSession*> (iSessionIter++);
   821     while (ss != NULL)
   890     while (serverSession != NULL)
       
   891         {
   822         {
   892         // Send only if there is a subscriber to TMS routing notifications.
   823         // Send only if there is a subscriber to TMS routing notifications.
   893         if (iTarHandlerCount > 1)
   824         if (iTarHandlerCount > 1)
   894             {
   825             {
   895             serverSession->HandleRoutingChange(routingpckg);
   826             ss->HandleRoutingChange(routingpckg);
   896             }
   827             }
   897         serverSession->HandleGlobalEffectChange(TMS_EVENT_EFFECT_VOL_CHANGED,
   828         ss->HandleGlobalEffectChange(TMS_EVENT_EFFECT_VOL_CHANGED, vol, ETrue,
   898                 vol, ETrue, iCurrentRouting);
   829                 iCurrentRouting);
   899         serverSession = static_cast<TMSServerSession*> (iSessionIter++);
   830         ss = static_cast<TMSServerSession*> (iSessionIter++);
   900         }
   831         }
   901 
   832 
       
   833     TRACE_PRN_FN_EXT;
       
   834     return status;
       
   835     }
       
   836 
       
   837 // -----------------------------------------------------------------------------
       
   838 // TMSServer::InitDTMF
       
   839 //
       
   840 // -----------------------------------------------------------------------------
       
   841 //
       
   842 TInt TMSServer::InitDTMF(const RMessage2& aMessage)
       
   843     {
       
   844     TRACE_PRN_FN_ENT;
       
   845     TInt status(TMS_RESULT_SUCCESS);
       
   846     TMSStreamType strmtype;
       
   847     strmtype = (TMSStreamType) aMessage.Int0();
       
   848 
       
   849     if (strmtype == TMS_STREAM_UPLINK)
       
   850         {
       
   851         if (!iDTMFUplinkPlayerEtel) //CS call
       
   852             {
       
   853             // Uses ETel for uplink
       
   854             TRAP(status, iDTMFUplinkPlayerEtel = TMSDTMFProvider::NewL());
       
   855             if (iDTMFUplinkPlayerEtel && status == TMS_RESULT_SUCCESS)
       
   856                 {
       
   857                 iDTMFUplinkPlayerEtel->AddObserver(*this);
       
   858                 }
       
   859             }
       
   860         if (!iDTMFUplinkPlayer) //IP call
       
   861             {
       
   862             TRAP(status, iDTMFUplinkPlayer = TMSAudioDtmfTonePlayer::NewL(*this,
       
   863                     KAudioDTMFString, KAudioPriorityDTMFString));
       
   864             }
       
   865         }
       
   866     else if (strmtype == TMS_STREAM_DOWNLINK)
       
   867         {
       
   868         if (!iDTMFDnlinkPlayer) //CS or IP call
       
   869             {
       
   870             TRAP(status, iDTMFDnlinkPlayer = TMSAudioDtmfTonePlayer::NewL(*this,
       
   871                     KAudioDTMFString, KAudioPriorityDTMFString));
       
   872             }
       
   873         }
       
   874 
       
   875     aMessage.Complete(status);
   902     TRACE_PRN_FN_EXT;
   876     TRACE_PRN_FN_EXT;
   903     return status;
   877     return status;
   904     }
   878     }
   905 
   879 
   906 // -----------------------------------------------------------------------------
   880 // -----------------------------------------------------------------------------
   913     TRACE_PRN_FN_ENT;
   887     TRACE_PRN_FN_ENT;
   914 
   888 
   915     TInt status(TMS_RESULT_SUCCESS);
   889     TInt status(TMS_RESULT_SUCCESS);
   916     TInt len(0);
   890     TInt len(0);
   917     TMSStreamType strmtype;
   891     TMSStreamType strmtype;
   918 
       
   919     strmtype = (TMSStreamType) aMessage.Int0();
   892     strmtype = (TMSStreamType) aMessage.Int0();
   920     len = aMessage.GetDesLength(1);
   893     len = aMessage.GetDesLength(1);
   921     HBufC* tone(NULL);
       
   922     if (len > 0)
   894     if (len > 0)
   923         {
   895         {
   924         delete tone;
   896         HBufC* tone(NULL);
   925         tone = NULL;
   897         TRAP(status, tone = HBufC::NewL(len));
   926         TRAP(status,tone = HBufC::NewL(len));
       
   927         if (status == TMS_RESULT_SUCCESS)
   898         if (status == TMS_RESULT_SUCCESS)
   928             {
   899             {
   929             TPtr ptr = tone->Des();
   900             TPtr ptr = tone->Des();
   930             status = aMessage.Read(1, ptr);
   901             status = aMessage.Read(1, ptr);
   931             TRACE_PRN_N(ptr);
   902             TRACE_PRN_N(ptr);
   932 
   903 
   933             TIpcArgs args;
   904             if (strmtype == TMS_STREAM_UPLINK)
   934             args.Set(0, strmtype);
   905                 {
   935             args.Set(1, &ptr);
   906 #ifdef __WINSCW__
   936             status = SendMessageToCallServ(TMS_DTMF_START, args);
   907                 // Just to hear DTMF tones in Wins
   937             delete tone;
   908                 iActiveCallType = TMS_CALL_IP;
   938             tone = NULL;
   909 #else
   939             }
   910                 FindActiveCallType();
   940         }
   911 #endif
       
   912                 if (iActiveCallType == TMS_CALL_IP && iDTMFUplinkPlayer)
       
   913                     {
       
   914                     iDTMFUplinkPlayer->PlayDtmfTone(ptr);
       
   915                     status = TMS_RESULT_SUCCESS;
       
   916                     }
       
   917                 else if (iActiveCallType == TMS_CALL_CS &&
       
   918                         iDTMFUplinkPlayerEtel)
       
   919                     {
       
   920                     status = iDTMFUplinkPlayerEtel->SendDtmfToneString(ptr);
       
   921                     }
       
   922                 else
       
   923                     {
       
   924                     status = TMS_RESULT_INVALID_STATE;
       
   925                     }
       
   926                 NotifyDtmfClients(ECmdDTMFToneUplPlayStarted, status);
       
   927                 }
       
   928             else if (strmtype == TMS_STREAM_DOWNLINK)
       
   929                 {
       
   930                 status = TMS_RESULT_INVALID_STATE;
       
   931                 if (iDTMFDnlinkPlayer)
       
   932                     {
       
   933                     iDTMFDnlinkPlayer->PlayDtmfTone(ptr);
       
   934                     status = TMS_RESULT_SUCCESS;
       
   935                     }
       
   936                 NotifyDtmfClients(ECmdDTMFToneDnlPlayStarted, status);
       
   937                 }
       
   938             else
       
   939                 {
       
   940                 status = TMS_RESULT_STREAM_TYPE_NOT_SUPPORTED;
       
   941                 }
       
   942             }
       
   943         delete tone;
       
   944         tone = NULL;
       
   945         }
       
   946 
   941     aMessage.Complete(status);
   947     aMessage.Complete(status);
   942 
       
   943     TRACE_PRN_FN_EXT;
   948     TRACE_PRN_FN_EXT;
   944     return status;
   949     return status;
   945     }
   950     }
   946 
   951 
   947 // -----------------------------------------------------------------------------
   952 // -----------------------------------------------------------------------------
   951 //
   956 //
   952 TInt TMSServer::StopDTMF(const RMessage2& aMessage)
   957 TInt TMSServer::StopDTMF(const RMessage2& aMessage)
   953     {
   958     {
   954     TRACE_PRN_FN_ENT;
   959     TRACE_PRN_FN_ENT;
   955 
   960 
   956     TInt status(TMS_RESULT_SUCCESS);
   961     TInt status(TMS_RESULT_INVALID_STATE);
   957     TMSStreamType streamtype;
   962     TMSStreamType streamtype;
   958     streamtype = (TMSStreamType) aMessage.Int0();
   963     streamtype = (TMSStreamType) aMessage.Int0();
   959     status = SendMessageToCallServ(TMS_DTMF_STOP, streamtype);
   964 
       
   965     if (streamtype == TMS_STREAM_UPLINK)
       
   966         {
       
   967         if (iActiveCallType == TMS_CALL_IP && iDTMFUplinkPlayer)
       
   968             {
       
   969             iDTMFUplinkPlayer->Cancel();
       
   970             status = TMS_RESULT_SUCCESS;
       
   971             }
       
   972         else if (iActiveCallType == TMS_CALL_CS &&
       
   973                 iDTMFUplinkPlayerEtel)
       
   974             {
       
   975             status = iDTMFUplinkPlayerEtel->StopDtmfTone();
       
   976             status = TMSUtility::EtelToTMSResult(status);
       
   977             }
       
   978         }
       
   979     else if (streamtype == TMS_STREAM_DOWNLINK)
       
   980         {
       
   981         if (iDTMFDnlinkPlayer)
       
   982             {
       
   983             iDTMFDnlinkPlayer->Cancel();
       
   984             status = TMS_RESULT_SUCCESS;
       
   985             }
       
   986         }
       
   987     iActiveCallType = -1;
       
   988     NotifyDtmfClients(ECmdDTMFTonePlayFinished, status);
   960     aMessage.Complete(status);
   989     aMessage.Complete(status);
   961 
       
   962     TRACE_PRN_FN_EXT;
   990     TRACE_PRN_FN_EXT;
   963     return status;
   991     return status;
   964     }
   992     }
   965 
   993 
   966 // -----------------------------------------------------------------------------
   994 // -----------------------------------------------------------------------------
   969 // -----------------------------------------------------------------------------
   997 // -----------------------------------------------------------------------------
   970 //
   998 //
   971 TInt TMSServer::ContinueSendingDTMF(const RMessage2& aMessage)
   999 TInt TMSServer::ContinueSendingDTMF(const RMessage2& aMessage)
   972     {
  1000     {
   973     TRACE_PRN_FN_ENT;
  1001     TRACE_PRN_FN_ENT;
   974 
  1002     TInt status(TMS_RESULT_INVALID_STATE);
   975     TInt status(TMS_RESULT_SUCCESS);
  1003     if (iActiveCallType == TMS_CALL_CS && iDTMFUplinkPlayerEtel)
   976     TBool continuesending;
  1004         {
   977     continuesending = (TBool) aMessage.Int0();
  1005         TBool continuesnd = (TBool) aMessage.Int0();
   978     status = SendMessageToCallServ(TMS_DTMF_CONTINUE, continuesending);
  1006         status = iDTMFUplinkPlayerEtel->ContinueDtmfStringSending(continuesnd);
       
  1007         status = TMSUtility::EtelToTMSResult(status);
       
  1008         }
   979     aMessage.Complete(status);
  1009     aMessage.Complete(status);
   980 
       
   981     TRACE_PRN_FN_EXT;
  1010     TRACE_PRN_FN_EXT;
   982     return status;
  1011     return status;
   983     }
  1012     }
   984 
  1013 
   985 // -----------------------------------------------------------------------------
  1014 // -----------------------------------------------------------------------------
   986 // TMSServer::NotifyDtmfClients
  1015 // TMSServer::NotifyDtmfClients
   987 //
  1016 //
   988 // -----------------------------------------------------------------------------
  1017 // -----------------------------------------------------------------------------
   989 //
  1018 //
   990 TInt TMSServer::NotifyDtmfClients(TmsMsgBufPckg dtmfpckg)
  1019 TInt TMSServer::NotifyDtmfClients(gint aEventType, gint aError)
   991     {
  1020     {
   992     TRACE_PRN_FN_ENT;
  1021     TRACE_PRN_FN_ENT;
   993 
       
   994     iSessionIter.SetToFirst();
  1022     iSessionIter.SetToFirst();
   995     TMSServerSession* serverSession =
  1023     TMSServerSession* ss = static_cast<TMSServerSession*> (iSessionIter++);
   996             static_cast<TMSServerSession*> (iSessionIter++);
  1024     while (ss != NULL)
   997 
  1025         {
   998     while (serverSession != NULL)
  1026         ss->NotifyClient(aEventType, aError);
   999         {
  1027         ss = static_cast<TMSServerSession*> (iSessionIter++);
  1000         serverSession->NotifyClient(dtmfpckg().iRequest, dtmfpckg().iStatus);
  1028         }
  1001         serverSession = static_cast<TMSServerSession*> (iSessionIter++);
       
  1002         }
       
  1003 
       
  1004     TRACE_PRN_FN_EXT;
  1029     TRACE_PRN_FN_EXT;
  1005     return TMS_RESULT_SUCCESS;
  1030     return TMS_RESULT_SUCCESS;
       
  1031     }
       
  1032 
       
  1033 //From DTMFTonePlayerObserver
       
  1034 // -----------------------------------------------------------------------------
       
  1035 // TMSServer::DTMFInitCompleted
       
  1036 //
       
  1037 // -----------------------------------------------------------------------------
       
  1038 //
       
  1039 void TMSServer::DTMFInitCompleted(gint status)
       
  1040     {
       
  1041     TRACE_PRN_FN_ENT;
       
  1042     if (status != TMS_RESULT_SUCCESS)
       
  1043         {
       
  1044         NotifyDtmfClients(ECmdDTMFTonePlayFinished, status);
       
  1045         }
       
  1046     TRACE_PRN_FN_EXT;
       
  1047     }
       
  1048 
       
  1049 // -----------------------------------------------------------------------------
       
  1050 // TMSServer::DTMFToneFinished
       
  1051 //
       
  1052 // -----------------------------------------------------------------------------
       
  1053 //
       
  1054 void TMSServer::DTMFToneFinished(gint status)
       
  1055     {
       
  1056     TRACE_PRN_FN_ENT;
       
  1057     TRACE_PRN_IF_ERR(status);
       
  1058 
       
  1059     // KErrUnderflow indicates end of DTMF playback.
       
  1060     if (status == KErrUnderflow /*|| status == KErrInUse*/)
       
  1061         {
       
  1062         status = TMS_RESULT_SUCCESS;
       
  1063         }
       
  1064     NotifyDtmfClients(ECmdDTMFTonePlayFinished, status);
       
  1065     TRACE_PRN_FN_EXT;
       
  1066     }
       
  1067 
       
  1068 // -----------------------------------------------------------------------------
       
  1069 // TMSServer::FindActiveCallType
       
  1070 //
       
  1071 // -----------------------------------------------------------------------------
       
  1072 //
       
  1073 gint TMSServer::FindActiveCallType()
       
  1074     {
       
  1075     TInt status(TMS_RESULT_INVALID_STATE);
       
  1076     iActiveCallType = -1;
       
  1077     TInt i = 0;
       
  1078     while (i < iTMSCallServList.Count())
       
  1079         {
       
  1080         TMSStartAndMonitorTMSCallThread* callThread = iTMSCallServList[i];
       
  1081         if (callThread)
       
  1082             {
       
  1083             TmsCallMsgBufPckg pckg;
       
  1084             TIpcArgs args(&pckg);
       
  1085             status = callThread->iTMSCallProxyLocal.ReceiveFromCallServer(
       
  1086                     TMS_GET_ACTIVE_CALL_PARAMS, args);
       
  1087             if (pckg().iBool || status != TMS_RESULT_SUCCESS)
       
  1088                 {
       
  1089                 iActiveCallType = static_cast<TMSCallType> (pckg().iInt);
       
  1090                 break;
       
  1091                 }
       
  1092             }
       
  1093         i++;
       
  1094         }
       
  1095     return status;
       
  1096     }
       
  1097 
       
  1098 // -----------------------------------------------------------------------------
       
  1099 // TMSServer::HandleDTMFEvent
       
  1100 //
       
  1101 // -----------------------------------------------------------------------------
       
  1102 //
       
  1103 void TMSServer::HandleDTMFEvent(const TMSDTMFObserver::TCCPDtmfEvent event,
       
  1104         const gint status, const TChar /*tone*/)
       
  1105     {
       
  1106     TRACE_PRN_FN_ENT;
       
  1107     TRACE_PRN_IF_ERR(status);
       
  1108     gint cmd = ECmdDTMFTonePlayFinished;
       
  1109 
       
  1110     switch (event)
       
  1111         {
       
  1112         case ECCPDtmfUnknown:               //Unknown
       
  1113             break;
       
  1114         case ECCPDtmfManualStart:           //DTMF sending started manually
       
  1115         case ECCPDtmfSequenceStart:         //Automatic DTMF sending initialized
       
  1116             cmd = ECmdDTMFToneUplPlayStarted;
       
  1117             break;
       
  1118         case ECCPDtmfManualStop:            //DTMF sending stopped manually
       
  1119         case ECCPDtmfManualAbort:           //DTMF sending aborted manually
       
  1120         case ECCPDtmfSequenceStop:          //Automatic DTMF sending stopped
       
  1121         case ECCPDtmfSequenceAbort:         //Automatic DTMF sending aborted
       
  1122         case ECCPDtmfStopInDtmfString:      //There was stop mark in DTMF string
       
  1123         case ECCPDtmfStringSendingCompleted://DTMF sending success
       
  1124         default:
       
  1125             break;
       
  1126         }
       
  1127 
       
  1128     NotifyDtmfClients(cmd, status);
       
  1129     TRACE_PRN_FN_EXT;
  1006     }
  1130     }
  1007 
  1131 
  1008 // -----------------------------------------------------------------------------
  1132 // -----------------------------------------------------------------------------
  1009 // TMSServer::InitRingTonePlayerL
  1133 // TMSServer::InitRingTonePlayerL
  1010 //
  1134 //
  1290 
  1414 
  1291     TRACE_PRN_FN_EXT;
  1415     TRACE_PRN_FN_EXT;
  1292     }
  1416     }
  1293 
  1417 
  1294 // -----------------------------------------------------------------------------
  1418 // -----------------------------------------------------------------------------
       
  1419 // TMSServer::HandleNotifyPSL
       
  1420 //
       
  1421 // -----------------------------------------------------------------------------
       
  1422 //
       
  1423 void TMSServer::HandleNotifyPSL(const TUid aUid, const TInt& aKey,
       
  1424             const TRequestStatus& aStatus)
       
  1425     {
       
  1426     TRACE_PRN_FN_ENT;
       
  1427     if(iEffectSettings)
       
  1428         {
       
  1429         iEffectSettings->ResetDefaultVolume();
       
  1430         }
       
  1431     TRACE_PRN_FN_EXT;
       
  1432     }
       
  1433 
       
  1434 // -----------------------------------------------------------------------------
  1295 // TMSServer::RunServerL
  1435 // TMSServer::RunServerL
  1296 //
  1436 //
  1297 // -----------------------------------------------------------------------------
  1437 // -----------------------------------------------------------------------------
  1298 //
  1438 //
  1299 void TMSServer::RunServerL()
  1439 void TMSServer::RunServerL()
  1573         }
  1713         }
  1574     __UHEAP_MARKEND;
  1714     __UHEAP_MARKEND;
  1575     return r;
  1715     return r;
  1576     }
  1716     }
  1577 
  1717 
  1578 // End of file