mmserv/tms/tmsserver/src/tmsserver.cpp
changeset 33 5e8b14bae8c3
parent 28 ebf79c79991a
child 36 73253677b50a
equal deleted inserted replaced
28:ebf79c79991a 33:5e8b14bae8c3
    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 "tmsdtmftoneplayer.h"
       
    34 #include "tmsdtmfprovider.h"
       
    35 #include "tmsdtmfnotifier.h"
    33 #include "tmsdtmfeventhandler.h"
    36 #include "tmsdtmfeventhandler.h"
    34 #include "tmsrtparam.h"
    37 #include "tmsrtparam.h"
    35 #include "tmsserver.h"
    38 #include "tmsserver.h"
    36 
    39 
    37 using namespace TMS;
    40 using namespace TMS;
    84     delete iTarHandler;
    87     delete iTarHandler;
    85     delete iAudioCenRepHandler;
    88     delete iAudioCenRepHandler;
    86     delete iDTMFHandler;
    89     delete iDTMFHandler;
    87     DeinitRingTonePlayer();
    90     DeinitRingTonePlayer();
    88     delete iTMSRtPlayer;
    91     delete iTMSRtPlayer;
       
    92     delete iDTMFUplinkPlayer;
       
    93     delete iDTMFUplinkPlayerEtel;
       
    94     delete iDTMFDnlinkPlayer;
       
    95     delete iDTMFNotifier;
    89 
    96 
    90     TRACE_PRN_FN_EXT;
    97     TRACE_PRN_FN_EXT;
    91     }
    98     }
    92 
    99 
    93 // -----------------------------------------------------------------------------
   100 // -----------------------------------------------------------------------------
   134     iEffectSettings = TMSGlobalEffectsSettings::NewL();
   141     iEffectSettings = TMSGlobalEffectsSettings::NewL();
   135     iTarHandler = NULL;
   142     iTarHandler = NULL;
   136     iAudioCenRepHandler = NULL;
   143     iAudioCenRepHandler = NULL;
   137     iDTMFHandler = NULL;
   144     iDTMFHandler = NULL;
   138     iCurrentRouting = TMS_AUDIO_OUTPUT_PRIVATE;
   145     iCurrentRouting = TMS_AUDIO_OUTPUT_PRIVATE;
       
   146     iDTMFDnlinkPlayer = NULL;
       
   147     iDTMFUplinkPlayer = NULL;
       
   148     iDTMFUplinkPlayerEtel = NULL;
       
   149     iDTMFNotifier = NULL;
   139 
   150 
   140     //TODO: EUnit fails to initialize ProfileEngine in RT in eshell mode
   151     //TODO: EUnit fails to initialize ProfileEngine in RT in eshell mode
   141     TRAP_IGNORE(InitRingTonePlayerL());
   152     TRAP_IGNORE(InitRingTonePlayerL());
   142 
   153 
   143     // We need it running for global volume change updates
   154     // We need it running for global volume change updates
   188     {
   199     {
   189     return iSession;
   200     return iSession;
   190     }
   201     }
   191 
   202 
   192 // -----------------------------------------------------------------------------
   203 // -----------------------------------------------------------------------------
   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
   204 // TMSServer::GetNewTMSCallSessionHandleL
   234 //
   205 //
   235 // -----------------------------------------------------------------------------
   206 // -----------------------------------------------------------------------------
   236 //
   207 //
   237 void TMSServer::GetNewTMSCallSessionHandleL(RHandleBase& aHandle)
   208 void TMSServer::GetNewTMSCallSessionHandleL(RHandleBase& aHandle)
   270     {
   241     {
   271     TRACE_PRN_FN_ENT;
   242     TRACE_PRN_FN_ENT;
   272 
   243 
   273     TInt status = TMS_RESULT_SUCCESS;
   244     TInt status = TMS_RESULT_SUCCESS;
   274     TMSStartAndMonitorTMSCallThread* callServerThread = NULL;
   245     TMSStartAndMonitorTMSCallThread* callServerThread = NULL;
   275     TRAP(status, callServerThread =TMSStartAndMonitorTMSCallThread::NewL(
   246     TRAP(status, callServerThread = TMSStartAndMonitorTMSCallThread::NewL(
   276             const_cast<TMSServer*>(this)));
   247             const_cast<TMSServer*>(this)));
   277     if (status != TMS_RESULT_SUCCESS)
   248     if (status != TMS_RESULT_SUCCESS)
   278         {
   249         {
   279         delete callServerThread;
   250         delete callServerThread;
   280         }
   251         }
   666             default:
   637             default:
   667                 break;
   638                 break;
   668             }
   639             }
   669 
   640 
   670         iSessionIter.SetToFirst();
   641         iSessionIter.SetToFirst();
   671         TMSServerSession* serverSession =
   642         TMSServerSession* ss = static_cast<TMSServerSession*> (iSessionIter++);
   672                 static_cast<TMSServerSession*> (iSessionIter++);
   643         while (ss != NULL)
   673 
   644             {
   674         while (serverSession != NULL)
   645             ss->HandleGlobalEffectChange(TMS_EVENT_EFFECT_VOL_CHANGED, level,
   675             {
   646                     EFalse, iCurrentRouting);
   676             serverSession->HandleGlobalEffectChange(
   647             ss = static_cast<TMSServerSession*> (iSessionIter++);
   677                     TMS_EVENT_EFFECT_VOL_CHANGED, level, EFalse,
       
   678                     iCurrentRouting);
       
   679 
       
   680             serverSession = static_cast<TMSServerSession*> (iSessionIter++);
       
   681             }
   648             }
   682         }
   649         }
   683 
   650 
   684     TRACE_PRN_FN_EXT;
   651     TRACE_PRN_FN_EXT;
   685     return status;
   652     return status;
   742     if (status == TMS_RESULT_SUCCESS)
   709     if (status == TMS_RESULT_SUCCESS)
   743         {
   710         {
   744         iAudioCenRepHandler->SetMuteState(level);
   711         iAudioCenRepHandler->SetMuteState(level);
   745         iEffectSettings->SetGain(level);
   712         iEffectSettings->SetGain(level);
   746         iSessionIter.SetToFirst();
   713         iSessionIter.SetToFirst();
   747 
   714         TMSServerSession* ss = static_cast<TMSServerSession*> (iSessionIter++);
   748         TMSServerSession* serverSession =
   715         while (ss != NULL)
   749                 static_cast<TMSServerSession*> (iSessionIter++);
   716             {
   750 
   717             ss->HandleGlobalEffectChange(TMS_EVENT_EFFECT_GAIN_CHANGED, level);
   751         while (serverSession != NULL)
   718             ss = static_cast<TMSServerSession*> (iSessionIter++);
   752             {
       
   753             serverSession->HandleGlobalEffectChange(
       
   754                     TMS_EVENT_EFFECT_GAIN_CHANGED, level);
       
   755             serverSession = static_cast<TMSServerSession*> (iSessionIter++);
       
   756             }
   719             }
   757         }
   720         }
   758 
   721 
   759     TRACE_PRN_FN_EXT;
   722     TRACE_PRN_FN_EXT;
   760     return status;
   723     return status;
   883         }
   846         }
   884 
   847 
   885     TInt status = SendMessageToCallServ(TMS_EFFECT_GLOBAL_VOL_SET, vol);
   848     TInt status = SendMessageToCallServ(TMS_EFFECT_GLOBAL_VOL_SET, vol);
   886 
   849 
   887     iSessionIter.SetToFirst();
   850     iSessionIter.SetToFirst();
   888     TMSServerSession* serverSession =
   851     TMSServerSession* ss = static_cast<TMSServerSession*> (iSessionIter++);
   889             static_cast<TMSServerSession*> (iSessionIter++);
   852     while (ss != NULL)
   890     while (serverSession != NULL)
       
   891         {
   853         {
   892         // Send only if there is a subscriber to TMS routing notifications.
   854         // Send only if there is a subscriber to TMS routing notifications.
   893         if (iTarHandlerCount > 1)
   855         if (iTarHandlerCount > 1)
   894             {
   856             {
   895             serverSession->HandleRoutingChange(routingpckg);
   857             ss->HandleRoutingChange(routingpckg);
   896             }
   858             }
   897         serverSession->HandleGlobalEffectChange(TMS_EVENT_EFFECT_VOL_CHANGED,
   859         ss->HandleGlobalEffectChange(TMS_EVENT_EFFECT_VOL_CHANGED, vol, ETrue,
   898                 vol, ETrue, iCurrentRouting);
   860                 iCurrentRouting);
   899         serverSession = static_cast<TMSServerSession*> (iSessionIter++);
   861         ss = static_cast<TMSServerSession*> (iSessionIter++);
   900         }
   862         }
   901 
   863 
       
   864     TRACE_PRN_FN_EXT;
       
   865     return status;
       
   866     }
       
   867 
       
   868 // -----------------------------------------------------------------------------
       
   869 // TMSServer::InitDTMF
       
   870 //
       
   871 // -----------------------------------------------------------------------------
       
   872 //
       
   873 TInt TMSServer::InitDTMF(const RMessage2& aMessage)
       
   874     {
       
   875     TRACE_PRN_FN_ENT;
       
   876     TInt status(TMS_RESULT_SUCCESS);
       
   877     TMSStreamType strmtype;
       
   878     strmtype = (TMSStreamType) aMessage.Int0();
       
   879 
       
   880     if (strmtype == TMS_STREAM_UPLINK)
       
   881         {
       
   882         if (!iDTMFUplinkPlayerEtel) //CS call
       
   883             {
       
   884             // Uses ETel for uplink
       
   885             TRAP(status, iDTMFUplinkPlayerEtel = TMSDTMFProvider::NewL());
       
   886             if (iDTMFUplinkPlayerEtel && status == TMS_RESULT_SUCCESS)
       
   887                 {
       
   888                 iDTMFUplinkPlayerEtel->AddObserver(*this);
       
   889                 }
       
   890             }
       
   891         if (!iDTMFUplinkPlayer) //IP call
       
   892             {
       
   893             TRAP(status, iDTMFUplinkPlayer = TMSAudioDtmfTonePlayer::NewL(*this,
       
   894 //                    KAudioPrefVoipAudioUplinkNonSignal,
       
   895 //                    KAudioPrefVoipAudioUplink,
       
   896 //                    KAudioPrefUnknownVoipAudioUplink
       
   897 //                    KAudioPriorityDTMFString));
       
   898                     KAudioDTMFString, KAudioPriorityDTMFString));
       
   899             }
       
   900         }
       
   901     else if (strmtype == TMS_STREAM_DOWNLINK)
       
   902         {
       
   903         if (!iDTMFDnlinkPlayer) //CS or IP call
       
   904             {
       
   905             TRAP(status, iDTMFDnlinkPlayer = TMSAudioDtmfTonePlayer::NewL(*this,
       
   906                     KAudioDTMFString, KAudioPriorityDTMFString));
       
   907             }
       
   908         }
       
   909     if (!iDTMFNotifier && status == TMS_RESULT_SUCCESS)
       
   910         {
       
   911         TRAP(status, iDTMFNotifier = TMSDtmfNotifier::NewL());
       
   912         }
       
   913 
       
   914     aMessage.Complete(status);
   902     TRACE_PRN_FN_EXT;
   915     TRACE_PRN_FN_EXT;
   903     return status;
   916     return status;
   904     }
   917     }
   905 
   918 
   906 // -----------------------------------------------------------------------------
   919 // -----------------------------------------------------------------------------
   913     TRACE_PRN_FN_ENT;
   926     TRACE_PRN_FN_ENT;
   914 
   927 
   915     TInt status(TMS_RESULT_SUCCESS);
   928     TInt status(TMS_RESULT_SUCCESS);
   916     TInt len(0);
   929     TInt len(0);
   917     TMSStreamType strmtype;
   930     TMSStreamType strmtype;
   918 
       
   919     strmtype = (TMSStreamType) aMessage.Int0();
   931     strmtype = (TMSStreamType) aMessage.Int0();
   920     len = aMessage.GetDesLength(1);
   932     len = aMessage.GetDesLength(1);
   921     HBufC* tone(NULL);
       
   922     if (len > 0)
   933     if (len > 0)
   923         {
   934         {
   924         delete tone;
   935         HBufC* tone(NULL);
   925         tone = NULL;
   936         TRAP(status, tone = HBufC::NewL(len));
   926         TRAP(status,tone = HBufC::NewL(len));
       
   927         if (status == TMS_RESULT_SUCCESS)
   937         if (status == TMS_RESULT_SUCCESS)
   928             {
   938             {
   929             TPtr ptr = tone->Des();
   939             TPtr ptr = tone->Des();
   930             status = aMessage.Read(1, ptr);
   940             status = aMessage.Read(1, ptr);
   931             TRACE_PRN_N(ptr);
   941             TRACE_PRN_N(ptr);
   932 
   942             TmsMsgBufPckg dtmfpckg;
   933             TIpcArgs args;
   943             dtmfpckg().iRequest = ECmdDTMFTonePlayFinished;
   934             args.Set(0, strmtype);
   944 
   935             args.Set(1, &ptr);
   945             if (strmtype == TMS_STREAM_UPLINK)
   936             status = SendMessageToCallServ(TMS_DTMF_START, args);
   946                 {
   937             delete tone;
   947 //#ifdef __WINSCW__
   938             tone = NULL;
   948                 // Just to test playback in wins
   939             }
   949 //                iActiveCallType = TMS_CALL_IP;
   940         }
   950 //#else
       
   951                 FindActiveCallType();
       
   952 //#endif
       
   953                 if (iActiveCallType == TMS_CALL_IP && iDTMFUplinkPlayer)
       
   954                     {
       
   955                     iDTMFUplinkPlayer->PlayDtmfTone(ptr);
       
   956                     status = TMS_RESULT_SUCCESS;
       
   957                     dtmfpckg().iRequest = ECmdDTMFToneUplPlayStarted;
       
   958                     }
       
   959                 else if (iActiveCallType == TMS_CALL_CS &&
       
   960                         iDTMFUplinkPlayerEtel)
       
   961                     {
       
   962                     status = iDTMFUplinkPlayerEtel->SendDtmfToneString(ptr);
       
   963                     dtmfpckg().iRequest = ECmdDTMFToneUplPlayStarted;
       
   964                     }
       
   965                 else
       
   966                     {
       
   967                     status = TMS_RESULT_INVALID_STATE;
       
   968                     }
       
   969                 }
       
   970             else if (strmtype == TMS_STREAM_DOWNLINK)
       
   971                 {
       
   972                 //status = TMS_RESULT_UNINITIALIZED_OBJECT;
       
   973                 if (iDTMFDnlinkPlayer)
       
   974                     {
       
   975                     iDTMFDnlinkPlayer->PlayDtmfTone(ptr);
       
   976                     status = TMS_RESULT_SUCCESS;
       
   977                     dtmfpckg().iRequest = ECmdDTMFToneDnlPlayStarted;
       
   978                     }
       
   979                 }
       
   980             else
       
   981                 {
       
   982                 status = TMS_RESULT_STREAM_TYPE_NOT_SUPPORTED;
       
   983                 }
       
   984 
       
   985             if (iDTMFNotifier)
       
   986                 {
       
   987                 dtmfpckg().iStatus = TMSUtility::EtelToTMSResult(status);
       
   988                 iDTMFNotifier->SetDtmf(dtmfpckg);
       
   989                 }
       
   990             }
       
   991         delete tone;
       
   992         tone = NULL;
       
   993         }
       
   994 
   941     aMessage.Complete(status);
   995     aMessage.Complete(status);
   942 
       
   943     TRACE_PRN_FN_EXT;
   996     TRACE_PRN_FN_EXT;
   944     return status;
   997     return status;
   945     }
   998     }
   946 
   999 
   947 // -----------------------------------------------------------------------------
  1000 // -----------------------------------------------------------------------------
   951 //
  1004 //
   952 TInt TMSServer::StopDTMF(const RMessage2& aMessage)
  1005 TInt TMSServer::StopDTMF(const RMessage2& aMessage)
   953     {
  1006     {
   954     TRACE_PRN_FN_ENT;
  1007     TRACE_PRN_FN_ENT;
   955 
  1008 
   956     TInt status(TMS_RESULT_SUCCESS);
  1009     TInt status(TMS_RESULT_INVALID_STATE);
   957     TMSStreamType streamtype;
  1010     TMSStreamType streamtype;
   958     streamtype = (TMSStreamType) aMessage.Int0();
  1011     streamtype = (TMSStreamType) aMessage.Int0();
   959     status = SendMessageToCallServ(TMS_DTMF_STOP, streamtype);
  1012 
       
  1013     if (streamtype == TMS_STREAM_UPLINK)
       
  1014         {
       
  1015         if (iActiveCallType == TMS_CALL_IP && iDTMFUplinkPlayer)
       
  1016             {
       
  1017             iDTMFUplinkPlayer->Cancel();
       
  1018             status = TMS_RESULT_SUCCESS;
       
  1019             }
       
  1020         else if (iActiveCallType == TMS_CALL_CS &&
       
  1021                 iDTMFUplinkPlayerEtel)
       
  1022             {
       
  1023             status = iDTMFUplinkPlayerEtel->StopDtmfTone();
       
  1024             status = TMSUtility::EtelToTMSResult(status);
       
  1025             }
       
  1026         }
       
  1027     else if (streamtype == TMS_STREAM_DOWNLINK)
       
  1028         {
       
  1029         if (iDTMFDnlinkPlayer)
       
  1030             {
       
  1031             iDTMFDnlinkPlayer->Cancel();
       
  1032             status = TMS_RESULT_SUCCESS;
       
  1033             }
       
  1034         }
       
  1035     if (iDTMFNotifier)
       
  1036         {
       
  1037         TmsMsgBufPckg dtmfpckg;
       
  1038         dtmfpckg().iStatus = status;
       
  1039         dtmfpckg().iRequest = ECmdDTMFTonePlayFinished;
       
  1040         iDTMFNotifier->SetDtmf(dtmfpckg);
       
  1041         }
       
  1042 
   960     aMessage.Complete(status);
  1043     aMessage.Complete(status);
   961 
       
   962     TRACE_PRN_FN_EXT;
  1044     TRACE_PRN_FN_EXT;
   963     return status;
  1045     return status;
   964     }
  1046     }
   965 
  1047 
   966 // -----------------------------------------------------------------------------
  1048 // -----------------------------------------------------------------------------
   970 //
  1052 //
   971 TInt TMSServer::ContinueSendingDTMF(const RMessage2& aMessage)
  1053 TInt TMSServer::ContinueSendingDTMF(const RMessage2& aMessage)
   972     {
  1054     {
   973     TRACE_PRN_FN_ENT;
  1055     TRACE_PRN_FN_ENT;
   974 
  1056 
   975     TInt status(TMS_RESULT_SUCCESS);
  1057     TInt status(TMS_RESULT_INVALID_STATE);
   976     TBool continuesending;
  1058     TBool continuesnd;
   977     continuesending = (TBool) aMessage.Int0();
  1059     continuesnd = (TBool) aMessage.Int0();
   978     status = SendMessageToCallServ(TMS_DTMF_CONTINUE, continuesending);
  1060      if (iActiveCallType == TMS_CALL_CS && iDTMFUplinkPlayerEtel)
       
  1061         {
       
  1062         status = iDTMFUplinkPlayerEtel->ContinueDtmfStringSending(continuesnd);
       
  1063         status = TMSUtility::EtelToTMSResult(status);
       
  1064         }
       
  1065 
   979     aMessage.Complete(status);
  1066     aMessage.Complete(status);
   980 
       
   981     TRACE_PRN_FN_EXT;
  1067     TRACE_PRN_FN_EXT;
   982     return status;
  1068     return status;
   983     }
  1069     }
   984 
  1070 
   985 // -----------------------------------------------------------------------------
  1071 // -----------------------------------------------------------------------------
   988 // -----------------------------------------------------------------------------
  1074 // -----------------------------------------------------------------------------
   989 //
  1075 //
   990 TInt TMSServer::NotifyDtmfClients(TmsMsgBufPckg dtmfpckg)
  1076 TInt TMSServer::NotifyDtmfClients(TmsMsgBufPckg dtmfpckg)
   991     {
  1077     {
   992     TRACE_PRN_FN_ENT;
  1078     TRACE_PRN_FN_ENT;
   993 
       
   994     iSessionIter.SetToFirst();
  1079     iSessionIter.SetToFirst();
   995     TMSServerSession* serverSession =
  1080     TMSServerSession* ss = static_cast<TMSServerSession*> (iSessionIter++);
   996             static_cast<TMSServerSession*> (iSessionIter++);
  1081     while (ss != NULL)
   997 
  1082         {
   998     while (serverSession != NULL)
  1083         ss->NotifyClient(dtmfpckg().iRequest, dtmfpckg().iStatus);
   999         {
  1084         ss = static_cast<TMSServerSession*> (iSessionIter++);
  1000         serverSession->NotifyClient(dtmfpckg().iRequest, dtmfpckg().iStatus);
  1085         }
  1001         serverSession = static_cast<TMSServerSession*> (iSessionIter++);
       
  1002         }
       
  1003 
       
  1004     TRACE_PRN_FN_EXT;
  1086     TRACE_PRN_FN_EXT;
  1005     return TMS_RESULT_SUCCESS;
  1087     return TMS_RESULT_SUCCESS;
       
  1088     }
       
  1089 
       
  1090 //From DTMFTonePlayerObserver
       
  1091 // -----------------------------------------------------------------------------
       
  1092 // TMSServer::DTMFInitCompleted
       
  1093 //
       
  1094 // -----------------------------------------------------------------------------
       
  1095 //
       
  1096 void TMSServer::DTMFInitCompleted(gint /*status*/)
       
  1097     {
       
  1098     TRACE_PRN_FN_ENT;
       
  1099     // TODO: process error
       
  1100     TRACE_PRN_FN_EXT;
       
  1101     }
       
  1102 
       
  1103 // -----------------------------------------------------------------------------
       
  1104 // TMSServer::DTMFToneFinished
       
  1105 //
       
  1106 // -----------------------------------------------------------------------------
       
  1107 //
       
  1108 void TMSServer::DTMFToneFinished(gint status)
       
  1109     {
       
  1110     TRACE_PRN_FN_ENT;
       
  1111     TRACE_PRN_IF_ERR(status);
       
  1112     TmsMsgBufPckg dtmfpckg;
       
  1113 
       
  1114     // KErrUnderflow indicates end of DTMF playback.
       
  1115     if (status == KErrUnderflow /*|| status == KErrInUse*/)
       
  1116         {
       
  1117         status = TMS_RESULT_SUCCESS;
       
  1118         }
       
  1119     dtmfpckg().iStatus = TMSRESULT(status);
       
  1120     dtmfpckg().iRequest = ECmdDTMFTonePlayFinished;
       
  1121     if (iDTMFNotifier)
       
  1122         {
       
  1123         iDTMFNotifier->SetDtmf(dtmfpckg);
       
  1124         }
       
  1125     TRACE_PRN_FN_EXT;
       
  1126     }
       
  1127 
       
  1128 // -----------------------------------------------------------------------------
       
  1129 // TMSServer::FindActiveCallType
       
  1130 //
       
  1131 // -----------------------------------------------------------------------------
       
  1132 //
       
  1133 gint TMSServer::FindActiveCallType()
       
  1134     {
       
  1135     TInt status(TMS_RESULT_INVALID_STATE);
       
  1136     iActiveCallType = -1;
       
  1137     TInt i = 0;
       
  1138     while (i < iTMSCallServList.Count())
       
  1139         {
       
  1140         TMSStartAndMonitorTMSCallThread* callThread = iTMSCallServList[i];
       
  1141         if (callThread)
       
  1142             {
       
  1143             TmsCallMsgBufPckg pckg;
       
  1144             TIpcArgs args(&pckg);
       
  1145             status = callThread->iTMSCallProxyLocal.ReceiveFromCallServer(
       
  1146                     TMS_GET_ACTIVE_CALL_PARAMS, args);
       
  1147             if (pckg().iBool || status != TMS_RESULT_SUCCESS)
       
  1148                 {
       
  1149                 iActiveCallType = static_cast<TMSCallType> (pckg().iInt);
       
  1150                 break;
       
  1151                 }
       
  1152             }
       
  1153         i++;
       
  1154         }
       
  1155     return status;
       
  1156     }
       
  1157 
       
  1158 // -----------------------------------------------------------------------------
       
  1159 // TMSServer::HandleDTMFEvent
       
  1160 //
       
  1161 // -----------------------------------------------------------------------------
       
  1162 //
       
  1163 void TMSServer::HandleDTMFEvent(const TMSDTMFObserver::TCCPDtmfEvent event,
       
  1164         const gint status, const TChar /*tone*/)
       
  1165     {
       
  1166     TRACE_PRN_FN_ENT;
       
  1167     TRACE_PRN_IF_ERR(status);
       
  1168     TmsMsgBufPckg dtmfpckg;
       
  1169     dtmfpckg().iStatus = TMSUtility::EtelToTMSResult(status);
       
  1170 
       
  1171     switch (event)
       
  1172         {
       
  1173         case ECCPDtmfUnknown:               //Unknown
       
  1174             break;
       
  1175         case ECCPDtmfManualStart:           //DTMF sending started manually
       
  1176         case ECCPDtmfSequenceStart:         //Automatic DTMF sending initialized
       
  1177             dtmfpckg().iRequest = ECmdDTMFToneUplPlayStarted;
       
  1178             break;
       
  1179         case ECCPDtmfManualStop:            //DTMF sending stopped manually
       
  1180         case ECCPDtmfManualAbort:           //DTMF sending aborted manually
       
  1181         case ECCPDtmfSequenceStop:          //Automatic DTMF sending stopped
       
  1182         case ECCPDtmfSequenceAbort:         //Automatic DTMF sending aborted
       
  1183         case ECCPDtmfStopInDtmfString:      //There was stop mark in DTMF string
       
  1184         case ECCPDtmfStringSendingCompleted://DTMF sending success
       
  1185             dtmfpckg().iRequest = ECmdDTMFTonePlayFinished;
       
  1186             break;
       
  1187         default:
       
  1188             break;
       
  1189         }
       
  1190 
       
  1191     if (iDTMFNotifier)
       
  1192         {
       
  1193         iDTMFNotifier->SetDtmf(dtmfpckg);
       
  1194         }
       
  1195     TRACE_PRN_FN_EXT;
  1006     }
  1196     }
  1007 
  1197 
  1008 // -----------------------------------------------------------------------------
  1198 // -----------------------------------------------------------------------------
  1009 // TMSServer::InitRingTonePlayerL
  1199 // TMSServer::InitRingTonePlayerL
  1010 //
  1200 //
  1573         }
  1763         }
  1574     __UHEAP_MARKEND;
  1764     __UHEAP_MARKEND;
  1575     return r;
  1765     return r;
  1576     }
  1766     }
  1577 
  1767 
  1578 // End of file