mmserv/tms/tmscallserver/src/tmscallcsadpt.cpp
branchRCL_3
changeset 19 095bea5f582e
parent 17 60e492b28869
child 20 0ac9a5310753
equal deleted inserted replaced
18:a36789189b53 19:095bea5f582e
    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 "tmssyncvol.h"
    29 
    30 
    30 using namespace TMS;
    31 using namespace TMS;
    31 
    32 
    32 // -----------------------------------------------------------------------------
    33 // -----------------------------------------------------------------------------
    33 // TMSCallCSAdpt::NewL
    34 // TMSCallCSAdpt::NewL
    53     TRACE_PRN_FN_ENT;
    54     TRACE_PRN_FN_ENT;
    54     iCSDownlink = NULL;
    55     iCSDownlink = NULL;
    55     iCSUplink = NULL;
    56     iCSUplink = NULL;
    56     iRouting = NULL;
    57     iRouting = NULL;
    57     iTarSettings = NULL;
    58     iTarSettings = NULL;
       
    59     iResetVolNotifier = NULL;
    58     TRACE_PRN_FN_EXT;
    60     TRACE_PRN_FN_EXT;
    59     }
    61     }
    60 
    62 
    61 // -----------------------------------------------------------------------------
    63 // -----------------------------------------------------------------------------
    62 // TMSCallCSAdpt::TMSCallCSAdpt
    64 // TMSCallCSAdpt::TMSCallCSAdpt
    78 
    80 
    79     delete iRouting;
    81     delete iRouting;
    80     delete iTarSettings;
    82     delete iTarSettings;
    81     delete iCSUplink;
    83     delete iCSUplink;
    82     delete iCSDownlink;
    84     delete iCSDownlink;
       
    85     delete iResetVolNotifier;
    83 
    86 
    84     if (iMsgQueueUp.Handle() > 0)
    87     if (iMsgQueueUp.Handle() > 0)
    85         {
    88         {
    86         iMsgQueueUp.Close();
    89         iMsgQueueUp.Close();
    87         }
    90         }
   101 gint TMSCallCSAdpt::PostConstruct()
   104 gint TMSCallCSAdpt::PostConstruct()
   102     {
   105     {
   103     TRACE_PRN_FN_ENT;
   106     TRACE_PRN_FN_ENT;
   104     gint status(TMS_RESULT_SUCCESS);
   107     gint status(TMS_RESULT_SUCCESS);
   105     iNextStreamId = 1;
   108     iNextStreamId = 1;
   106     iUplinkInitialized = FALSE;
   109     iUplState = EIdle;
   107     iDnlinkInitialized = FALSE;
   110     iDnlState = EIdle;
   108     TRACE_PRN_FN_EXT;
   111     TRACE_PRN_FN_EXT;
   109     return status;
   112     return status;
   110     }
   113     }
   111 
   114 
   112 // -----------------------------------------------------------------------------
   115 // -----------------------------------------------------------------------------
   122     switch (strmType)
   125     switch (strmType)
   123         {
   126         {
   124         case TMS_STREAM_UPLINK:
   127         case TMS_STREAM_UPLINK:
   125             {
   128             {
   126             status = TMS_RESULT_ALREADY_EXIST;
   129             status = TMS_RESULT_ALREADY_EXIST;
   127             if (!iUplinkInitialized)
   130             if (iUplState == EIdle)
   128                 {
   131                 {
   129                 iUplinkStreamId = iNextStreamId;
   132                 iUplinkStreamId = iNextStreamId;
   130                 outStrmId = iUplinkStreamId;
   133                 outStrmId = iUplinkStreamId;
   131                 iNextStreamId++;
   134                 iNextStreamId++;
   132                 //iUplinkInitialized = TRUE; //not initialized yet!
       
   133                 status = TMS_RESULT_SUCCESS;
   135                 status = TMS_RESULT_SUCCESS;
   134                 }
   136                 }
   135             break;
   137             break;
   136             }
   138             }
   137         case TMS_STREAM_DOWNLINK:
   139         case TMS_STREAM_DOWNLINK:
   138             {
   140             {
   139             status = TMS_RESULT_ALREADY_EXIST;
   141             status = TMS_RESULT_ALREADY_EXIST;
   140             if (!iDnlinkInitialized)
   142             if (iDnlState == EIdle)
   141                 {
   143                 {
   142                 iDnlinkStreamId = iNextStreamId;
   144                 iDnlinkStreamId = iNextStreamId;
   143                 outStrmId = iDnlinkStreamId;
   145                 outStrmId = iDnlinkStreamId;
   144                 iNextStreamId++;
   146                 iNextStreamId++;
   145                 //iDnlinkInitialized = TRUE; //not initialized yet!
       
   146                 status = TMS_RESULT_SUCCESS;
   147                 status = TMS_RESULT_SUCCESS;
   147                 }
   148                 }
   148             break;
   149             break;
   149             }
   150             }
   150         default:
   151         default:
   162 //
   163 //
   163 // -----------------------------------------------------------------------------
   164 // -----------------------------------------------------------------------------
   164 //
   165 //
   165 gint TMSCallCSAdpt::InitStream(const TMSCallType /*callType*/,
   166 gint TMSCallCSAdpt::InitStream(const TMSCallType /*callType*/,
   166         const TMSStreamType strmType, const gint strmId,
   167         const TMSStreamType strmType, const gint strmId,
   167         const TMSFormatType /*frmtType*/, const RMessage2& message)
   168         const TMSFormatType /*frmtType*/, const gint retrytime,
       
   169         const RMessage2& message)
   168     {
   170     {
   169     TRACE_PRN_FN_ENT;
   171     TRACE_PRN_FN_ENT;
   170     gint status(TMS_RESULT_SUCCESS);
   172     gint status(TMS_RESULT_SUCCESS);
   171 
   173 
   172     switch (strmType)
   174     switch (strmType)
   182                     // Third argument in TMSCallProxy::InitStream
   184                     // Third argument in TMSCallProxy::InitStream
   183                     status = iMsgQueueUp.Open(message, 1);
   185                     status = iMsgQueueUp.Open(message, 1);
   184                     }
   186                     }
   185                 if (status == TMS_RESULT_SUCCESS)
   187                 if (status == TMS_RESULT_SUCCESS)
   186                     {
   188                     {
   187                     status = InitUplink();
   189                     status = InitUplink(retrytime);
   188                     }
   190                     }
   189                 }
   191                 }
   190             break;
   192             break;
   191             }
   193             }
   192         case TMS_STREAM_DOWNLINK:
   194         case TMS_STREAM_DOWNLINK:
   200                     // Third argument in TMSCallProxy::InitStream
   202                     // Third argument in TMSCallProxy::InitStream
   201                     status = iMsgQueueDn.Open(message, 1);
   203                     status = iMsgQueueDn.Open(message, 1);
   202                     }
   204                     }
   203                 if (status == TMS_RESULT_SUCCESS)
   205                 if (status == TMS_RESULT_SUCCESS)
   204                     {
   206                     {
   205                     status = InitDownlink();
   207                     status = InitDownlink(retrytime);
   206                     }
   208                     }
   207                 }
   209                 }
   208             break;
   210             break;
   209             }
   211             }
   210         default:
   212         default:
   222 // -----------------------------------------------------------------------------
   224 // -----------------------------------------------------------------------------
   223 // TMSCallCSAdpt::InitUplink
   225 // TMSCallCSAdpt::InitUplink
   224 //
   226 //
   225 // -----------------------------------------------------------------------------
   227 // -----------------------------------------------------------------------------
   226 //
   228 //
   227 gint TMSCallCSAdpt::InitUplink()
   229 gint TMSCallCSAdpt::InitUplink(const gint retrytime)
   228     {
   230     {
   229     gint status(TMS_RESULT_SUCCESS);
   231     gint status(TMS_RESULT_SUCCESS);
       
   232 
   230     if (!iCSUplink)
   233     if (!iCSUplink)
   231         {
   234         {
   232         TRAP(status, iCSUplink = TMSCSUplink::NewL(*this));
   235         TRAP(status, iCSUplink = TMSCSUplink::NewL(*this, retrytime));
   233         }
   236         }
   234     return status;
   237     return status;
   235     }
   238     }
   236 
   239 
   237 // -----------------------------------------------------------------------------
   240 // -----------------------------------------------------------------------------
   238 // TMSCallCSAdpt::InitDownlink
   241 // TMSCallCSAdpt::InitDownlink
   239 //
   242 //
   240 // -----------------------------------------------------------------------------
   243 // -----------------------------------------------------------------------------
   241 //
   244 //
   242 gint TMSCallCSAdpt::InitDownlink()
   245 gint TMSCallCSAdpt::InitDownlink(const gint retrytime)
   243     {
   246     {
   244     gint status(TMS_RESULT_SUCCESS);
   247     gint status(TMS_RESULT_SUCCESS);
   245 
   248 
   246     if (!iCSDownlink)
   249     if (!iCSDownlink)
   247         {
   250         {
   248         TRAP(status, iCSDownlink = TMSCSDownlink::NewL(*this));
   251         TRAP(status, iCSDownlink = TMSCSDownlink::NewL(*this, retrytime));
   249         }
   252         }
   250     if (!iRouting && status == TMS_RESULT_SUCCESS)
   253     if (!iRouting && status == TMS_RESULT_SUCCESS)
   251         {
   254         {
   252         TRAP(status, iRouting = CTelephonyAudioRouting::NewL(*this));
   255         TRAP(status, iRouting = CTelephonyAudioRouting::NewL(*this));
   253         }
   256         }
   262 // TMSCallCSAdpt::StartStream
   265 // TMSCallCSAdpt::StartStream
   263 //
   266 //
   264 // -----------------------------------------------------------------------------
   267 // -----------------------------------------------------------------------------
   265 //
   268 //
   266 gint TMSCallCSAdpt::StartStream(const TMSCallType /*callType*/,
   269 gint TMSCallCSAdpt::StartStream(const TMSCallType /*callType*/,
   267         const TMSStreamType strmType, const gint strmId)
   270         const TMSStreamType strmType, const gint strmId, const gint retrytime)
   268     {
   271     {
   269     TRACE_PRN_FN_ENT;
   272     TRACE_PRN_FN_ENT;
   270     gint status(TMS_RESULT_INVALID_STATE);
   273     gint status(TMS_RESULT_INVALID_STATE);
   271     switch (strmType)
   274     switch (strmType)
   272         {
   275         {
   273         case TMS_STREAM_UPLINK:
   276         case TMS_STREAM_UPLINK:
   274             {
   277             {
   275             if (iCSUplink && strmId == iUplinkStreamId)
   278             if (iCSUplink && strmId == iUplinkStreamId &&
   276                 {
   279                     iUplState == EInitialized)
   277                 iCSUplink->Activate();
   280                 {
       
   281                 iCSUplink->Activate(retrytime);
   278                 status = TMS_RESULT_SUCCESS;
   282                 status = TMS_RESULT_SUCCESS;
   279                 }
   283                 }
   280             break;
   284             break;
   281             }
   285             }
   282         case TMS_STREAM_DOWNLINK:
   286         case TMS_STREAM_DOWNLINK:
   283             {
   287             {
   284             if (iCSDownlink && strmId == iDnlinkStreamId)
   288             if(!iResetVolNotifier)
   285                 {
   289                 {
   286                 iCSDownlink->Activate();
   290                 TRAP(status, iResetVolNotifier = TMSSyncVol::NewL());
       
   291                 }
       
   292             if(iResetVolNotifier)
       
   293                 {
       
   294                 iResetVolNotifier->SetSyncVol();
       
   295                 }
       
   296             if (iCSDownlink && strmId == iDnlinkStreamId &&
       
   297                     iDnlState == EInitialized)
       
   298                 {
       
   299                 iCSDownlink->Activate(retrytime);
   287                 status = TMS_RESULT_SUCCESS;
   300                 status = TMS_RESULT_SUCCESS;
   288                 }
   301                 }
   289             break;
   302             break;
   290             }
   303             }
   291         default:
   304         default:
   328         case TMS_STREAM_UPLINK:
   341         case TMS_STREAM_UPLINK:
   329             {
   342             {
   330             if (iCSUplink && strmId == iUplinkStreamId)
   343             if (iCSUplink && strmId == iUplinkStreamId)
   331                 {
   344                 {
   332                 iCSUplink->Deactivate();
   345                 iCSUplink->Deactivate();
       
   346                 iUplState = EInitialized;
   333                 status = TMS_RESULT_SUCCESS;
   347                 status = TMS_RESULT_SUCCESS;
   334                 NotifyClient(iUplinkStreamId, ECmdUplinkInitComplete, status);
   348                 NotifyClient(iUplinkStreamId, ECmdUplinkInitComplete, status);
   335                 }
   349                 }
   336             break;
   350             break;
   337             }
   351             }
   338         case TMS_STREAM_DOWNLINK:
   352         case TMS_STREAM_DOWNLINK:
   339             {
   353             {
   340             if (iCSDownlink && strmId == iDnlinkStreamId)
   354             if (iCSDownlink && strmId == iDnlinkStreamId)
   341                 {
   355                 {
   342                 iCSDownlink->Deactivate();
   356                 iCSDownlink->Deactivate();
       
   357                 iDnlState = EInitialized;
   343                 status = TMS_RESULT_SUCCESS;
   358                 status = TMS_RESULT_SUCCESS;
   344                 NotifyClient(iDnlinkStreamId, ECmdDownlinkInitComplete, status);
   359                 NotifyClient(iDnlinkStreamId, ECmdDownlinkInitComplete, status);
   345                 }
   360                 }
   346             break;
   361             break;
   347             }
   362             }
   371         case TMS_STREAM_UPLINK:
   386         case TMS_STREAM_UPLINK:
   372             {
   387             {
   373             if (iCSUplink && strmId == iUplinkStreamId)
   388             if (iCSUplink && strmId == iUplinkStreamId)
   374                 {
   389                 {
   375                 iCSUplink->Deactivate();
   390                 iCSUplink->Deactivate();
   376                 iUplinkInitialized = FALSE;
   391                 iUplState = EIdle;
   377                 status = TMS_RESULT_SUCCESS;
   392                 status = TMS_RESULT_SUCCESS;
   378                 NotifyClient(iUplinkStreamId, ECmdUplinkDeInitComplete, status);
   393                 NotifyClient(iUplinkStreamId, ECmdUplinkDeInitComplete, status);
   379                 }
   394                 }
   380             break;
   395             break;
       
   396             }
   381         case TMS_STREAM_DOWNLINK:
   397         case TMS_STREAM_DOWNLINK:
       
   398             {
   382             if (iCSDownlink && strmId == iDnlinkStreamId)
   399             if (iCSDownlink && strmId == iDnlinkStreamId)
   383                 {
   400                 {
   384                 iCSDownlink->Deactivate();
   401                 iCSDownlink->Deactivate();
   385                 iDnlinkInitialized = FALSE;
   402                 iDnlState = EIdle;
   386                 status = TMS_RESULT_SUCCESS;
   403                 status = TMS_RESULT_SUCCESS;
   387                 NotifyClient(iDnlinkStreamId, ECmdDownlinkDeInitComplete,
   404                 NotifyClient(iDnlinkStreamId, ECmdDownlinkDeInitComplete,
   388                         status);
   405                         status);
   389                 }
   406                 }
   390             break;
   407             break;
   414         case TMS_STREAM_UPLINK:
   431         case TMS_STREAM_UPLINK:
   415             {
   432             {
   416             if (strmId == iUplinkStreamId)
   433             if (strmId == iUplinkStreamId)
   417                 {
   434                 {
   418                 iUplinkStreamId = -1;
   435                 iUplinkStreamId = -1;
   419                 iUplinkInitialized = FALSE;
   436                 iUplState = EIdle;
   420                 }
   437                 }
   421             break;
   438             break;
   422             }
   439             }
   423         case TMS_STREAM_DOWNLINK:
   440         case TMS_STREAM_DOWNLINK:
   424             {
   441             {
   425             if (strmId == iDnlinkStreamId)
   442             if (strmId == iDnlinkStreamId)
   426                 {
   443                 {
   427                 iDnlinkStreamId = -1;
   444                 iDnlinkStreamId = -1;
   428                 iDnlinkInitialized = FALSE;
   445                 iDnlState = EIdle;
   429                 }
   446                 }
   430             break;
   447             break;
   431             }
   448             }
   432         default:
   449         default:
   433             {
   450             {
   490 //
   507 //
   491 gint TMSCallCSAdpt::GetMaxVolume(guint& volume)
   508 gint TMSCallCSAdpt::GetMaxVolume(guint& volume)
   492     {
   509     {
   493     TRACE_PRN_FN_ENT;
   510     TRACE_PRN_FN_ENT;
   494     gint status(TMS_RESULT_INVALID_STATE);
   511     gint status(TMS_RESULT_INVALID_STATE);
   495     if (iCSDownlink && iDnlinkInitialized)
   512     if (iCSDownlink && iDnlState != EIdle)
   496         {
   513         {
   497         volume = iCSDownlink->MaxVolume();
   514         volume = iCSDownlink->MaxVolume();
   498         status = TMS_RESULT_SUCCESS;
   515         status = TMS_RESULT_SUCCESS;
   499         TRACE_PRN_N1(_L("TMS->TMSCallCSAdpt: GetMaxVolume [%d]"), volume);
   516         TRACE_PRN_N1(_L("TMS->TMSCallCSAdpt: GetMaxVolume [%d]"), volume);
   500         }
   517         }
   509 //
   526 //
   510 gint TMSCallCSAdpt::SetVolume(const guint volume)
   527 gint TMSCallCSAdpt::SetVolume(const guint volume)
   511     {
   528     {
   512     TRACE_PRN_FN_ENT;
   529     TRACE_PRN_FN_ENT;
   513     gint status(TMS_RESULT_INVALID_STATE);
   530     gint status(TMS_RESULT_INVALID_STATE);
   514     if (iCSDownlink && iDnlinkInitialized)
   531     if (iCSDownlink && iDnlState != EIdle)
   515         {
   532         {
   516         iCSDownlink->SetVolume(volume);
   533         iCSDownlink->SetVolume(volume);
   517         status = TMS_RESULT_SUCCESS;
   534         status = TMS_RESULT_SUCCESS;
   518         NotifyClient(iDnlinkStreamId, ECmdSetVolume, status);
   535         NotifyClient(iDnlinkStreamId, ECmdSetVolume, status);
   519         }
   536         }
   528 //
   545 //
   529 gint TMSCallCSAdpt::GetVolume(guint& volume)
   546 gint TMSCallCSAdpt::GetVolume(guint& volume)
   530     {
   547     {
   531     TRACE_PRN_FN_ENT;
   548     TRACE_PRN_FN_ENT;
   532     gint status(TMS_RESULT_INVALID_STATE);
   549     gint status(TMS_RESULT_INVALID_STATE);
   533     if (iCSDownlink && iDnlinkInitialized)
   550     if (iCSDownlink && iDnlState != EIdle)
   534         {
   551         {
   535         volume = iCSDownlink->Volume();
   552         volume = iCSDownlink->Volume();
   536         status = TMS_RESULT_SUCCESS;
   553         status = TMS_RESULT_SUCCESS;
   537         }
   554         }
   538     TRACE_PRN_FN_EXT;
   555     TRACE_PRN_FN_EXT;
   546 //
   563 //
   547 gint TMSCallCSAdpt::GetMaxGain(guint& gain)
   564 gint TMSCallCSAdpt::GetMaxGain(guint& gain)
   548     {
   565     {
   549     TRACE_PRN_FN_ENT;
   566     TRACE_PRN_FN_ENT;
   550     gint status(TMS_RESULT_INVALID_STATE);
   567     gint status(TMS_RESULT_INVALID_STATE);
   551     if (iCSUplink && iUplinkInitialized)
   568     if (iCSUplink && iUplState != EIdle)
   552         {
   569         {
   553         gain = iCSUplink->MaxGain();
   570         gain = iCSUplink->MaxGain();
   554         status = TMS_RESULT_SUCCESS;
   571         status = TMS_RESULT_SUCCESS;
   555         TRACE_PRN_N1(_L("TMS->TMSCallCSAdpt::GetMaxGain [%d]"), gain);
   572         TRACE_PRN_N1(_L("TMS->TMSCallCSAdpt::GetMaxGain [%d]"), gain);
   556         }
   573         }
   565 //
   582 //
   566 gint TMSCallCSAdpt::SetGain(const guint gain)
   583 gint TMSCallCSAdpt::SetGain(const guint gain)
   567     {
   584     {
   568     TRACE_PRN_FN_ENT;
   585     TRACE_PRN_FN_ENT;
   569     gint status(TMS_RESULT_INVALID_STATE);
   586     gint status(TMS_RESULT_INVALID_STATE);
   570     if (iCSUplink && iUplinkInitialized)
   587     if (iCSUplink && iUplState != EIdle)
   571         {
   588         {
   572         iCSUplink->SetGain(gain);
   589         iCSUplink->SetGain(gain);
   573         status = TMS_RESULT_SUCCESS;
   590         status = TMS_RESULT_SUCCESS;
   574         NotifyClient(iUplinkStreamId, ECmdSetGain, status);
   591         NotifyClient(iUplinkStreamId, ECmdSetGain, status);
   575         }
   592         }
   584 //
   601 //
   585 gint TMSCallCSAdpt::GetGain(guint& gain)
   602 gint TMSCallCSAdpt::GetGain(guint& gain)
   586     {
   603     {
   587     TRACE_PRN_FN_ENT;
   604     TRACE_PRN_FN_ENT;
   588     gint status(TMS_RESULT_INVALID_STATE);
   605     gint status(TMS_RESULT_INVALID_STATE);
   589     if (iCSUplink && iUplinkInitialized)
   606     if (iCSUplink && iUplState != EIdle)
   590         {
   607         {
   591         gain = iCSUplink->Gain();
   608         gain = iCSUplink->Gain();
   592         status = TMS_RESULT_SUCCESS;
   609         status = TMS_RESULT_SUCCESS;
   593         }
   610         }
   594     TRACE_PRN_FN_EXT;
   611     TRACE_PRN_FN_EXT;
   602 //
   619 //
   603 gint TMSCallCSAdpt::GetGlobalMaxVolume(guint& volume)
   620 gint TMSCallCSAdpt::GetGlobalMaxVolume(guint& volume)
   604     {
   621     {
   605     TRACE_PRN_FN_ENT;
   622     TRACE_PRN_FN_ENT;
   606     gint status(TMS_RESULT_INVALID_STATE);
   623     gint status(TMS_RESULT_INVALID_STATE);
   607     if (iCSDownlink && iDnlinkInitialized)
   624     if (iCSDownlink && iDnlState != EIdle)
   608         {
   625         {
   609         volume = iCSDownlink->MaxVolume();
   626         volume = iCSDownlink->MaxVolume();
   610         status = TMS_RESULT_SUCCESS;
   627         status = TMS_RESULT_SUCCESS;
   611         TRACE_PRN_N1(_L("TMS->TMSCallCSAdpt::GetGlobalMaxVolume [%d]"), volume);
   628         TRACE_PRN_N1(_L("TMS->TMSCallCSAdpt::GetGlobalMaxVolume [%d]"), volume);
   612         }
   629         }
   622 gint TMSCallCSAdpt::SetGlobalVolume(const guint volume)
   639 gint TMSCallCSAdpt::SetGlobalVolume(const guint volume)
   623     {
   640     {
   624     TRACE_PRN_FN_ENT;
   641     TRACE_PRN_FN_ENT;
   625     gint status(TMS_RESULT_INVALID_STATE);
   642     gint status(TMS_RESULT_INVALID_STATE);
   626     iGlobalVol = volume;
   643     iGlobalVol = volume;
   627     if (iCSDownlink && iDnlinkInitialized)
   644     if (iCSDownlink && iDnlState != EIdle)
   628         {
   645         {
   629         iCSDownlink->SetVolume(volume);
   646         iCSDownlink->SetVolume(volume);
   630         status = TMS_RESULT_SUCCESS;
   647         status = TMS_RESULT_SUCCESS;
   631         }
   648         }
   632     TRACE_PRN_FN_EXT;
   649     TRACE_PRN_FN_EXT;
   640 //
   657 //
   641 gint TMSCallCSAdpt::GetGlobalVolume(guint& volume)
   658 gint TMSCallCSAdpt::GetGlobalVolume(guint& volume)
   642     {
   659     {
   643     TRACE_PRN_FN_ENT;
   660     TRACE_PRN_FN_ENT;
   644     gint status(TMS_RESULT_INVALID_STATE);
   661     gint status(TMS_RESULT_INVALID_STATE);
   645     if (iCSDownlink && iDnlinkInitialized)
   662     if (iCSDownlink && iDnlState != EIdle)
   646         {
   663         {
   647         volume = iCSDownlink->Volume();
   664         volume = iCSDownlink->Volume();
   648         status = TMS_RESULT_SUCCESS;
   665         status = TMS_RESULT_SUCCESS;
   649         }
   666         }
   650     TRACE_PRN_FN_EXT;
   667     TRACE_PRN_FN_EXT;
   658 //
   675 //
   659 gint TMSCallCSAdpt::GetGlobalMaxGain(guint& gain)
   676 gint TMSCallCSAdpt::GetGlobalMaxGain(guint& gain)
   660     {
   677     {
   661     TRACE_PRN_FN_ENT;
   678     TRACE_PRN_FN_ENT;
   662     gint status(TMS_RESULT_INVALID_STATE);
   679     gint status(TMS_RESULT_INVALID_STATE);
   663     if (iCSUplink && iUplinkInitialized)
   680     if (iCSUplink && iUplState != EIdle)
   664         {
   681         {
   665         gain = iCSUplink->MaxGain();
   682         gain = iCSUplink->MaxGain();
   666         status = TMS_RESULT_SUCCESS;
   683         status = TMS_RESULT_SUCCESS;
   667         TRACE_PRN_N1(_L("TMS->TMSCallCSAdpt::GetGlobalMaxGain [%d]"), gain);
   684         TRACE_PRN_N1(_L("TMS->TMSCallCSAdpt::GetGlobalMaxGain [%d]"), gain);
   668         }
   685         }
   678 gint TMSCallCSAdpt::SetGlobalGain(const guint gain)
   695 gint TMSCallCSAdpt::SetGlobalGain(const guint gain)
   679     {
   696     {
   680     TRACE_PRN_FN_ENT;
   697     TRACE_PRN_FN_ENT;
   681     gint status(TMS_RESULT_INVALID_STATE);
   698     gint status(TMS_RESULT_INVALID_STATE);
   682     iGlobalGain = gain;
   699     iGlobalGain = gain;
   683     if (iCSUplink && iUplinkInitialized)
   700     if (iCSUplink && iUplState != EIdle)
   684         {
   701         {
   685         iCSUplink->SetGain(gain);
   702         iCSUplink->SetGain(gain);
   686         status = TMS_RESULT_SUCCESS;
   703         status = TMS_RESULT_SUCCESS;
   687         }
   704         }
   688     TRACE_PRN_FN_EXT;
   705     TRACE_PRN_FN_EXT;
   696 //
   713 //
   697 gint TMSCallCSAdpt::GetGlobalGain(guint& gain)
   714 gint TMSCallCSAdpt::GetGlobalGain(guint& gain)
   698     {
   715     {
   699     TRACE_PRN_FN_ENT;
   716     TRACE_PRN_FN_ENT;
   700     gint status(TMS_RESULT_INVALID_STATE);
   717     gint status(TMS_RESULT_INVALID_STATE);
   701     if (iCSUplink && iUplinkInitialized)
   718     if (iCSUplink && iUplState != EIdle)
   702         {
   719         {
   703         gain = iCSUplink->Gain();
   720         gain = iCSUplink->Gain();
   704         status = TMS_RESULT_SUCCESS;
   721         status = TMS_RESULT_SUCCESS;
   705         }
   722         }
   706     TRACE_PRN_FN_EXT;
   723     TRACE_PRN_FN_EXT;
   911         CTelephonyAudioRouting::TAudioOutput taroutput;
   928         CTelephonyAudioRouting::TAudioOutput taroutput;
   912         taroutput = iRouting->Output();
   929         taroutput = iRouting->Output();
   913         status = TMS_RESULT_SUCCESS;
   930         status = TMS_RESULT_SUCCESS;
   914         output = TOTMSOUTPUT(taroutput);
   931         output = TOTMSOUTPUT(taroutput);
   915         }
   932         }
   916 
       
   917     TRACE_PRN_FN_EXT;
   933     TRACE_PRN_FN_EXT;
   918     return status;
   934     return status;
   919     }
   935     }
   920 
   936 
   921 // -----------------------------------------------------------------------------
   937 // -----------------------------------------------------------------------------
   953     if (iRouting)
   969     if (iRouting)
   954         {
   970         {
   955         RBufWriteStream stream;
   971         RBufWriteStream stream;
   956         stream.Open(*outputsbuf);
   972         stream.Open(*outputsbuf);
   957         CleanupClosePushL(stream);
   973         CleanupClosePushL(stream);
   958 
       
   959         TArray<CTelephonyAudioRouting::TAudioOutput>
   974         TArray<CTelephonyAudioRouting::TAudioOutput>
   960                 availableOutputs = iRouting->AvailableOutputs();
   975                 availableOutputs = iRouting->AvailableOutputs();
   961 
       
   962         guint numOfItems = availableOutputs.Count();
   976         guint numOfItems = availableOutputs.Count();
   963         count = numOfItems;
   977         count = numOfItems;
   964         for (guint i = 0; i < numOfItems; i++)
   978         for (guint i = 0; i < numOfItems; i++)
   965             {
   979             {
   966             tmsoutput = TOTMSOUTPUT(availableOutputs[i]);
   980             tmsoutput = TOTMSOUTPUT(availableOutputs[i]);
   967             stream.WriteUint32L(tmsoutput);
   981             stream.WriteUint32L(tmsoutput);
   968             }
   982             }
   969 
       
   970         CleanupStack::PopAndDestroy(&stream);
   983         CleanupStack::PopAndDestroy(&stream);
   971         status = TMS_RESULT_SUCCESS;
   984         status = TMS_RESULT_SUCCESS;
   972         }
   985         }
   973 
   986 
   974     TRACE_PRN_FN_EXT;
   987     TRACE_PRN_FN_EXT;
   975     return status;
   988     return status;
   976     }
   989     }
   977 
       
   978 
       
   979 // From TMSCSPDevSoundObserver
       
   980 
   990 
   981 // -----------------------------------------------------------------------------
   991 // -----------------------------------------------------------------------------
   982 // TMSCallCSAdpt::DownlinkInitCompleted
   992 // TMSCallCSAdpt::DownlinkInitCompleted
   983 // From TMSCSDevSoundObserver
   993 // From TMSCSDevSoundObserver
   984 // -----------------------------------------------------------------------------
   994 // -----------------------------------------------------------------------------
   986 void TMSCallCSAdpt::DownlinkInitCompleted(gint status)
   996 void TMSCallCSAdpt::DownlinkInitCompleted(gint status)
   987     {
   997     {
   988     TRACE_PRN_FN_ENT;
   998     TRACE_PRN_FN_ENT;
   989     if (status == TMS_RESULT_SUCCESS)
   999     if (status == TMS_RESULT_SUCCESS)
   990         {
  1000         {
   991         iDnlinkInitialized = TRUE;
  1001         iDnlState = EInitialized;
   992         }
  1002         }
   993     NotifyClient(iDnlinkStreamId, ECmdDownlinkInitComplete, status);
  1003     NotifyClient(iDnlinkStreamId, ECmdDownlinkInitComplete, status);
   994     TRACE_PRN_FN_EXT;
  1004     TRACE_PRN_FN_EXT;
   995     }
  1005     }
   996 
  1006 
  1002 void TMSCallCSAdpt::UplinkInitCompleted(gint status)
  1012 void TMSCallCSAdpt::UplinkInitCompleted(gint status)
  1003     {
  1013     {
  1004     TRACE_PRN_FN_ENT;
  1014     TRACE_PRN_FN_ENT;
  1005     if (status == TMS_RESULT_SUCCESS)
  1015     if (status == TMS_RESULT_SUCCESS)
  1006         {
  1016         {
  1007         iUplinkInitialized = TRUE;
  1017         iUplState = EInitialized;
  1008         }
  1018         }
  1009     NotifyClient(iUplinkStreamId, ECmdUplinkInitComplete, status);
  1019     NotifyClient(iUplinkStreamId, ECmdUplinkInitComplete, status);
  1010     TRACE_PRN_FN_EXT;
  1020     TRACE_PRN_FN_EXT;
  1011     }
  1021     }
  1012 
  1022 
  1016 // -----------------------------------------------------------------------------
  1026 // -----------------------------------------------------------------------------
  1017 //
  1027 //
  1018 void TMSCallCSAdpt::UplinkActivationCompleted(gint status)
  1028 void TMSCallCSAdpt::UplinkActivationCompleted(gint status)
  1019     {
  1029     {
  1020     TRACE_PRN_FN_ENT;
  1030     TRACE_PRN_FN_ENT;
       
  1031     if (status == TMS_RESULT_SUCCESS)
       
  1032         {
       
  1033         iUplState = EActivated;
       
  1034         }
  1021     NotifyClient(iUplinkStreamId, ECmdUplinkStarted, status);
  1035     NotifyClient(iUplinkStreamId, ECmdUplinkStarted, status);
  1022     TRACE_PRN_FN_EXT;
  1036     TRACE_PRN_FN_EXT;
  1023     }
  1037     }
  1024 
  1038 
  1025 // -----------------------------------------------------------------------------
  1039 // -----------------------------------------------------------------------------
  1028 // -----------------------------------------------------------------------------
  1042 // -----------------------------------------------------------------------------
  1029 //
  1043 //
  1030 void TMSCallCSAdpt::DownlinkActivationCompleted(gint status)
  1044 void TMSCallCSAdpt::DownlinkActivationCompleted(gint status)
  1031     {
  1045     {
  1032     TRACE_PRN_FN_ENT;
  1046     TRACE_PRN_FN_ENT;
       
  1047     if (status == TMS_RESULT_SUCCESS)
       
  1048         {
       
  1049         iDnlState = EActivated;
       
  1050         }
  1033     NotifyClient(iDnlinkStreamId, ECmdDownlinkStarted, status);
  1051     NotifyClient(iDnlinkStreamId, ECmdDownlinkStarted, status);
  1034     TRACE_PRN_FN_EXT;
  1052     TRACE_PRN_FN_EXT;
  1035     }
  1053     }
  1036 
  1054 
  1037 // -----------------------------------------------------------------------------
  1055 // -----------------------------------------------------------------------------