mmserv/tms/tmscallserver/src/tmscallcsadpt.cpp
changeset 42 1fa3fb47b1e3
parent 31 8dfd592727cb
child 55 e267340986c9
equal deleted inserted replaced
32:94fc26b6e006 42:1fa3fb47b1e3
    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"
    29 #include "tmssyncvol.h"
    30 #include "tmsdtmfprovider.h"
       
    31 #include "tmsdtmfnotifier.h"
       
    32 
    30 
    33 using namespace TMS;
    31 using namespace TMS;
    34 
    32 
    35 // -----------------------------------------------------------------------------
    33 // -----------------------------------------------------------------------------
    36 // TMSCallCSAdpt::NewL
    34 // TMSCallCSAdpt::NewL
    56     TRACE_PRN_FN_ENT;
    54     TRACE_PRN_FN_ENT;
    57     iCSDownlink = NULL;
    55     iCSDownlink = NULL;
    58     iCSUplink = NULL;
    56     iCSUplink = NULL;
    59     iRouting = NULL;
    57     iRouting = NULL;
    60     iTarSettings = NULL;
    58     iTarSettings = NULL;
    61     iDTMFDnlinkPlayer = NULL;
    59     iResetVolNotifier = NULL;
    62     iDTMFUplinkPlayer = NULL;
       
    63     iDTMFNotifier = NULL;
       
    64     TRACE_PRN_FN_EXT;
    60     TRACE_PRN_FN_EXT;
    65     }
    61     }
    66 
    62 
    67 // -----------------------------------------------------------------------------
    63 // -----------------------------------------------------------------------------
    68 // TMSCallCSAdpt::TMSCallCSAdpt
    64 // TMSCallCSAdpt::TMSCallCSAdpt
    82     {
    78     {
    83     TRACE_PRN_FN_ENT;
    79     TRACE_PRN_FN_ENT;
    84 
    80 
    85     delete iRouting;
    81     delete iRouting;
    86     delete iTarSettings;
    82     delete iTarSettings;
    87     delete iDTMFUplinkPlayer;
       
    88     delete iDTMFDnlinkPlayer;
       
    89     delete iDTMFNotifier;
       
    90     delete iCSUplink;
    83     delete iCSUplink;
    91     delete iCSDownlink;
    84     delete iCSDownlink;
       
    85     delete iResetVolNotifier;
    92 
    86 
    93     if (iMsgQueueUp.Handle() > 0)
    87     if (iMsgQueueUp.Handle() > 0)
    94         {
    88         {
    95         iMsgQueueUp.Close();
    89         iMsgQueueUp.Close();
    96         }
    90         }
   110 gint TMSCallCSAdpt::PostConstruct()
   104 gint TMSCallCSAdpt::PostConstruct()
   111     {
   105     {
   112     TRACE_PRN_FN_ENT;
   106     TRACE_PRN_FN_ENT;
   113     gint status(TMS_RESULT_SUCCESS);
   107     gint status(TMS_RESULT_SUCCESS);
   114     iNextStreamId = 1;
   108     iNextStreamId = 1;
   115     iUplinkInitialized = FALSE;
   109     iUplState = EIdle;
   116     iDnlinkInitialized = FALSE;
   110     iDnlState = EIdle;
   117     TRACE_PRN_FN_EXT;
   111     TRACE_PRN_FN_EXT;
   118     return status;
   112     return status;
   119     }
   113     }
   120 
   114 
   121 // -----------------------------------------------------------------------------
   115 // -----------------------------------------------------------------------------
   131     switch (strmType)
   125     switch (strmType)
   132         {
   126         {
   133         case TMS_STREAM_UPLINK:
   127         case TMS_STREAM_UPLINK:
   134             {
   128             {
   135             status = TMS_RESULT_ALREADY_EXIST;
   129             status = TMS_RESULT_ALREADY_EXIST;
   136             if (!iUplinkInitialized)
   130             if (iUplState == EIdle)
   137                 {
   131                 {
   138                 iUplinkStreamId = iNextStreamId;
   132                 iUplinkStreamId = iNextStreamId;
   139                 outStrmId = iUplinkStreamId;
   133                 outStrmId = iUplinkStreamId;
   140                 iNextStreamId++;
   134                 iNextStreamId++;
   141                 //iUplinkInitialized = TRUE; //not initialized yet!
       
   142                 status = TMS_RESULT_SUCCESS;
   135                 status = TMS_RESULT_SUCCESS;
   143                 }
   136                 }
   144             break;
   137             break;
   145             }
   138             }
   146         case TMS_STREAM_DOWNLINK:
   139         case TMS_STREAM_DOWNLINK:
   147             {
   140             {
   148             status = TMS_RESULT_ALREADY_EXIST;
   141             status = TMS_RESULT_ALREADY_EXIST;
   149             if (!iDnlinkInitialized)
   142             if (iDnlState == EIdle)
   150                 {
   143                 {
   151                 iDnlinkStreamId = iNextStreamId;
   144                 iDnlinkStreamId = iNextStreamId;
   152                 outStrmId = iDnlinkStreamId;
   145                 outStrmId = iDnlinkStreamId;
   153                 iNextStreamId++;
   146                 iNextStreamId++;
   154                 //iDnlinkInitialized = TRUE; //not initialized yet!
       
   155                 status = TMS_RESULT_SUCCESS;
   147                 status = TMS_RESULT_SUCCESS;
   156                 }
   148                 }
   157             break;
   149             break;
   158             }
   150             }
   159         default:
   151         default:
   240 
   232 
   241     if (!iCSUplink)
   233     if (!iCSUplink)
   242         {
   234         {
   243         TRAP(status, iCSUplink = TMSCSUplink::NewL(*this, retrytime));
   235         TRAP(status, iCSUplink = TMSCSUplink::NewL(*this, retrytime));
   244         }
   236         }
   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;
   237     return status;
   255     }
   238     }
   256 
   239 
   257 // -----------------------------------------------------------------------------
   240 // -----------------------------------------------------------------------------
   258 // TMSCallCSAdpt::InitDownlink
   241 // TMSCallCSAdpt::InitDownlink
   272         TRAP(status, iRouting = CTelephonyAudioRouting::NewL(*this));
   255         TRAP(status, iRouting = CTelephonyAudioRouting::NewL(*this));
   273         }
   256         }
   274     if (!iTarSettings && status == TMS_RESULT_SUCCESS)
   257     if (!iTarSettings && status == TMS_RESULT_SUCCESS)
   275         {
   258         {
   276         TRAP(status, iTarSettings = TMSTarSettings::NewL());
   259         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         }
   260         }
   287     return status;
   261     return status;
   288     }
   262     }
   289 
   263 
   290 // -----------------------------------------------------------------------------
   264 // -----------------------------------------------------------------------------
   299     gint status(TMS_RESULT_INVALID_STATE);
   273     gint status(TMS_RESULT_INVALID_STATE);
   300     switch (strmType)
   274     switch (strmType)
   301         {
   275         {
   302         case TMS_STREAM_UPLINK:
   276         case TMS_STREAM_UPLINK:
   303             {
   277             {
   304             if (iCSUplink && strmId == iUplinkStreamId)
   278             if (iCSUplink && strmId == iUplinkStreamId &&
       
   279                     iUplState == EInitialized)
   305                 {
   280                 {
   306                 iCSUplink->Activate(retrytime);
   281                 iCSUplink->Activate(retrytime);
   307                 status = TMS_RESULT_SUCCESS;
   282                 status = TMS_RESULT_SUCCESS;
   308                 }
   283                 }
   309             break;
   284             break;
   310             }
   285             }
   311         case TMS_STREAM_DOWNLINK:
   286         case TMS_STREAM_DOWNLINK:
   312             {
   287             {
   313             if (iCSDownlink && strmId == iDnlinkStreamId)
   288             if(!iResetVolNotifier)
       
   289                 {
       
   290                 TRAP(status, iResetVolNotifier = TMSSyncVol::NewL());
       
   291                 }
       
   292             if(iResetVolNotifier)
       
   293                 {
       
   294                 iResetVolNotifier->SetSyncVol();
       
   295                 }
       
   296             if (iCSDownlink && strmId == iDnlinkStreamId &&
       
   297                     iDnlState == EInitialized)
   314                 {
   298                 {
   315                 iCSDownlink->Activate(retrytime);
   299                 iCSDownlink->Activate(retrytime);
   316                 status = TMS_RESULT_SUCCESS;
   300                 status = TMS_RESULT_SUCCESS;
   317                 }
   301                 }
   318             break;
   302             break;
   357         case TMS_STREAM_UPLINK:
   341         case TMS_STREAM_UPLINK:
   358             {
   342             {
   359             if (iCSUplink && strmId == iUplinkStreamId)
   343             if (iCSUplink && strmId == iUplinkStreamId)
   360                 {
   344                 {
   361                 iCSUplink->Deactivate();
   345                 iCSUplink->Deactivate();
       
   346                 iUplState = EInitialized;
   362                 status = TMS_RESULT_SUCCESS;
   347                 status = TMS_RESULT_SUCCESS;
   363                 NotifyClient(iUplinkStreamId, ECmdUplinkInitComplete, status);
   348                 NotifyClient(iUplinkStreamId, ECmdUplinkInitComplete, status);
   364                 }
   349                 }
   365             break;
   350             break;
   366             }
   351             }
   367         case TMS_STREAM_DOWNLINK:
   352         case TMS_STREAM_DOWNLINK:
   368             {
   353             {
   369             if (iCSDownlink && strmId == iDnlinkStreamId)
   354             if (iCSDownlink && strmId == iDnlinkStreamId)
   370                 {
   355                 {
   371                 iCSDownlink->Deactivate();
   356                 iCSDownlink->Deactivate();
       
   357                 iDnlState = EInitialized;
   372                 status = TMS_RESULT_SUCCESS;
   358                 status = TMS_RESULT_SUCCESS;
   373                 NotifyClient(iDnlinkStreamId, ECmdDownlinkInitComplete, status);
   359                 NotifyClient(iDnlinkStreamId, ECmdDownlinkInitComplete, status);
   374                 }
   360                 }
   375             break;
   361             break;
   376             }
   362             }
   400         case TMS_STREAM_UPLINK:
   386         case TMS_STREAM_UPLINK:
   401             {
   387             {
   402             if (iCSUplink && strmId == iUplinkStreamId)
   388             if (iCSUplink && strmId == iUplinkStreamId)
   403                 {
   389                 {
   404                 iCSUplink->Deactivate();
   390                 iCSUplink->Deactivate();
   405                 iUplinkInitialized = FALSE;
   391                 iUplState = EIdle;
   406                 status = TMS_RESULT_SUCCESS;
   392                 status = TMS_RESULT_SUCCESS;
   407                 NotifyClient(iUplinkStreamId, ECmdUplinkDeInitComplete, status);
   393                 NotifyClient(iUplinkStreamId, ECmdUplinkDeInitComplete, status);
   408                 }
   394                 }
   409             break;
   395             break;
       
   396             }
   410         case TMS_STREAM_DOWNLINK:
   397         case TMS_STREAM_DOWNLINK:
       
   398             {
   411             if (iCSDownlink && strmId == iDnlinkStreamId)
   399             if (iCSDownlink && strmId == iDnlinkStreamId)
   412                 {
   400                 {
   413                 iCSDownlink->Deactivate();
   401                 iCSDownlink->Deactivate();
   414                 iDnlinkInitialized = FALSE;
   402                 iDnlState = EIdle;
   415                 status = TMS_RESULT_SUCCESS;
   403                 status = TMS_RESULT_SUCCESS;
   416                 NotifyClient(iDnlinkStreamId, ECmdDownlinkDeInitComplete,
   404                 NotifyClient(iDnlinkStreamId, ECmdDownlinkDeInitComplete,
   417                         status);
   405                         status);
   418                 }
   406                 }
   419             break;
   407             break;
   443         case TMS_STREAM_UPLINK:
   431         case TMS_STREAM_UPLINK:
   444             {
   432             {
   445             if (strmId == iUplinkStreamId)
   433             if (strmId == iUplinkStreamId)
   446                 {
   434                 {
   447                 iUplinkStreamId = -1;
   435                 iUplinkStreamId = -1;
   448                 iUplinkInitialized = FALSE;
   436                 iUplState = EIdle;
   449                 }
   437                 }
   450             break;
   438             break;
   451             }
   439             }
   452         case TMS_STREAM_DOWNLINK:
   440         case TMS_STREAM_DOWNLINK:
   453             {
   441             {
   454             if (strmId == iDnlinkStreamId)
   442             if (strmId == iDnlinkStreamId)
   455                 {
   443                 {
   456                 iDnlinkStreamId = -1;
   444                 iDnlinkStreamId = -1;
   457                 iDnlinkInitialized = FALSE;
   445                 iDnlState = EIdle;
   458                 }
   446                 }
   459             break;
   447             break;
   460             }
   448             }
   461         default:
   449         default:
   462             {
   450             {
   519 //
   507 //
   520 gint TMSCallCSAdpt::GetMaxVolume(guint& volume)
   508 gint TMSCallCSAdpt::GetMaxVolume(guint& volume)
   521     {
   509     {
   522     TRACE_PRN_FN_ENT;
   510     TRACE_PRN_FN_ENT;
   523     gint status(TMS_RESULT_INVALID_STATE);
   511     gint status(TMS_RESULT_INVALID_STATE);
   524     if (iCSDownlink && iDnlinkInitialized)
   512     if (iCSDownlink && iDnlState != EIdle)
   525         {
   513         {
   526         volume = iCSDownlink->MaxVolume();
   514         volume = iCSDownlink->MaxVolume();
   527         status = TMS_RESULT_SUCCESS;
   515         status = TMS_RESULT_SUCCESS;
   528         TRACE_PRN_N1(_L("TMS->TMSCallCSAdpt: GetMaxVolume [%d]"), volume);
   516         TRACE_PRN_N1(_L("TMS->TMSCallCSAdpt: GetMaxVolume [%d]"), volume);
   529         }
   517         }
   538 //
   526 //
   539 gint TMSCallCSAdpt::SetVolume(const guint volume)
   527 gint TMSCallCSAdpt::SetVolume(const guint volume)
   540     {
   528     {
   541     TRACE_PRN_FN_ENT;
   529     TRACE_PRN_FN_ENT;
   542     gint status(TMS_RESULT_INVALID_STATE);
   530     gint status(TMS_RESULT_INVALID_STATE);
   543     if (iCSDownlink && iDnlinkInitialized)
   531     if (iCSDownlink && iDnlState != EIdle)
   544         {
   532         {
   545         iCSDownlink->SetVolume(volume);
   533         iCSDownlink->SetVolume(volume);
   546         status = TMS_RESULT_SUCCESS;
   534         status = TMS_RESULT_SUCCESS;
   547         NotifyClient(iDnlinkStreamId, ECmdSetVolume, status);
   535         NotifyClient(iDnlinkStreamId, ECmdSetVolume, status);
   548         }
   536         }
   557 //
   545 //
   558 gint TMSCallCSAdpt::GetVolume(guint& volume)
   546 gint TMSCallCSAdpt::GetVolume(guint& volume)
   559     {
   547     {
   560     TRACE_PRN_FN_ENT;
   548     TRACE_PRN_FN_ENT;
   561     gint status(TMS_RESULT_INVALID_STATE);
   549     gint status(TMS_RESULT_INVALID_STATE);
   562     if (iCSDownlink && iDnlinkInitialized)
   550     if (iCSDownlink && iDnlState != EIdle)
   563         {
   551         {
   564         volume = iCSDownlink->Volume();
   552         volume = iCSDownlink->Volume();
   565         status = TMS_RESULT_SUCCESS;
   553         status = TMS_RESULT_SUCCESS;
   566         }
   554         }
   567     TRACE_PRN_FN_EXT;
   555     TRACE_PRN_FN_EXT;
   575 //
   563 //
   576 gint TMSCallCSAdpt::GetMaxGain(guint& gain)
   564 gint TMSCallCSAdpt::GetMaxGain(guint& gain)
   577     {
   565     {
   578     TRACE_PRN_FN_ENT;
   566     TRACE_PRN_FN_ENT;
   579     gint status(TMS_RESULT_INVALID_STATE);
   567     gint status(TMS_RESULT_INVALID_STATE);
   580     if (iCSUplink && iUplinkInitialized)
   568     if (iCSUplink && iUplState != EIdle)
   581         {
   569         {
   582         gain = iCSUplink->MaxGain();
   570         gain = iCSUplink->MaxGain();
   583         status = TMS_RESULT_SUCCESS;
   571         status = TMS_RESULT_SUCCESS;
   584         TRACE_PRN_N1(_L("TMS->TMSCallCSAdpt::GetMaxGain [%d]"), gain);
   572         TRACE_PRN_N1(_L("TMS->TMSCallCSAdpt::GetMaxGain [%d]"), gain);
   585         }
   573         }
   594 //
   582 //
   595 gint TMSCallCSAdpt::SetGain(const guint gain)
   583 gint TMSCallCSAdpt::SetGain(const guint gain)
   596     {
   584     {
   597     TRACE_PRN_FN_ENT;
   585     TRACE_PRN_FN_ENT;
   598     gint status(TMS_RESULT_INVALID_STATE);
   586     gint status(TMS_RESULT_INVALID_STATE);
   599     if (iCSUplink && iUplinkInitialized)
   587     if (iCSUplink && iUplState != EIdle)
   600         {
   588         {
   601         iCSUplink->SetGain(gain);
   589         iCSUplink->SetGain(gain);
   602         status = TMS_RESULT_SUCCESS;
   590         status = TMS_RESULT_SUCCESS;
   603         NotifyClient(iUplinkStreamId, ECmdSetGain, status);
   591         NotifyClient(iUplinkStreamId, ECmdSetGain, status);
   604         }
   592         }
   613 //
   601 //
   614 gint TMSCallCSAdpt::GetGain(guint& gain)
   602 gint TMSCallCSAdpt::GetGain(guint& gain)
   615     {
   603     {
   616     TRACE_PRN_FN_ENT;
   604     TRACE_PRN_FN_ENT;
   617     gint status(TMS_RESULT_INVALID_STATE);
   605     gint status(TMS_RESULT_INVALID_STATE);
   618     if (iCSUplink && iUplinkInitialized)
   606     if (iCSUplink && iUplState != EIdle)
   619         {
   607         {
   620         gain = iCSUplink->Gain();
   608         gain = iCSUplink->Gain();
   621         status = TMS_RESULT_SUCCESS;
   609         status = TMS_RESULT_SUCCESS;
   622         }
   610         }
   623     TRACE_PRN_FN_EXT;
   611     TRACE_PRN_FN_EXT;
   631 //
   619 //
   632 gint TMSCallCSAdpt::GetGlobalMaxVolume(guint& volume)
   620 gint TMSCallCSAdpt::GetGlobalMaxVolume(guint& volume)
   633     {
   621     {
   634     TRACE_PRN_FN_ENT;
   622     TRACE_PRN_FN_ENT;
   635     gint status(TMS_RESULT_INVALID_STATE);
   623     gint status(TMS_RESULT_INVALID_STATE);
   636     if (iCSDownlink && iDnlinkInitialized)
   624     if (iCSDownlink && iDnlState != EIdle)
   637         {
   625         {
   638         volume = iCSDownlink->MaxVolume();
   626         volume = iCSDownlink->MaxVolume();
   639         status = TMS_RESULT_SUCCESS;
   627         status = TMS_RESULT_SUCCESS;
   640         TRACE_PRN_N1(_L("TMS->TMSCallCSAdpt::GetGlobalMaxVolume [%d]"), volume);
   628         TRACE_PRN_N1(_L("TMS->TMSCallCSAdpt::GetGlobalMaxVolume [%d]"), volume);
   641         }
   629         }
   651 gint TMSCallCSAdpt::SetGlobalVolume(const guint volume)
   639 gint TMSCallCSAdpt::SetGlobalVolume(const guint volume)
   652     {
   640     {
   653     TRACE_PRN_FN_ENT;
   641     TRACE_PRN_FN_ENT;
   654     gint status(TMS_RESULT_INVALID_STATE);
   642     gint status(TMS_RESULT_INVALID_STATE);
   655     iGlobalVol = volume;
   643     iGlobalVol = volume;
   656     if (iCSDownlink && iDnlinkInitialized)
   644     if (iCSDownlink && iDnlState != EIdle)
   657         {
   645         {
   658         iCSDownlink->SetVolume(volume);
   646         iCSDownlink->SetVolume(volume);
   659         status = TMS_RESULT_SUCCESS;
   647         status = TMS_RESULT_SUCCESS;
   660         }
   648         }
   661     TRACE_PRN_FN_EXT;
   649     TRACE_PRN_FN_EXT;
   669 //
   657 //
   670 gint TMSCallCSAdpt::GetGlobalVolume(guint& volume)
   658 gint TMSCallCSAdpt::GetGlobalVolume(guint& volume)
   671     {
   659     {
   672     TRACE_PRN_FN_ENT;
   660     TRACE_PRN_FN_ENT;
   673     gint status(TMS_RESULT_INVALID_STATE);
   661     gint status(TMS_RESULT_INVALID_STATE);
   674     if (iCSDownlink && iDnlinkInitialized)
   662     if (iCSDownlink && iDnlState != EIdle)
   675         {
   663         {
   676         volume = iCSDownlink->Volume();
   664         volume = iCSDownlink->Volume();
   677         status = TMS_RESULT_SUCCESS;
   665         status = TMS_RESULT_SUCCESS;
   678         }
   666         }
   679     TRACE_PRN_FN_EXT;
   667     TRACE_PRN_FN_EXT;
   687 //
   675 //
   688 gint TMSCallCSAdpt::GetGlobalMaxGain(guint& gain)
   676 gint TMSCallCSAdpt::GetGlobalMaxGain(guint& gain)
   689     {
   677     {
   690     TRACE_PRN_FN_ENT;
   678     TRACE_PRN_FN_ENT;
   691     gint status(TMS_RESULT_INVALID_STATE);
   679     gint status(TMS_RESULT_INVALID_STATE);
   692     if (iCSUplink && iUplinkInitialized)
   680     if (iCSUplink && iUplState != EIdle)
   693         {
   681         {
   694         gain = iCSUplink->MaxGain();
   682         gain = iCSUplink->MaxGain();
   695         status = TMS_RESULT_SUCCESS;
   683         status = TMS_RESULT_SUCCESS;
   696         TRACE_PRN_N1(_L("TMS->TMSCallCSAdpt::GetGlobalMaxGain [%d]"), gain);
   684         TRACE_PRN_N1(_L("TMS->TMSCallCSAdpt::GetGlobalMaxGain [%d]"), gain);
   697         }
   685         }
   707 gint TMSCallCSAdpt::SetGlobalGain(const guint gain)
   695 gint TMSCallCSAdpt::SetGlobalGain(const guint gain)
   708     {
   696     {
   709     TRACE_PRN_FN_ENT;
   697     TRACE_PRN_FN_ENT;
   710     gint status(TMS_RESULT_INVALID_STATE);
   698     gint status(TMS_RESULT_INVALID_STATE);
   711     iGlobalGain = gain;
   699     iGlobalGain = gain;
   712     if (iCSUplink && iUplinkInitialized)
   700     if (iCSUplink && iUplState != EIdle)
   713         {
   701         {
   714         iCSUplink->SetGain(gain);
   702         iCSUplink->SetGain(gain);
   715         status = TMS_RESULT_SUCCESS;
   703         status = TMS_RESULT_SUCCESS;
   716         }
   704         }
   717     TRACE_PRN_FN_EXT;
   705     TRACE_PRN_FN_EXT;
   725 //
   713 //
   726 gint TMSCallCSAdpt::GetGlobalGain(guint& gain)
   714 gint TMSCallCSAdpt::GetGlobalGain(guint& gain)
   727     {
   715     {
   728     TRACE_PRN_FN_ENT;
   716     TRACE_PRN_FN_ENT;
   729     gint status(TMS_RESULT_INVALID_STATE);
   717     gint status(TMS_RESULT_INVALID_STATE);
   730     if (iCSUplink && iUplinkInitialized)
   718     if (iCSUplink && iUplState != EIdle)
   731         {
   719         {
   732         gain = iCSUplink->Gain();
   720         gain = iCSUplink->Gain();
   733         status = TMS_RESULT_SUCCESS;
   721         status = TMS_RESULT_SUCCESS;
   734         }
   722         }
   735     TRACE_PRN_FN_EXT;
   723     TRACE_PRN_FN_EXT;
   940         CTelephonyAudioRouting::TAudioOutput taroutput;
   928         CTelephonyAudioRouting::TAudioOutput taroutput;
   941         taroutput = iRouting->Output();
   929         taroutput = iRouting->Output();
   942         status = TMS_RESULT_SUCCESS;
   930         status = TMS_RESULT_SUCCESS;
   943         output = TOTMSOUTPUT(taroutput);
   931         output = TOTMSOUTPUT(taroutput);
   944         }
   932         }
   945 
       
   946     TRACE_PRN_FN_EXT;
   933     TRACE_PRN_FN_EXT;
   947     return status;
   934     return status;
   948     }
   935     }
   949 
   936 
   950 // -----------------------------------------------------------------------------
   937 // -----------------------------------------------------------------------------
   982     if (iRouting)
   969     if (iRouting)
   983         {
   970         {
   984         RBufWriteStream stream;
   971         RBufWriteStream stream;
   985         stream.Open(*outputsbuf);
   972         stream.Open(*outputsbuf);
   986         CleanupClosePushL(stream);
   973         CleanupClosePushL(stream);
   987 
       
   988         TArray<CTelephonyAudioRouting::TAudioOutput>
   974         TArray<CTelephonyAudioRouting::TAudioOutput>
   989                 availableOutputs = iRouting->AvailableOutputs();
   975                 availableOutputs = iRouting->AvailableOutputs();
   990 
       
   991         guint numOfItems = availableOutputs.Count();
   976         guint numOfItems = availableOutputs.Count();
   992         count = numOfItems;
   977         count = numOfItems;
   993         for (guint i = 0; i < numOfItems; i++)
   978         for (guint i = 0; i < numOfItems; i++)
   994             {
   979             {
   995             tmsoutput = TOTMSOUTPUT(availableOutputs[i]);
   980             tmsoutput = TOTMSOUTPUT(availableOutputs[i]);
   996             stream.WriteUint32L(tmsoutput);
   981             stream.WriteUint32L(tmsoutput);
   997             }
   982             }
   998 
       
   999         CleanupStack::PopAndDestroy(&stream);
   983         CleanupStack::PopAndDestroy(&stream);
  1000         status = TMS_RESULT_SUCCESS;
   984         status = TMS_RESULT_SUCCESS;
  1001         }
   985         }
  1002 
   986 
  1003     TRACE_PRN_FN_EXT;
   987     TRACE_PRN_FN_EXT;
  1004     return status;
   988     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     }
   989     }
  1176 
   990 
  1177 // -----------------------------------------------------------------------------
   991 // -----------------------------------------------------------------------------
  1178 // TMSCallCSAdpt::DownlinkInitCompleted
   992 // TMSCallCSAdpt::DownlinkInitCompleted
  1179 // From TMSCSDevSoundObserver
   993 // From TMSCSDevSoundObserver
  1182 void TMSCallCSAdpt::DownlinkInitCompleted(gint status)
   996 void TMSCallCSAdpt::DownlinkInitCompleted(gint status)
  1183     {
   997     {
  1184     TRACE_PRN_FN_ENT;
   998     TRACE_PRN_FN_ENT;
  1185     if (status == TMS_RESULT_SUCCESS)
   999     if (status == TMS_RESULT_SUCCESS)
  1186         {
  1000         {
  1187         iDnlinkInitialized = TRUE;
  1001         iDnlState = EInitialized;
  1188         }
  1002         }
  1189     NotifyClient(iDnlinkStreamId, ECmdDownlinkInitComplete, status);
  1003     NotifyClient(iDnlinkStreamId, ECmdDownlinkInitComplete, status);
  1190     TRACE_PRN_FN_EXT;
  1004     TRACE_PRN_FN_EXT;
  1191     }
  1005     }
  1192 
  1006 
  1198 void TMSCallCSAdpt::UplinkInitCompleted(gint status)
  1012 void TMSCallCSAdpt::UplinkInitCompleted(gint status)
  1199     {
  1013     {
  1200     TRACE_PRN_FN_ENT;
  1014     TRACE_PRN_FN_ENT;
  1201     if (status == TMS_RESULT_SUCCESS)
  1015     if (status == TMS_RESULT_SUCCESS)
  1202         {
  1016         {
  1203         iUplinkInitialized = TRUE;
  1017         iUplState = EInitialized;
  1204         }
  1018         }
  1205     NotifyClient(iUplinkStreamId, ECmdUplinkInitComplete, status);
  1019     NotifyClient(iUplinkStreamId, ECmdUplinkInitComplete, status);
  1206     TRACE_PRN_FN_EXT;
  1020     TRACE_PRN_FN_EXT;
  1207     }
  1021     }
  1208 
  1022 
  1212 // -----------------------------------------------------------------------------
  1026 // -----------------------------------------------------------------------------
  1213 //
  1027 //
  1214 void TMSCallCSAdpt::UplinkActivationCompleted(gint status)
  1028 void TMSCallCSAdpt::UplinkActivationCompleted(gint status)
  1215     {
  1029     {
  1216     TRACE_PRN_FN_ENT;
  1030     TRACE_PRN_FN_ENT;
       
  1031     if (status == TMS_RESULT_SUCCESS)
       
  1032         {
       
  1033         iUplState = EActivated;
       
  1034         }
  1217     NotifyClient(iUplinkStreamId, ECmdUplinkStarted, status);
  1035     NotifyClient(iUplinkStreamId, ECmdUplinkStarted, status);
  1218     TRACE_PRN_FN_EXT;
  1036     TRACE_PRN_FN_EXT;
  1219     }
  1037     }
  1220 
  1038 
  1221 // -----------------------------------------------------------------------------
  1039 // -----------------------------------------------------------------------------
  1224 // -----------------------------------------------------------------------------
  1042 // -----------------------------------------------------------------------------
  1225 //
  1043 //
  1226 void TMSCallCSAdpt::DownlinkActivationCompleted(gint status)
  1044 void TMSCallCSAdpt::DownlinkActivationCompleted(gint status)
  1227     {
  1045     {
  1228     TRACE_PRN_FN_ENT;
  1046     TRACE_PRN_FN_ENT;
       
  1047     if (status == TMS_RESULT_SUCCESS)
       
  1048         {
       
  1049         iDnlState = EActivated;
       
  1050         }
  1229     NotifyClient(iDnlinkStreamId, ECmdDownlinkStarted, status);
  1051     NotifyClient(iDnlinkStreamId, ECmdDownlinkStarted, status);
  1230     TRACE_PRN_FN_EXT;
  1052     TRACE_PRN_FN_EXT;
  1231     }
  1053     }
  1232 
  1054 
  1233 // -----------------------------------------------------------------------------
  1055 // -----------------------------------------------------------------------------