mmserv/tms/tmscallserver/src/tmscallcsadpt.cpp
changeset 33 5e8b14bae8c3
parent 21 2ed61feeead6
child 36 73253677b50a
equal deleted inserted replaced
28:ebf79c79991a 33:5e8b14bae8c3
    24 #include "tmscallcsadpt.h"
    24 #include "tmscallcsadpt.h"
    25 #include "tmsutility.h"
    25 #include "tmsutility.h"
    26 #include "tmsshared.h"
    26 #include "tmsshared.h"
    27 #include "tmsclientserver.h"
    27 #include "tmsclientserver.h"
    28 #include "tmstarsettings.h"
    28 #include "tmstarsettings.h"
    29 #include "tmsdtmftoneplayer.h"
       
    30 #include "tmsdtmfprovider.h"
       
    31 #include "tmsdtmfnotifier.h"
       
    32 
    29 
    33 using namespace TMS;
    30 using namespace TMS;
    34 
    31 
    35 // -----------------------------------------------------------------------------
    32 // -----------------------------------------------------------------------------
    36 // TMSCallCSAdpt::NewL
    33 // TMSCallCSAdpt::NewL
    56     TRACE_PRN_FN_ENT;
    53     TRACE_PRN_FN_ENT;
    57     iCSDownlink = NULL;
    54     iCSDownlink = NULL;
    58     iCSUplink = NULL;
    55     iCSUplink = NULL;
    59     iRouting = NULL;
    56     iRouting = NULL;
    60     iTarSettings = NULL;
    57     iTarSettings = NULL;
    61     iDTMFDnlinkPlayer = NULL;
       
    62     iDTMFUplinkPlayer = NULL;
       
    63     iDTMFNotifier = NULL;
       
    64     TRACE_PRN_FN_EXT;
    58     TRACE_PRN_FN_EXT;
    65     }
    59     }
    66 
    60 
    67 // -----------------------------------------------------------------------------
    61 // -----------------------------------------------------------------------------
    68 // TMSCallCSAdpt::TMSCallCSAdpt
    62 // TMSCallCSAdpt::TMSCallCSAdpt
    82     {
    76     {
    83     TRACE_PRN_FN_ENT;
    77     TRACE_PRN_FN_ENT;
    84 
    78 
    85     delete iRouting;
    79     delete iRouting;
    86     delete iTarSettings;
    80     delete iTarSettings;
    87     delete iDTMFUplinkPlayer;
       
    88     delete iDTMFDnlinkPlayer;
       
    89     delete iDTMFNotifier;
       
    90     delete iCSUplink;
    81     delete iCSUplink;
    91     delete iCSDownlink;
    82     delete iCSDownlink;
    92 
    83 
    93     if (iMsgQueueUp.Handle() > 0)
    84     if (iMsgQueueUp.Handle() > 0)
    94         {
    85         {
   110 gint TMSCallCSAdpt::PostConstruct()
   101 gint TMSCallCSAdpt::PostConstruct()
   111     {
   102     {
   112     TRACE_PRN_FN_ENT;
   103     TRACE_PRN_FN_ENT;
   113     gint status(TMS_RESULT_SUCCESS);
   104     gint status(TMS_RESULT_SUCCESS);
   114     iNextStreamId = 1;
   105     iNextStreamId = 1;
   115     iUplinkInitialized = FALSE;
   106     iUplState = EIdle;
   116     iDnlinkInitialized = FALSE;
   107     iDnlState = EIdle;
   117     TRACE_PRN_FN_EXT;
   108     TRACE_PRN_FN_EXT;
   118     return status;
   109     return status;
   119     }
   110     }
   120 
   111 
   121 // -----------------------------------------------------------------------------
   112 // -----------------------------------------------------------------------------
   131     switch (strmType)
   122     switch (strmType)
   132         {
   123         {
   133         case TMS_STREAM_UPLINK:
   124         case TMS_STREAM_UPLINK:
   134             {
   125             {
   135             status = TMS_RESULT_ALREADY_EXIST;
   126             status = TMS_RESULT_ALREADY_EXIST;
   136             if (!iUplinkInitialized)
   127             if (iUplState == EIdle)
   137                 {
   128                 {
   138                 iUplinkStreamId = iNextStreamId;
   129                 iUplinkStreamId = iNextStreamId;
   139                 outStrmId = iUplinkStreamId;
   130                 outStrmId = iUplinkStreamId;
   140                 iNextStreamId++;
   131                 iNextStreamId++;
   141                 //iUplinkInitialized = TRUE; //not initialized yet!
       
   142                 status = TMS_RESULT_SUCCESS;
   132                 status = TMS_RESULT_SUCCESS;
   143                 }
   133                 }
   144             break;
   134             break;
   145             }
   135             }
   146         case TMS_STREAM_DOWNLINK:
   136         case TMS_STREAM_DOWNLINK:
   147             {
   137             {
   148             status = TMS_RESULT_ALREADY_EXIST;
   138             status = TMS_RESULT_ALREADY_EXIST;
   149             if (!iDnlinkInitialized)
   139             if (iDnlState == EIdle)
   150                 {
   140                 {
   151                 iDnlinkStreamId = iNextStreamId;
   141                 iDnlinkStreamId = iNextStreamId;
   152                 outStrmId = iDnlinkStreamId;
   142                 outStrmId = iDnlinkStreamId;
   153                 iNextStreamId++;
   143                 iNextStreamId++;
   154                 //iDnlinkInitialized = TRUE; //not initialized yet!
       
   155                 status = TMS_RESULT_SUCCESS;
   144                 status = TMS_RESULT_SUCCESS;
   156                 }
   145                 }
   157             break;
   146             break;
   158             }
   147             }
   159         default:
   148         default:
   240 
   229 
   241     if (!iCSUplink)
   230     if (!iCSUplink)
   242         {
   231         {
   243         TRAP(status, iCSUplink = TMSCSUplink::NewL(*this, retrytime));
   232         TRAP(status, iCSUplink = TMSCSUplink::NewL(*this, retrytime));
   244         }
   233         }
   245     if (!iDTMFUplinkPlayer && status == TMS_RESULT_SUCCESS)
       
   246         {
       
   247         TRAP(status, iDTMFUplinkPlayer = TMSDTMFProvider::NewL());
       
   248         iDTMFUplinkPlayer->AddObserver(*this);
       
   249         }
       
   250     if (!iDTMFNotifier && status == TMS_RESULT_SUCCESS)
       
   251         {
       
   252         TRAP(status, iDTMFNotifier = TMSDtmfNotifier::NewL());
       
   253         }
       
   254     return status;
   234     return status;
   255     }
   235     }
   256 
   236 
   257 // -----------------------------------------------------------------------------
   237 // -----------------------------------------------------------------------------
   258 // TMSCallCSAdpt::InitDownlink
   238 // TMSCallCSAdpt::InitDownlink
   272         TRAP(status, iRouting = CTelephonyAudioRouting::NewL(*this));
   252         TRAP(status, iRouting = CTelephonyAudioRouting::NewL(*this));
   273         }
   253         }
   274     if (!iTarSettings && status == TMS_RESULT_SUCCESS)
   254     if (!iTarSettings && status == TMS_RESULT_SUCCESS)
   275         {
   255         {
   276         TRAP(status, iTarSettings = TMSTarSettings::NewL());
   256         TRAP(status, iTarSettings = TMSTarSettings::NewL());
   277         }
       
   278     if (!iDTMFDnlinkPlayer && status == TMS_RESULT_SUCCESS)
       
   279         {
       
   280         TRAP(status, iDTMFDnlinkPlayer = TMSAudioDtmfTonePlayer::NewL(*this,
       
   281                 KAudioDTMFString, KAudioPriorityDTMFString));
       
   282         }
       
   283     if (!iDTMFNotifier && status == TMS_RESULT_SUCCESS)
       
   284         {
       
   285         TRAP(status, iDTMFNotifier = TMSDtmfNotifier::NewL());
       
   286         }
   257         }
   287     return status;
   258     return status;
   288     }
   259     }
   289 
   260 
   290 // -----------------------------------------------------------------------------
   261 // -----------------------------------------------------------------------------
   299     gint status(TMS_RESULT_INVALID_STATE);
   270     gint status(TMS_RESULT_INVALID_STATE);
   300     switch (strmType)
   271     switch (strmType)
   301         {
   272         {
   302         case TMS_STREAM_UPLINK:
   273         case TMS_STREAM_UPLINK:
   303             {
   274             {
   304             if (iCSUplink && strmId == iUplinkStreamId)
   275             if (iCSUplink && strmId == iUplinkStreamId &&
       
   276                     iUplState == EInitialized)
   305                 {
   277                 {
   306                 iCSUplink->Activate(retrytime);
   278                 iCSUplink->Activate(retrytime);
   307                 status = TMS_RESULT_SUCCESS;
   279                 status = TMS_RESULT_SUCCESS;
   308                 }
   280                 }
   309             break;
   281             break;
   310             }
   282             }
   311         case TMS_STREAM_DOWNLINK:
   283         case TMS_STREAM_DOWNLINK:
   312             {
   284             {
   313             if (iCSDownlink && strmId == iDnlinkStreamId)
   285             if (iCSDownlink && strmId == iDnlinkStreamId &&
       
   286                     iDnlState == EInitialized)
   314                 {
   287                 {
   315                 iCSDownlink->Activate(retrytime);
   288                 iCSDownlink->Activate(retrytime);
   316                 status = TMS_RESULT_SUCCESS;
   289                 status = TMS_RESULT_SUCCESS;
   317                 }
   290                 }
   318             break;
   291             break;
   354 
   327 
   355     switch (strmType)
   328     switch (strmType)
   356         {
   329         {
   357         case TMS_STREAM_UPLINK:
   330         case TMS_STREAM_UPLINK:
   358             {
   331             {
   359             if (iCSUplink && strmId == iUplinkStreamId)
   332             if (iCSUplink && strmId == iUplinkStreamId &&
       
   333                     iUplState == EActivated)
   360                 {
   334                 {
   361                 iCSUplink->Deactivate();
   335                 iCSUplink->Deactivate();
       
   336                 iUplState = EInitialized;
   362                 status = TMS_RESULT_SUCCESS;
   337                 status = TMS_RESULT_SUCCESS;
   363                 NotifyClient(iUplinkStreamId, ECmdUplinkInitComplete, status);
   338                 NotifyClient(iUplinkStreamId, ECmdUplinkInitComplete, status);
   364                 }
   339                 }
   365             break;
   340             break;
   366             }
   341             }
   367         case TMS_STREAM_DOWNLINK:
   342         case TMS_STREAM_DOWNLINK:
   368             {
   343             {
   369             if (iCSDownlink && strmId == iDnlinkStreamId)
   344             if (iCSDownlink && strmId == iDnlinkStreamId &&
       
   345                     iDnlState == EActivated)
   370                 {
   346                 {
   371                 iCSDownlink->Deactivate();
   347                 iCSDownlink->Deactivate();
       
   348                 iDnlState = EInitialized;
   372                 status = TMS_RESULT_SUCCESS;
   349                 status = TMS_RESULT_SUCCESS;
   373                 NotifyClient(iDnlinkStreamId, ECmdDownlinkInitComplete, status);
   350                 NotifyClient(iDnlinkStreamId, ECmdDownlinkInitComplete, status);
   374                 }
   351                 }
   375             break;
   352             break;
   376             }
   353             }
   397 
   374 
   398     switch (strmType)
   375     switch (strmType)
   399         {
   376         {
   400         case TMS_STREAM_UPLINK:
   377         case TMS_STREAM_UPLINK:
   401             {
   378             {
   402             if (iCSUplink && strmId == iUplinkStreamId)
   379             if (iCSUplink && strmId == iUplinkStreamId && iUplState != EIdle)
   403                 {
   380                 {
   404                 iCSUplink->Deactivate();
   381                 iCSUplink->Deactivate();
   405                 iUplinkInitialized = FALSE;
   382                 iUplState = EIdle;
   406                 status = TMS_RESULT_SUCCESS;
   383                 status = TMS_RESULT_SUCCESS;
   407                 NotifyClient(iUplinkStreamId, ECmdUplinkDeInitComplete, status);
   384                 NotifyClient(iUplinkStreamId, ECmdUplinkDeInitComplete, status);
   408                 }
   385                 }
   409             break;
   386             break;
       
   387             }
   410         case TMS_STREAM_DOWNLINK:
   388         case TMS_STREAM_DOWNLINK:
   411             if (iCSDownlink && strmId == iDnlinkStreamId)
   389             {
       
   390             if (iCSDownlink && strmId == iDnlinkStreamId && iDnlState != EIdle)
   412                 {
   391                 {
   413                 iCSDownlink->Deactivate();
   392                 iCSDownlink->Deactivate();
   414                 iDnlinkInitialized = FALSE;
   393                 iDnlState = EIdle;
   415                 status = TMS_RESULT_SUCCESS;
   394                 status = TMS_RESULT_SUCCESS;
   416                 NotifyClient(iDnlinkStreamId, ECmdDownlinkDeInitComplete,
   395                 NotifyClient(iDnlinkStreamId, ECmdDownlinkDeInitComplete,
   417                         status);
   396                         status);
   418                 }
   397                 }
   419             break;
   398             break;
   443         case TMS_STREAM_UPLINK:
   422         case TMS_STREAM_UPLINK:
   444             {
   423             {
   445             if (strmId == iUplinkStreamId)
   424             if (strmId == iUplinkStreamId)
   446                 {
   425                 {
   447                 iUplinkStreamId = -1;
   426                 iUplinkStreamId = -1;
   448                 iUplinkInitialized = FALSE;
   427                 iUplState = EIdle;
   449                 }
   428                 }
   450             break;
   429             break;
   451             }
   430             }
   452         case TMS_STREAM_DOWNLINK:
   431         case TMS_STREAM_DOWNLINK:
   453             {
   432             {
   454             if (strmId == iDnlinkStreamId)
   433             if (strmId == iDnlinkStreamId)
   455                 {
   434                 {
   456                 iDnlinkStreamId = -1;
   435                 iDnlinkStreamId = -1;
   457                 iDnlinkInitialized = FALSE;
   436                 iDnlState = EIdle;
   458                 }
   437                 }
   459             break;
   438             break;
   460             }
   439             }
   461         default:
   440         default:
   462             {
   441             {
   519 //
   498 //
   520 gint TMSCallCSAdpt::GetMaxVolume(guint& volume)
   499 gint TMSCallCSAdpt::GetMaxVolume(guint& volume)
   521     {
   500     {
   522     TRACE_PRN_FN_ENT;
   501     TRACE_PRN_FN_ENT;
   523     gint status(TMS_RESULT_INVALID_STATE);
   502     gint status(TMS_RESULT_INVALID_STATE);
   524     if (iCSDownlink && iDnlinkInitialized)
   503     if (iCSDownlink && iDnlState != EIdle)
   525         {
   504         {
   526         volume = iCSDownlink->MaxVolume();
   505         volume = iCSDownlink->MaxVolume();
   527         status = TMS_RESULT_SUCCESS;
   506         status = TMS_RESULT_SUCCESS;
   528         TRACE_PRN_N1(_L("TMS->TMSCallCSAdpt: GetMaxVolume [%d]"), volume);
   507         TRACE_PRN_N1(_L("TMS->TMSCallCSAdpt: GetMaxVolume [%d]"), volume);
   529         }
   508         }
   538 //
   517 //
   539 gint TMSCallCSAdpt::SetVolume(const guint volume)
   518 gint TMSCallCSAdpt::SetVolume(const guint volume)
   540     {
   519     {
   541     TRACE_PRN_FN_ENT;
   520     TRACE_PRN_FN_ENT;
   542     gint status(TMS_RESULT_INVALID_STATE);
   521     gint status(TMS_RESULT_INVALID_STATE);
   543     if (iCSDownlink && iDnlinkInitialized)
   522     if (iCSDownlink && iDnlState != EIdle)
   544         {
   523         {
   545         iCSDownlink->SetVolume(volume);
   524         iCSDownlink->SetVolume(volume);
   546         status = TMS_RESULT_SUCCESS;
   525         status = TMS_RESULT_SUCCESS;
   547         NotifyClient(iDnlinkStreamId, ECmdSetVolume, status);
   526         NotifyClient(iDnlinkStreamId, ECmdSetVolume, status);
   548         }
   527         }
   557 //
   536 //
   558 gint TMSCallCSAdpt::GetVolume(guint& volume)
   537 gint TMSCallCSAdpt::GetVolume(guint& volume)
   559     {
   538     {
   560     TRACE_PRN_FN_ENT;
   539     TRACE_PRN_FN_ENT;
   561     gint status(TMS_RESULT_INVALID_STATE);
   540     gint status(TMS_RESULT_INVALID_STATE);
   562     if (iCSDownlink && iDnlinkInitialized)
   541     if (iCSDownlink && iDnlState != EIdle)
   563         {
   542         {
   564         volume = iCSDownlink->Volume();
   543         volume = iCSDownlink->Volume();
   565         status = TMS_RESULT_SUCCESS;
   544         status = TMS_RESULT_SUCCESS;
   566         }
   545         }
   567     TRACE_PRN_FN_EXT;
   546     TRACE_PRN_FN_EXT;
   575 //
   554 //
   576 gint TMSCallCSAdpt::GetMaxGain(guint& gain)
   555 gint TMSCallCSAdpt::GetMaxGain(guint& gain)
   577     {
   556     {
   578     TRACE_PRN_FN_ENT;
   557     TRACE_PRN_FN_ENT;
   579     gint status(TMS_RESULT_INVALID_STATE);
   558     gint status(TMS_RESULT_INVALID_STATE);
   580     if (iCSUplink && iUplinkInitialized)
   559     if (iCSUplink && iUplState != EIdle)
   581         {
   560         {
   582         gain = iCSUplink->MaxGain();
   561         gain = iCSUplink->MaxGain();
   583         status = TMS_RESULT_SUCCESS;
   562         status = TMS_RESULT_SUCCESS;
   584         TRACE_PRN_N1(_L("TMS->TMSCallCSAdpt::GetMaxGain [%d]"), gain);
   563         TRACE_PRN_N1(_L("TMS->TMSCallCSAdpt::GetMaxGain [%d]"), gain);
   585         }
   564         }
   594 //
   573 //
   595 gint TMSCallCSAdpt::SetGain(const guint gain)
   574 gint TMSCallCSAdpt::SetGain(const guint gain)
   596     {
   575     {
   597     TRACE_PRN_FN_ENT;
   576     TRACE_PRN_FN_ENT;
   598     gint status(TMS_RESULT_INVALID_STATE);
   577     gint status(TMS_RESULT_INVALID_STATE);
   599     if (iCSUplink && iUplinkInitialized)
   578     if (iCSUplink && iUplState != EIdle)
   600         {
   579         {
   601         iCSUplink->SetGain(gain);
   580         iCSUplink->SetGain(gain);
   602         status = TMS_RESULT_SUCCESS;
   581         status = TMS_RESULT_SUCCESS;
   603         NotifyClient(iUplinkStreamId, ECmdSetGain, status);
   582         NotifyClient(iUplinkStreamId, ECmdSetGain, status);
   604         }
   583         }
   613 //
   592 //
   614 gint TMSCallCSAdpt::GetGain(guint& gain)
   593 gint TMSCallCSAdpt::GetGain(guint& gain)
   615     {
   594     {
   616     TRACE_PRN_FN_ENT;
   595     TRACE_PRN_FN_ENT;
   617     gint status(TMS_RESULT_INVALID_STATE);
   596     gint status(TMS_RESULT_INVALID_STATE);
   618     if (iCSUplink && iUplinkInitialized)
   597     if (iCSUplink && iUplState != EIdle)
   619         {
   598         {
   620         gain = iCSUplink->Gain();
   599         gain = iCSUplink->Gain();
   621         status = TMS_RESULT_SUCCESS;
   600         status = TMS_RESULT_SUCCESS;
   622         }
   601         }
   623     TRACE_PRN_FN_EXT;
   602     TRACE_PRN_FN_EXT;
   631 //
   610 //
   632 gint TMSCallCSAdpt::GetGlobalMaxVolume(guint& volume)
   611 gint TMSCallCSAdpt::GetGlobalMaxVolume(guint& volume)
   633     {
   612     {
   634     TRACE_PRN_FN_ENT;
   613     TRACE_PRN_FN_ENT;
   635     gint status(TMS_RESULT_INVALID_STATE);
   614     gint status(TMS_RESULT_INVALID_STATE);
   636     if (iCSDownlink && iDnlinkInitialized)
   615     if (iCSDownlink && iDnlState != EIdle)
   637         {
   616         {
   638         volume = iCSDownlink->MaxVolume();
   617         volume = iCSDownlink->MaxVolume();
   639         status = TMS_RESULT_SUCCESS;
   618         status = TMS_RESULT_SUCCESS;
   640         TRACE_PRN_N1(_L("TMS->TMSCallCSAdpt::GetGlobalMaxVolume [%d]"), volume);
   619         TRACE_PRN_N1(_L("TMS->TMSCallCSAdpt::GetGlobalMaxVolume [%d]"), volume);
   641         }
   620         }
   651 gint TMSCallCSAdpt::SetGlobalVolume(const guint volume)
   630 gint TMSCallCSAdpt::SetGlobalVolume(const guint volume)
   652     {
   631     {
   653     TRACE_PRN_FN_ENT;
   632     TRACE_PRN_FN_ENT;
   654     gint status(TMS_RESULT_INVALID_STATE);
   633     gint status(TMS_RESULT_INVALID_STATE);
   655     iGlobalVol = volume;
   634     iGlobalVol = volume;
   656     if (iCSDownlink && iDnlinkInitialized)
   635     if (iCSDownlink && iDnlState != EIdle)
   657         {
   636         {
   658         iCSDownlink->SetVolume(volume);
   637         iCSDownlink->SetVolume(volume);
   659         status = TMS_RESULT_SUCCESS;
   638         status = TMS_RESULT_SUCCESS;
   660         }
   639         }
   661     TRACE_PRN_FN_EXT;
   640     TRACE_PRN_FN_EXT;
   669 //
   648 //
   670 gint TMSCallCSAdpt::GetGlobalVolume(guint& volume)
   649 gint TMSCallCSAdpt::GetGlobalVolume(guint& volume)
   671     {
   650     {
   672     TRACE_PRN_FN_ENT;
   651     TRACE_PRN_FN_ENT;
   673     gint status(TMS_RESULT_INVALID_STATE);
   652     gint status(TMS_RESULT_INVALID_STATE);
   674     if (iCSDownlink && iDnlinkInitialized)
   653     if (iCSDownlink && iDnlState != EIdle)
   675         {
   654         {
   676         volume = iCSDownlink->Volume();
   655         volume = iCSDownlink->Volume();
   677         status = TMS_RESULT_SUCCESS;
   656         status = TMS_RESULT_SUCCESS;
   678         }
   657         }
   679     TRACE_PRN_FN_EXT;
   658     TRACE_PRN_FN_EXT;
   687 //
   666 //
   688 gint TMSCallCSAdpt::GetGlobalMaxGain(guint& gain)
   667 gint TMSCallCSAdpt::GetGlobalMaxGain(guint& gain)
   689     {
   668     {
   690     TRACE_PRN_FN_ENT;
   669     TRACE_PRN_FN_ENT;
   691     gint status(TMS_RESULT_INVALID_STATE);
   670     gint status(TMS_RESULT_INVALID_STATE);
   692     if (iCSUplink && iUplinkInitialized)
   671     if (iCSUplink && iUplState != EIdle)
   693         {
   672         {
   694         gain = iCSUplink->MaxGain();
   673         gain = iCSUplink->MaxGain();
   695         status = TMS_RESULT_SUCCESS;
   674         status = TMS_RESULT_SUCCESS;
   696         TRACE_PRN_N1(_L("TMS->TMSCallCSAdpt::GetGlobalMaxGain [%d]"), gain);
   675         TRACE_PRN_N1(_L("TMS->TMSCallCSAdpt::GetGlobalMaxGain [%d]"), gain);
   697         }
   676         }
   707 gint TMSCallCSAdpt::SetGlobalGain(const guint gain)
   686 gint TMSCallCSAdpt::SetGlobalGain(const guint gain)
   708     {
   687     {
   709     TRACE_PRN_FN_ENT;
   688     TRACE_PRN_FN_ENT;
   710     gint status(TMS_RESULT_INVALID_STATE);
   689     gint status(TMS_RESULT_INVALID_STATE);
   711     iGlobalGain = gain;
   690     iGlobalGain = gain;
   712     if (iCSUplink && iUplinkInitialized)
   691     if (iCSUplink && iUplState != EIdle)
   713         {
   692         {
   714         iCSUplink->SetGain(gain);
   693         iCSUplink->SetGain(gain);
   715         status = TMS_RESULT_SUCCESS;
   694         status = TMS_RESULT_SUCCESS;
   716         }
   695         }
   717     TRACE_PRN_FN_EXT;
   696     TRACE_PRN_FN_EXT;
   725 //
   704 //
   726 gint TMSCallCSAdpt::GetGlobalGain(guint& gain)
   705 gint TMSCallCSAdpt::GetGlobalGain(guint& gain)
   727     {
   706     {
   728     TRACE_PRN_FN_ENT;
   707     TRACE_PRN_FN_ENT;
   729     gint status(TMS_RESULT_INVALID_STATE);
   708     gint status(TMS_RESULT_INVALID_STATE);
   730     if (iCSUplink && iUplinkInitialized)
   709     if (iCSUplink && iUplState != EIdle)
   731         {
   710         {
   732         gain = iCSUplink->Gain();
   711         gain = iCSUplink->Gain();
   733         status = TMS_RESULT_SUCCESS;
   712         status = TMS_RESULT_SUCCESS;
   734         }
   713         }
   735     TRACE_PRN_FN_EXT;
   714     TRACE_PRN_FN_EXT;
   940         CTelephonyAudioRouting::TAudioOutput taroutput;
   919         CTelephonyAudioRouting::TAudioOutput taroutput;
   941         taroutput = iRouting->Output();
   920         taroutput = iRouting->Output();
   942         status = TMS_RESULT_SUCCESS;
   921         status = TMS_RESULT_SUCCESS;
   943         output = TOTMSOUTPUT(taroutput);
   922         output = TOTMSOUTPUT(taroutput);
   944         }
   923         }
   945 
       
   946     TRACE_PRN_FN_EXT;
   924     TRACE_PRN_FN_EXT;
   947     return status;
   925     return status;
   948     }
   926     }
   949 
   927 
   950 // -----------------------------------------------------------------------------
   928 // -----------------------------------------------------------------------------
   982     if (iRouting)
   960     if (iRouting)
   983         {
   961         {
   984         RBufWriteStream stream;
   962         RBufWriteStream stream;
   985         stream.Open(*outputsbuf);
   963         stream.Open(*outputsbuf);
   986         CleanupClosePushL(stream);
   964         CleanupClosePushL(stream);
   987 
       
   988         TArray<CTelephonyAudioRouting::TAudioOutput>
   965         TArray<CTelephonyAudioRouting::TAudioOutput>
   989                 availableOutputs = iRouting->AvailableOutputs();
   966                 availableOutputs = iRouting->AvailableOutputs();
   990 
       
   991         guint numOfItems = availableOutputs.Count();
   967         guint numOfItems = availableOutputs.Count();
   992         count = numOfItems;
   968         count = numOfItems;
   993         for (guint i = 0; i < numOfItems; i++)
   969         for (guint i = 0; i < numOfItems; i++)
   994             {
   970             {
   995             tmsoutput = TOTMSOUTPUT(availableOutputs[i]);
   971             tmsoutput = TOTMSOUTPUT(availableOutputs[i]);
   996             stream.WriteUint32L(tmsoutput);
   972             stream.WriteUint32L(tmsoutput);
   997             }
   973             }
   998 
       
   999         CleanupStack::PopAndDestroy(&stream);
   974         CleanupStack::PopAndDestroy(&stream);
  1000         status = TMS_RESULT_SUCCESS;
   975         status = TMS_RESULT_SUCCESS;
  1001         }
   976         }
  1002 
   977 
  1003     TRACE_PRN_FN_EXT;
   978     TRACE_PRN_FN_EXT;
  1004     return status;
   979     return status;
  1005     }
       
  1006 
       
  1007 // -----------------------------------------------------------------------------
       
  1008 // TMSCallCSAdpt::StartDTMF
       
  1009 //
       
  1010 // -----------------------------------------------------------------------------
       
  1011 //
       
  1012 gint TMSCallCSAdpt::StartDTMF(const TMSStreamType strmtype, TDes& dtmfstring)
       
  1013     {
       
  1014     TRACE_PRN_FN_ENT;
       
  1015     gint status(TMS_RESULT_STREAM_TYPE_NOT_SUPPORTED);
       
  1016     TmsMsgBufPckg dtmfpckg;
       
  1017     dtmfpckg().iStatus = status;
       
  1018     dtmfpckg().iRequest = ECmdDTMFTonePlayFinished;
       
  1019 
       
  1020     if (strmtype == TMS_STREAM_DOWNLINK && iDnlinkInitialized)
       
  1021         {
       
  1022         if (iDTMFDnlinkPlayer)
       
  1023             {
       
  1024             iDTMFDnlinkPlayer->PlayDtmfTone(dtmfstring);
       
  1025             status = TMS_RESULT_SUCCESS;
       
  1026             }
       
  1027         dtmfpckg().iStatus = TMS_RESULT_SUCCESS;
       
  1028         dtmfpckg().iRequest = ECmdDTMFToneDnlPlayStarted;
       
  1029         }
       
  1030     else if (strmtype == TMS_STREAM_UPLINK && iUplinkInitialized)
       
  1031         {
       
  1032         //use etel for uplink
       
  1033         if (iDTMFUplinkPlayer)
       
  1034             {
       
  1035             status = iDTMFUplinkPlayer->SendDtmfToneString(dtmfstring);
       
  1036             status = TMS_RESULT_SUCCESS;
       
  1037             }
       
  1038         dtmfpckg().iStatus = TMSUtility::EtelToTMSResult(status);
       
  1039         dtmfpckg().iRequest = ECmdDTMFToneUplPlayStarted;
       
  1040         }
       
  1041 
       
  1042     if (iDTMFNotifier)
       
  1043         {
       
  1044         iDTMFNotifier->SetDtmf(dtmfpckg);
       
  1045         }
       
  1046 
       
  1047     TRACE_PRN_IF_ERR(status);
       
  1048     TRACE_PRN_FN_EXT;
       
  1049     return status;
       
  1050     }
       
  1051 
       
  1052 // -----------------------------------------------------------------------------
       
  1053 // TMSCallCSAdpt::StopDTMF
       
  1054 //
       
  1055 // -----------------------------------------------------------------------------
       
  1056 //
       
  1057 gint TMSCallCSAdpt::StopDTMF(const TMSStreamType streamtype)
       
  1058     {
       
  1059     TRACE_PRN_FN_ENT;
       
  1060     gint status(TMS_RESULT_SUCCESS);
       
  1061 
       
  1062     if (streamtype == TMS_STREAM_DOWNLINK && iDTMFDnlinkPlayer)
       
  1063         {
       
  1064         iDTMFDnlinkPlayer->Cancel();
       
  1065         }
       
  1066     else if (streamtype == TMS_STREAM_UPLINK && iDTMFUplinkPlayer)
       
  1067         {
       
  1068         status = iDTMFUplinkPlayer->StopDtmfTone();
       
  1069         status = TMSUtility::EtelToTMSResult(status);
       
  1070         }
       
  1071 
       
  1072     TRACE_PRN_FN_EXT;
       
  1073     return status;
       
  1074     }
       
  1075 
       
  1076 // -----------------------------------------------------------------------------
       
  1077 // TMSCallCSAdpt::ContinueDTMF
       
  1078 //
       
  1079 // -----------------------------------------------------------------------------
       
  1080 //
       
  1081 gint TMSCallCSAdpt::ContinueDTMF(const gboolean sending)
       
  1082     {
       
  1083     TRACE_PRN_FN_ENT;
       
  1084     gint status(TMS_RESULT_UNINITIALIZED_OBJECT);
       
  1085 
       
  1086     if (iDTMFUplinkPlayer)
       
  1087         {
       
  1088         status = iDTMFUplinkPlayer->ContinueDtmfStringSending(sending);
       
  1089         status = TMSUtility::EtelToTMSResult(status);
       
  1090         }
       
  1091 
       
  1092     TRACE_PRN_FN_EXT;
       
  1093     return status;
       
  1094     }
       
  1095 
       
  1096 //From TMSDTMFTonePlayerObserver
       
  1097 // -----------------------------------------------------------------------------
       
  1098 // TMSCallCSAdpt::DTMFInitCompleted
       
  1099 //
       
  1100 // -----------------------------------------------------------------------------
       
  1101 //
       
  1102 void TMSCallCSAdpt::DTMFInitCompleted(gint /*status*/)
       
  1103     {
       
  1104     TRACE_PRN_FN_ENT;
       
  1105     // TODO: process error
       
  1106     TRACE_PRN_FN_EXT;
       
  1107     }
       
  1108 
       
  1109 // -----------------------------------------------------------------------------
       
  1110 // TMSCallCSAdpt::DTMFToneFinished
       
  1111 //
       
  1112 // -----------------------------------------------------------------------------
       
  1113 //
       
  1114 void TMSCallCSAdpt::DTMFToneFinished(gint status)
       
  1115     {
       
  1116     TRACE_PRN_FN_ENT;
       
  1117     TRACE_PRN_IF_ERR(status);
       
  1118     TmsMsgBufPckg dtmfpckg;
       
  1119 
       
  1120     // KErrUnderflow indicates end of DTMF playback.
       
  1121     if (status == KErrUnderflow || status == KErrInUse)
       
  1122         {
       
  1123         status = TMS_RESULT_SUCCESS;
       
  1124         }
       
  1125     dtmfpckg().iStatus = TMSUtility::TMSResult(status);
       
  1126     dtmfpckg().iRequest = ECmdDTMFTonePlayFinished;
       
  1127     if (iDTMFNotifier)
       
  1128         {
       
  1129         iDTMFNotifier->SetDtmf(dtmfpckg);
       
  1130         }
       
  1131     TRACE_PRN_FN_EXT;
       
  1132     }
       
  1133 
       
  1134 // -----------------------------------------------------------------------------
       
  1135 // TMSCallCSAdpt::HandleDTMFEvent
       
  1136 //
       
  1137 // -----------------------------------------------------------------------------
       
  1138 //
       
  1139 void TMSCallCSAdpt::HandleDTMFEvent(
       
  1140         const TMSDTMFObserver::TCCPDtmfEvent event, const gint status,
       
  1141         const TChar /*tone*/)
       
  1142     {
       
  1143     TRACE_PRN_FN_ENT;
       
  1144     TmsMsgBufPckg dtmfpckg;
       
  1145 
       
  1146     TRACE_PRN_N1(_L("**TMS TMSCallCSAdpt::HandleDTMFEvent error:%d"), status);
       
  1147 
       
  1148     dtmfpckg().iStatus = TMSUtility::EtelToTMSResult(status);
       
  1149 
       
  1150     switch (event)
       
  1151         {
       
  1152         case ECCPDtmfUnknown:               //Unknown
       
  1153             break;
       
  1154         case ECCPDtmfManualStart:           //DTMF sending started manually
       
  1155         case ECCPDtmfSequenceStart:         //Automatic DTMF sending initialized
       
  1156             dtmfpckg().iRequest = ECmdDTMFToneUplPlayStarted;
       
  1157             break;
       
  1158         case ECCPDtmfManualStop:            //DTMF sending stopped manually
       
  1159         case ECCPDtmfManualAbort:           //DTMF sending aborted manually
       
  1160         case ECCPDtmfSequenceStop:          //Automatic DTMF sending stopped
       
  1161         case ECCPDtmfSequenceAbort:         //Automatic DTMF sending aborted
       
  1162         case ECCPDtmfStopInDtmfString:      //There was stop mark in DTMF string
       
  1163         case ECCPDtmfStringSendingCompleted: //DTMF sending success
       
  1164             dtmfpckg().iRequest = ECmdDTMFTonePlayFinished;
       
  1165             break;
       
  1166         default:
       
  1167             break;
       
  1168         }
       
  1169 
       
  1170     if (iDTMFNotifier)
       
  1171         {
       
  1172         iDTMFNotifier->SetDtmf(dtmfpckg, TRUE);
       
  1173         }
       
  1174     TRACE_PRN_FN_EXT;
       
  1175     }
   980     }
  1176 
   981 
  1177 // -----------------------------------------------------------------------------
   982 // -----------------------------------------------------------------------------
  1178 // TMSCallCSAdpt::DownlinkInitCompleted
   983 // TMSCallCSAdpt::DownlinkInitCompleted
  1179 // From TMSCSDevSoundObserver
   984 // From TMSCSDevSoundObserver
  1182 void TMSCallCSAdpt::DownlinkInitCompleted(gint status)
   987 void TMSCallCSAdpt::DownlinkInitCompleted(gint status)
  1183     {
   988     {
  1184     TRACE_PRN_FN_ENT;
   989     TRACE_PRN_FN_ENT;
  1185     if (status == TMS_RESULT_SUCCESS)
   990     if (status == TMS_RESULT_SUCCESS)
  1186         {
   991         {
  1187         iDnlinkInitialized = TRUE;
   992         iDnlState = EInitialized;
  1188         }
   993         }
  1189     NotifyClient(iDnlinkStreamId, ECmdDownlinkInitComplete, status);
   994     NotifyClient(iDnlinkStreamId, ECmdDownlinkInitComplete, status);
  1190     TRACE_PRN_FN_EXT;
   995     TRACE_PRN_FN_EXT;
  1191     }
   996     }
  1192 
   997 
  1198 void TMSCallCSAdpt::UplinkInitCompleted(gint status)
  1003 void TMSCallCSAdpt::UplinkInitCompleted(gint status)
  1199     {
  1004     {
  1200     TRACE_PRN_FN_ENT;
  1005     TRACE_PRN_FN_ENT;
  1201     if (status == TMS_RESULT_SUCCESS)
  1006     if (status == TMS_RESULT_SUCCESS)
  1202         {
  1007         {
  1203         iUplinkInitialized = TRUE;
  1008         iUplState = EInitialized;
  1204         }
  1009         }
  1205     NotifyClient(iUplinkStreamId, ECmdUplinkInitComplete, status);
  1010     NotifyClient(iUplinkStreamId, ECmdUplinkInitComplete, status);
  1206     TRACE_PRN_FN_EXT;
  1011     TRACE_PRN_FN_EXT;
  1207     }
  1012     }
  1208 
  1013 
  1212 // -----------------------------------------------------------------------------
  1017 // -----------------------------------------------------------------------------
  1213 //
  1018 //
  1214 void TMSCallCSAdpt::UplinkActivationCompleted(gint status)
  1019 void TMSCallCSAdpt::UplinkActivationCompleted(gint status)
  1215     {
  1020     {
  1216     TRACE_PRN_FN_ENT;
  1021     TRACE_PRN_FN_ENT;
       
  1022     if (status == TMS_RESULT_SUCCESS)
       
  1023         {
       
  1024         iUplState = EActivated;
       
  1025         }
  1217     NotifyClient(iUplinkStreamId, ECmdUplinkStarted, status);
  1026     NotifyClient(iUplinkStreamId, ECmdUplinkStarted, status);
  1218     TRACE_PRN_FN_EXT;
  1027     TRACE_PRN_FN_EXT;
  1219     }
  1028     }
  1220 
  1029 
  1221 // -----------------------------------------------------------------------------
  1030 // -----------------------------------------------------------------------------
  1224 // -----------------------------------------------------------------------------
  1033 // -----------------------------------------------------------------------------
  1225 //
  1034 //
  1226 void TMSCallCSAdpt::DownlinkActivationCompleted(gint status)
  1035 void TMSCallCSAdpt::DownlinkActivationCompleted(gint status)
  1227     {
  1036     {
  1228     TRACE_PRN_FN_ENT;
  1037     TRACE_PRN_FN_ENT;
       
  1038     if (status == TMS_RESULT_SUCCESS)
       
  1039         {
       
  1040         iDnlState = EActivated;
       
  1041         }
  1229     NotifyClient(iDnlinkStreamId, ECmdDownlinkStarted, status);
  1042     NotifyClient(iDnlinkStreamId, ECmdDownlinkStarted, status);
  1230     TRACE_PRN_FN_EXT;
  1043     TRACE_PRN_FN_EXT;
  1231     }
  1044     }
  1232 
  1045 
  1233 // -----------------------------------------------------------------------------
  1046 // -----------------------------------------------------------------------------