mmserv/tms/tmsproxy/src/tmsproxy.cpp
changeset 12 5a06f39ad45b
parent 0 71ca22bcf22a
child 14 80975da52420
equal deleted inserted replaced
0:71ca22bcf22a 12:5a06f39ad45b
    14  * Description: Telephony Multimedia Service
    14  * Description: Telephony Multimedia Service
    15  *
    15  *
    16  */
    16  */
    17 
    17 
    18 #include <s32mem.h>
    18 #include <s32mem.h>
       
    19 #include <gstring.h>
    19 #include <AudioPreference.h>
    20 #include <AudioPreference.h>
    20 #include <tmseffectobsrvr.h>
    21 #include <tmseffectobsrvr.h>
    21 #include <tmsglobalroutingobsrvr.h>
    22 #include <tmsglobalroutingobsrvr.h>
       
    23 #include <tmsringtoneobsrvr.h>
       
    24 #include <tmsdtmfobsrvr.h>
       
    25 #include <tmsinbandtoneobsrvr.h>
    22 #include "tmsutility.h"
    26 #include "tmsutility.h"
    23 #include "tmsclientserver.h"
    27 #include "tmsclientserver.h"
    24 #include "tmsproxy.h"
    28 #include "tmsproxy.h"
    25 
    29 
    26 using namespace TMS;
    30 using namespace TMS;
    27 
    31 
    28 // CONSTANTS
    32 // CONSTANTS
    29 const TUint KServerConnectRetries = 2;
    33 const TUint KTMSServerConnectRetries = 2;
    30 const TUint KSessionMessageSlots = 10;
    34 const TUint KSessionMessageSlots = 10;
       
    35 const TUint KUTF8Multiply = 2;
    31 
    36 
    32 // -----------------------------------------------------------------------------
    37 // -----------------------------------------------------------------------------
    33 // StartServer
    38 // StartServer
    34 // Static function to start the server process thread.
    39 // Static function to start the server process thread.
    35 // Start the server process/thread which lives in an EPOCEXE object.
    40 // Start the server process/thread which lives in an EPOCEXE object.
    74 // TMSProxy::TMSProxy
    79 // TMSProxy::TMSProxy
    75 // -----------------------------------------------------------------------------
    80 // -----------------------------------------------------------------------------
    76 //
    81 //
    77 EXPORT_C TMSProxy::TMSProxy()
    82 EXPORT_C TMSProxy::TMSProxy()
    78     {
    83     {
    79     iEffectsObsrvrList.Reset();
    84     ResetObjectLists();
    80     iEffectsParentList.Reset();
       
    81     iRoutingObsrvrList.Reset();
       
    82     iRoutingParentList.Reset();
       
    83     iMsgQHandler = NULL;
    85     iMsgQHandler = NULL;
    84     }
    86     }
    85 
    87 
    86 // -----------------------------------------------------------------------------
    88 // -----------------------------------------------------------------------------
    87 // TMSProxy::~TMSProxy
    89 // TMSProxy::~TMSProxy
    88 // -----------------------------------------------------------------------------
    90 // -----------------------------------------------------------------------------
    89 //
    91 //
    90 EXPORT_C TMSProxy::~TMSProxy()
    92 EXPORT_C TMSProxy::~TMSProxy()
    91     {
    93     {
    92     iEffectsObsrvrList.Reset();
    94     ResetObjectLists();
    93     iEffectsParentList.Reset();
       
    94     iRoutingObsrvrList.Reset();
       
    95     iRoutingParentList.Reset();
       
    96 
    95 
    97     if (iMsgQHandler)
    96     if (iMsgQHandler)
    98         {
    97         {
    99         iMsgQHandler->Cancel();
    98         iMsgQHandler->Cancel();
   100         }
    99         }
   116 //
   115 //
   117 EXPORT_C gint TMSProxy::Connect()
   116 EXPORT_C gint TMSProxy::Connect()
   118     {
   117     {
   119     TRACE_PRN_FN_ENT;
   118     TRACE_PRN_FN_ENT;
   120 
   119 
   121     gint retry = KServerConnectRetries;
   120     gint retry = KTMSServerConnectRetries;
   122     gint err(TMS_RESULT_GENERAL_ERROR);
   121     gint err(TMS_RESULT_GENERAL_ERROR);
   123     gint numMessageSlots = KSessionMessageSlots;
   122     gint numMessageSlots = KSessionMessageSlots;
   124 
   123 
   125     for (;;)
   124     for (;;)
   126         {
   125         {
   163 // TMSProxy::Version
   162 // TMSProxy::Version
   164 // -----------------------------------------------------------------------------
   163 // -----------------------------------------------------------------------------
   165 //
   164 //
   166 EXPORT_C TVersion TMSProxy::Version() const
   165 EXPORT_C TVersion TMSProxy::Version() const
   167     {
   166     {
   168     return (TVersion(KTMSServMajorVersionNumber,
   167     return (TVersion(KTMSServMajorVersionNumber, KTMSServMinorVersionNumber,
   169             KTMSServMinorVersionNumber, KTMSServBuildVersionNumber));
   168             KTMSServBuildVersionNumber));
   170     }
   169     }
   171 
   170 
   172 // -----------------------------------------------------------------------------
   171 // -----------------------------------------------------------------------------
   173 // TMSProxy::Close
   172 // TMSProxy::Close
   174 // -----------------------------------------------------------------------------
   173 // -----------------------------------------------------------------------------
   399             TIpcArgs(level));
   398             TIpcArgs(level));
   400     TRACE_PRN_FN_EXT;
   399     TRACE_PRN_FN_EXT;
   401     return TMSRESULT(status);
   400     return TMSRESULT(status);
   402     }
   401     }
   403 
   402 
       
   403 EXPORT_C gint TMSProxy::InitRT(const TMSRingToneType type, GString* str,
       
   404         GString* tts)
       
   405     {
       
   406     TRACE_PRN_FN_ENT;
       
   407     gint status(TMS_RESULT_INVALID_ARGUMENT);
       
   408     TIpcArgs args;
       
   409     HBufC* ttsBuf(NULL);
       
   410 
       
   411     if (tts)
       
   412         {
       
   413         // Convert buffer from UTF-8 to unicode (16-bit)
       
   414         // Note: UTF-8 strings can take up to 4 bytes per character
       
   415         gint unilen = tts->len / KUTF8Multiply;
       
   416         TRAP(status, ttsBuf = HBufC::NewL(unilen));
       
   417         if (status == KErrNone)
       
   418             {
       
   419             TPtr p = ttsBuf->Des();
       
   420             p.Copy((TUint16*) tts->str, unilen);
       
   421             args.Set(1, &p);
       
   422             }
       
   423         }
       
   424 
       
   425     switch (type)
       
   426         {
       
   427         case TMS_RINGTONE_DEFAULT:
       
   428             {
       
   429             status = RSessionBase::SendReceive(ETMSRingToneInitDefault, args);
       
   430             break;
       
   431             }
       
   432         case TMS_RINGTONE_FILE:
       
   433             {
       
   434             if (str)
       
   435                 {
       
   436                 HBufC* buf(NULL);
       
   437                 // Convert buffer from UTF-8 to unicode (16-bit)
       
   438                 // Note: UTF-8 strings can take up to 4 bytes per character
       
   439                 gint unilen = str->len / KUTF8Multiply;
       
   440 
       
   441                 TRAP(status, buf = HBufC::NewL(unilen));
       
   442                 if (status == KErrNone)
       
   443                     {
       
   444                     TPtr p = buf->Des();
       
   445                     p.Copy((TUint16*) str->str, unilen);
       
   446                     TIpcArgs args;
       
   447                     args.Set(0, &p);
       
   448                     status = RSessionBase::SendReceive(ETMSRingToneInitFile,
       
   449                             args);
       
   450                     }
       
   451                 delete buf;
       
   452                 buf = NULL;
       
   453                 }
       
   454             break;
       
   455             }
       
   456         case TMS_RINGTONE_BEEP_ONCE:
       
   457             {
       
   458             status = RSessionBase::SendReceive(ETMSRingToneInitBeepOnce);
       
   459             break;
       
   460             }
       
   461         case TMS_RINGTONE_SILENT:
       
   462             {
       
   463             status = RSessionBase::SendReceive(ETMSRingToneInitSilent);
       
   464             break;
       
   465             }
       
   466         case TMS_RINGTONE_UNSECURE_VOIP:
       
   467             {
       
   468             status = RSessionBase::SendReceive(ETMSRingToneInitUnsecureVoIP);
       
   469             break;
       
   470             }
       
   471         case TMS_RINGTONE_SEQUENCE:
       
   472             {
       
   473             if (str)
       
   474                 {
       
   475                 HBufC8* buf(NULL);
       
   476                 gint len = str->len;
       
   477                 TRAP(status, buf = HBufC8::NewL(len));
       
   478                 if (status == KErrNone)
       
   479                     {
       
   480                     TPtr8 p = buf->Des();
       
   481                     p.Copy((TUint8*) str->str, len);
       
   482                     TIpcArgs args;
       
   483                     args.Set(0, &p);
       
   484                     status = RSessionBase::SendReceive(
       
   485                             ETMSRingToneInitSequence, args);
       
   486                     }
       
   487                 delete buf;
       
   488                 buf = NULL;
       
   489                 }
       
   490             break;
       
   491             }
       
   492         default:
       
   493             break;
       
   494         }
       
   495 
       
   496     delete ttsBuf;
       
   497     ttsBuf = NULL;
       
   498 
       
   499     TRACE_PRN_FN_EXT;
       
   500     return TMSRESULT(status);
       
   501     }
       
   502 
       
   503 EXPORT_C gint TMSProxy::DeinitRT()
       
   504     {
       
   505     gint status(TMS_RESULT_SUCCESS);
       
   506     status = RSessionBase::SendReceive(ETMSRingToneDeinit);
       
   507     return TMSRESULT(status);
       
   508     }
       
   509 
       
   510 EXPORT_C gint TMSProxy::PlayRT()
       
   511     {
       
   512     gint status(TMS_RESULT_SUCCESS);
       
   513     status = RSessionBase::SendReceive(ETMSRingTonePlay);
       
   514     return TMSRESULT(status);
       
   515     }
       
   516 
       
   517 EXPORT_C gint TMSProxy::StopRT()
       
   518     {
       
   519     gint status(TMS_RESULT_SUCCESS);
       
   520     status = RSessionBase::SendReceive(ETMSRingToneStop);
       
   521     return TMSRESULT(status);
       
   522     }
       
   523 
       
   524 EXPORT_C gint TMSProxy::PauseRT()
       
   525     {
       
   526     gint status(TMS_RESULT_SUCCESS);
       
   527     status = RSessionBase::SendReceive(ETMSRingTonePause);
       
   528     return TMSRESULT(status);
       
   529     }
       
   530 
       
   531 EXPORT_C gint TMSProxy::MuteRT()
       
   532     {
       
   533     gint status(TMS_RESULT_SUCCESS);
       
   534     status = RSessionBase::SendReceive(ETMSRingToneMute);
       
   535     return TMSRESULT(status);
       
   536     }
       
   537 
       
   538 EXPORT_C gint TMSProxy::StartDTMF(TMSStreamType streamtype, GString* tone)
       
   539     {
       
   540     TRACE_PRN_FN_ENT;
       
   541     gint status(TMS_RESULT_SUCCESS);
       
   542 
       
   543     HBufC* buf(NULL);
       
   544     TRAP(status, buf = HBufC::NewL(tone->len));
       
   545     if (status == KErrNone)
       
   546         {
       
   547         TPtr p1 = buf->Des();
       
   548         TPtr8 p2((TUint8*) tone->str, tone->len, tone->len);
       
   549         p1.Copy(p2);
       
   550 
       
   551         TRACE_PRN_N(p1);
       
   552 
       
   553         TIpcArgs args;
       
   554         args.Set(0, streamtype);
       
   555         args.Set(1, &p1);
       
   556         status = RSessionBase::SendReceive(ETMSStartDTMF, args);
       
   557         }
       
   558 
       
   559     delete buf;
       
   560     buf = NULL;
       
   561 
       
   562     TRACE_PRN_FN_EXT;
       
   563     return TMSRESULT(status);
       
   564     }
       
   565 
       
   566 EXPORT_C gint TMSProxy::StopDTMF(TMSStreamType streamtype)
       
   567     {
       
   568     TRACE_PRN_FN_ENT;
       
   569     gint status(TMS_RESULT_SUCCESS);
       
   570     status = RSessionBase::SendReceive(ETMSStopDTMF, TIpcArgs(streamtype));
       
   571     TRACE_PRN_FN_EXT;
       
   572     return TMSRESULT(status);
       
   573     }
       
   574 
       
   575 EXPORT_C gint TMSProxy::ContinueDTMFStringSending(gboolean continuesending)
       
   576     {
       
   577     TRACE_PRN_FN_ENT;
       
   578     gint status(TMS_RESULT_SUCCESS);
       
   579     status = RSessionBase::SendReceive(ETMSContinueDTMF,
       
   580             TIpcArgs(continuesending));
       
   581     TRACE_PRN_FN_EXT;
       
   582     return TMSRESULT(status);
       
   583     }
       
   584 
       
   585 EXPORT_C gint TMSProxy::StartInbandTone(TMSInbandToneType inbandtonetype)
       
   586     {
       
   587     TRACE_PRN_FN_ENT;
       
   588     gint status(TMS_RESULT_SUCCESS);
       
   589     status = RSessionBase::SendReceive(ETMSStartInbandTone,
       
   590             TIpcArgs(inbandtonetype));
       
   591     TRACE_PRN_FN_EXT;
       
   592     return TMSRESULT(status);
       
   593     }
       
   594 
       
   595 EXPORT_C gint TMSProxy::StopInbandTone()
       
   596     {
       
   597     TRACE_PRN_FN_ENT;
       
   598     gint status(TMS_RESULT_SUCCESS);
       
   599     status = RSessionBase::SendReceive(ETMSStopInbandTone);
       
   600     TRACE_PRN_FN_EXT;
       
   601     return TMSRESULT(status);
       
   602     }
       
   603 
       
   604 EXPORT_C gint TMSProxy::StartDTMFNotifier()
       
   605     {
       
   606     gint status(TMS_RESULT_SUCCESS);
       
   607     status = RSessionBase::SendReceive(ETMSStartDTMFNotifier); //DTMFHandler
       
   608     return TMSRESULT(status);
       
   609     }
       
   610 
       
   611 EXPORT_C gint TMSProxy::CancelDTMFNotifier()
       
   612     {
       
   613     gint status(TMS_RESULT_SUCCESS);
       
   614     status = RSessionBase::SendReceive(ETMSCancelDTMFNotifier); //DTMFHandler
       
   615     return TMSRESULT(status);
       
   616     }
       
   617 
   404 EXPORT_C gint TMSProxy::StartGlobalEffectNotifier()
   618 EXPORT_C gint TMSProxy::StartGlobalEffectNotifier()
   405     {
   619     {
   406     gint status(TMS_RESULT_SUCCESS);
   620     gint status(TMS_RESULT_SUCCESS);
   407     RSessionBase::SendReceive(ETMSStartGlobalEffectNotifier); //CenRepHandler
   621     RSessionBase::SendReceive(ETMSStartGlobalEffectNotifier); //CenRepHandler
   408     return TMSRESULT(status);
   622     return TMSRESULT(status);
   440     switch (type)
   654     switch (type)
   441         {
   655         {
   442         case EMsgQueueGlobalVolumeType:
   656         case EMsgQueueGlobalVolumeType:
   443         case EMsgQueueGlobalGainType:
   657         case EMsgQueueGlobalGainType:
   444             status = AddGlobalEffectObserver((*(TMSEffectObserver*) obsrv),
   658             status = AddGlobalEffectObserver((*(TMSEffectObserver*) obsrv),
   445                     (*(TMSEffect*)parent), clientid);
   659                     (*(TMSEffect*) parent), clientid);
   446             break;
   660             break;
   447         case EMsgQueueGlobalRoutingType:
   661         case EMsgQueueGlobalRoutingType:
   448             status = AddRoutingObserver((*(TMSGlobalRoutingObserver*) obsrv),
   662             status = AddRoutingObserver((*(TMSGlobalRoutingObserver*) obsrv),
   449                     (*(TMSGlobalRouting*)parent), clientid);
   663                     (*(TMSGlobalRouting*) parent), clientid);
       
   664             break;
       
   665         case EMsgQueueRingtoneType:
       
   666             status = AddRingToneObserver((*(TMSRingToneObserver*) obsrv),
       
   667                     (*(TMSRingTone*) parent), clientid);
       
   668             break;
       
   669         case EMsgQueueDTMFType:
       
   670             status = AddDTMFObserver((*(TMSDTMFObserver*) obsrv),
       
   671                     (*(TMSDTMF*) parent), clientid);
       
   672             break;
       
   673         case EMsgQueueInbandToneType:
       
   674             status = AddInbandToneObserver((*(TMSInbandToneObserver*) obsrv),
       
   675                     (*(TMSInbandTone*) parent), clientid);
   450             break;
   676             break;
   451         default:
   677         default:
   452             status = TMS_RESULT_INVALID_ARGUMENT;
   678             status = TMS_RESULT_INVALID_ARGUMENT;
   453             break;
   679             break;
   454         }
   680         }
   469         case EMsgQueueGlobalVolumeType:
   695         case EMsgQueueGlobalVolumeType:
   470         case EMsgQueueGlobalGainType:
   696         case EMsgQueueGlobalGainType:
   471             status = RemoveGlobalEffectObserver((*(TMSEffectObserver*) obsrv));
   697             status = RemoveGlobalEffectObserver((*(TMSEffectObserver*) obsrv));
   472             break;
   698             break;
   473         case EMsgQueueGlobalRoutingType:
   699         case EMsgQueueGlobalRoutingType:
   474             status = RemoveRoutingObserver((*(TMSGlobalRoutingObserver*) obsrv));
   700             status = RemoveRoutingObserver((*(TMSGlobalRoutingObserver*)
       
   701                     obsrv));
       
   702             break;
       
   703         case EMsgQueueRingtoneType:
       
   704             status = RemoveRingToneObserver((*(TMSRingToneObserver*) obsrv));
       
   705             break;
       
   706         case EMsgQueueDTMFType:
       
   707             status = RemoveDTMFObserver((*(TMSDTMFObserver*) obsrv));
       
   708             break;
       
   709         case EMsgQueueInbandToneType:
       
   710             status = RemoveInbandToneObserver((*(TMSInbandToneObserver*)
       
   711                     obsrv));
   475             break;
   712             break;
   476         default:
   713         default:
   477             status = TMS_RESULT_INVALID_ARGUMENT;
   714             status = TMS_RESULT_INVALID_ARGUMENT;
   478             break;
   715             break;
   479         }
   716         }
   510     gint status = iEffectsObsrvrList.Find(&obsrv);
   747     gint status = iEffectsObsrvrList.Find(&obsrv);
   511     if (status == KErrNotFound)
   748     if (status == KErrNotFound)
   512         {
   749         {
   513         status = iEffectsObsrvrList.Append(&obsrv);
   750         status = iEffectsObsrvrList.Append(&obsrv);
   514         status = iEffectsParentList.Append(&parent);
   751         status = iEffectsParentList.Append(&parent);
   515         //status = iClientList.Append(clientid);
       
   516         }
   752         }
   517     else
   753     else
   518         {
   754         {
   519         status = TMS_RESULT_ALREADY_EXIST;
   755         status = TMS_RESULT_ALREADY_EXIST;
   520         }
   756         }
   527     gint index = iEffectsObsrvrList.Find(&obsrv);
   763     gint index = iEffectsObsrvrList.Find(&obsrv);
   528     if (index >= 0)
   764     if (index >= 0)
   529         {
   765         {
   530         iEffectsObsrvrList.Remove(index);
   766         iEffectsObsrvrList.Remove(index);
   531         iEffectsParentList.Remove(index);
   767         iEffectsParentList.Remove(index);
   532         //iClientList.Remove(index);
       
   533         }
   768         }
   534     else
   769     else
   535         {
   770         {
   536         status = TMS_RESULT_DOES_NOT_EXIST;
   771         status = TMS_RESULT_DOES_NOT_EXIST;
   537         }
   772         }
   544     gint status = iRoutingObsrvrList.Find(&obsrv);
   779     gint status = iRoutingObsrvrList.Find(&obsrv);
   545     if (status == KErrNotFound)
   780     if (status == KErrNotFound)
   546         {
   781         {
   547         status = iRoutingObsrvrList.Append(&obsrv);
   782         status = iRoutingObsrvrList.Append(&obsrv);
   548         status = iRoutingParentList.Append(&parent);
   783         status = iRoutingParentList.Append(&parent);
   549         //status = iClientList.Append(clientid);
       
   550         }
   784         }
   551     else
   785     else
   552         {
   786         {
   553         status = TMS_RESULT_ALREADY_EXIST;
   787         status = TMS_RESULT_ALREADY_EXIST;
   554         }
   788         }
   561     gint index = iRoutingObsrvrList.Find(&obsrv);
   795     gint index = iRoutingObsrvrList.Find(&obsrv);
   562     if (index >= 0)
   796     if (index >= 0)
   563         {
   797         {
   564         iRoutingObsrvrList.Remove(index);
   798         iRoutingObsrvrList.Remove(index);
   565         iRoutingParentList.Remove(index);
   799         iRoutingParentList.Remove(index);
   566         //iClientList.Remove(index);
   800         }
       
   801     else
       
   802         {
       
   803         status = TMS_RESULT_DOES_NOT_EXIST;
       
   804         }
       
   805     return TMSRESULT(status);
       
   806     }
       
   807 
       
   808 gint TMSProxy::AddRingToneObserver(TMSRingToneObserver& obsrv,
       
   809         TMSRingTone& parent, gint /*clientid*/)
       
   810     {
       
   811     gint status = iRingToneObsrvrList.Find(&obsrv);
       
   812     if (status == KErrNotFound)
       
   813         {
       
   814         status = iRingToneObsrvrList.Append(&obsrv);
       
   815         status = iRingToneParentList.Append(&parent);
       
   816         }
       
   817     else
       
   818         {
       
   819         status = TMS_RESULT_ALREADY_EXIST;
       
   820         }
       
   821     return TMSRESULT(status);
       
   822     }
       
   823 
       
   824 gint TMSProxy::RemoveRingToneObserver(TMSRingToneObserver& obsrv)
       
   825     {
       
   826     gint status(TMS_RESULT_SUCCESS);
       
   827     gint index = iRingToneObsrvrList.Find(&obsrv);
       
   828     if (index >= 0)
       
   829         {
       
   830         iRingToneObsrvrList.Remove(index);
       
   831         iRingToneParentList.Remove(index);
       
   832         }
       
   833     else
       
   834         {
       
   835         status = TMS_RESULT_DOES_NOT_EXIST;
       
   836         }
       
   837     return TMSRESULT(status);
       
   838     }
       
   839 
       
   840 gint TMSProxy::AddDTMFObserver(TMSDTMFObserver& obsrv, TMSDTMF& parent,
       
   841         gint /*clientid*/)
       
   842     {
       
   843     // Add to list if observer is not already added
       
   844     gint status = iDTMFObsrvrList.Find(&obsrv);
       
   845     if (status == KErrNotFound)
       
   846         {
       
   847         status = iDTMFObsrvrList.Append(&obsrv);
       
   848         status = iDTMFParentList.Append(&parent);
       
   849         }
       
   850     else
       
   851         {
       
   852         status = TMS_RESULT_ALREADY_EXIST;
       
   853         }
       
   854     return TMSRESULT(status);
       
   855     }
       
   856 
       
   857 gint TMSProxy::RemoveDTMFObserver(TMSDTMFObserver& obsrv)
       
   858     {
       
   859     gint status(TMS_RESULT_SUCCESS);
       
   860     gint index = iDTMFObsrvrList.Find(&obsrv);
       
   861     if (index >= 0)
       
   862         {
       
   863         iDTMFObsrvrList.Remove(index);
       
   864         iDTMFParentList.Remove(index);
       
   865         }
       
   866     else
       
   867         {
       
   868         status = TMS_RESULT_DOES_NOT_EXIST;
       
   869         }
       
   870     return TMSRESULT(status);
       
   871     }
       
   872 
       
   873 gint TMSProxy::AddInbandToneObserver(TMSInbandToneObserver& obsrv,
       
   874         TMSInbandTone& parent, gint /*clientid*/)
       
   875     {
       
   876     // Add to list if observer is not already added
       
   877     gint status = iInbandToneObsrvrList.Find(&obsrv);
       
   878     if (status == KErrNotFound)
       
   879         {
       
   880         status = iInbandToneObsrvrList.Append(&obsrv);
       
   881         status = iInbandToneParentList.Append(&parent);
       
   882         }
       
   883     else
       
   884         {
       
   885         status = TMS_RESULT_ALREADY_EXIST;
       
   886         }
       
   887     return TMSRESULT(status);
       
   888     }
       
   889 
       
   890 gint TMSProxy::RemoveInbandToneObserver(TMSInbandToneObserver& obsrv)
       
   891     {
       
   892     gint status(TMS_RESULT_SUCCESS);
       
   893     gint index = iInbandToneObsrvrList.Find(&obsrv);
       
   894     if (index >= 0)
       
   895         {
       
   896         iInbandToneObsrvrList.Remove(index);
       
   897         iInbandToneParentList.Remove(index);
   567         }
   898         }
   568     else
   899     else
   569         {
   900         {
   570         status = TMS_RESULT_DOES_NOT_EXIST;
   901         status = TMS_RESULT_DOES_NOT_EXIST;
   571         }
   902         }
   610         {
   941         {
   611         iMsgQHandler->Cancel();
   942         iMsgQHandler->Cancel();
   612         }
   943         }
   613     else
   944     else
   614         {
   945         {
   615         iMsgQHandler = CQueueHandler::NewL(&iMsgQueue, NULL);
   946         iMsgQHandler = TMSQueueHandler::NewL(&iMsgQueue, NULL);
   616         iMsgQHandler->AddObserver(*this, -1);
   947         iMsgQHandler->AddObserver(*this, -1);
   617         }
   948         }
   618     iMsgQHandler->Start();
   949     iMsgQHandler->Start();
   619     }
   950     }
   620 
   951 
   651                 {
   982                 {
   652                 output = *((guint*) user_data);
   983                 output = *((guint*) user_data);
   653                 }
   984                 }
   654             for (gint i = 0; i < iRoutingObsrvrList.Count(); i++)
   985             for (gint i = 0; i < iRoutingObsrvrList.Count(); i++)
   655                 {
   986                 {
   656                 iRoutingObsrvrList[i]->GlobalRoutingEvent(iRoutingParentList[i],
   987                 iRoutingObsrvrList[i]->GlobalRoutingEvent(
   657                         event, output);
   988                         iRoutingParentList[i], event, output);
   658                 }
   989                 }
   659             break;
   990             break;
   660             }
   991             }
       
   992         case TMS_EVENT_RINGTONE_OPEN_COMPLETE:
       
   993         case TMS_EVENT_RINGTONE_PLAY_COMPLETE:
       
   994         case TMS_EVENT_RINGTONE_DEINIT_COMPLETE:
       
   995             {
       
   996             for (gint i = 0; i < iRingToneObsrvrList.Count(); i++)
       
   997                 {
       
   998                 iRingToneObsrvrList[i]->RingtoneEvent(iRingToneParentList[i],
       
   999                         event);
       
  1000                 }
       
  1001             break;
       
  1002             }
       
  1003         case TMS_EVENT_DTMF_TONE_STARTED:
       
  1004         case TMS_EVENT_DTMF_TONE_STOPPED:
       
  1005             {
       
  1006             for (gint i = 0; i < iDTMFObsrvrList.Count(); i++)
       
  1007                 {
       
  1008                 iDTMFObsrvrList[i]->DTMFEvent(iDTMFParentList[i], event);
       
  1009                 }
       
  1010             break;
       
  1011             }
       
  1012         case TMS_EVENT_INBAND_TONE_STARTED:
       
  1013         case TMS_EVENT_INBAND_TONE_STOPPED:
       
  1014             {
       
  1015             for (gint i = 0; i < iInbandToneObsrvrList.Count(); i++)
       
  1016                 {
       
  1017                 iInbandToneObsrvrList[i]->InbandToneEvent(
       
  1018                         iInbandToneParentList[i], event);
       
  1019                 }
       
  1020             break;
       
  1021             }
   661         default:
  1022         default:
   662             break;
  1023             break;
   663         }
  1024         }
   664     }
  1025     }
   665 
  1026 
       
  1027 // ---------------------------------------------------------------------------
       
  1028 // TMSProxy::ResetObjectLists
       
  1029 // ---------------------------------------------------------------------------
       
  1030 //
       
  1031 void TMSProxy::ResetObjectLists()
       
  1032     {
       
  1033     iEffectsObsrvrList.Reset();
       
  1034     iRoutingObsrvrList.Reset();
       
  1035     iRingToneObsrvrList.Reset();
       
  1036     iDTMFObsrvrList.Reset();
       
  1037     iInbandToneObsrvrList.Reset();
       
  1038 
       
  1039     iEffectsParentList.Reset();
       
  1040     iRoutingParentList.Reset();
       
  1041     iRingToneParentList.Reset();
       
  1042     iDTMFParentList.Reset();
       
  1043     iInbandToneParentList.Reset();
       
  1044     }
       
  1045 
   666 // End of file
  1046 // End of file