mmserv/tms/tmscallserver/src/callcsadpt.cpp
changeset 0 71ca22bcf22a
child 3 4f62049db6ac
child 12 5a06f39ad45b
equal deleted inserted replaced
-1:000000000000 0:71ca22bcf22a
       
     1 /*
       
     2  * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
       
     3  * All rights reserved.
       
     4  * This component and the accompanying materials are made available
       
     5  * under the terms of "Eclipse Public License v1.0"
       
     6  * which accompanies this distribution, and is available
       
     7  * at the URL "http://www.eclipse.org/legal/epl-v10.html".
       
     8  *
       
     9  * Initial Contributors:
       
    10  * Nokia Corporation - initial contribution.
       
    11  *
       
    12  * Contributors:
       
    13  *
       
    14  * Description: Telephony Multimedia Service
       
    15  *
       
    16  */
       
    17 
       
    18 #include <tms.h>
       
    19 #include <S60FourCC.h>
       
    20 #include <AudioPreference.h>
       
    21 #include <TelephonyAudioRouting.h>
       
    22 #include "csuplink.h"
       
    23 #include "csdownlink.h"
       
    24 #include "callcsadpt.h"
       
    25 #include "tmsutility.h"
       
    26 #include "tmsshared.h"
       
    27 #include "tmsclientserver.h"
       
    28 #include "tarsettings.h"
       
    29 
       
    30 using namespace TMS;
       
    31 
       
    32 // -----------------------------------------------------------------------------
       
    33 // CallCSAdpt::CallCSAdpt
       
    34 //
       
    35 // -----------------------------------------------------------------------------
       
    36 //
       
    37 CallCSAdpt::CallCSAdpt()
       
    38     {
       
    39     TRACE_PRN_FN_ENT;
       
    40 
       
    41     iCSDownlink = NULL;
       
    42     iCSUplink = NULL;
       
    43     iRouting = NULL;
       
    44 
       
    45     TRACE_PRN_FN_EXT;
       
    46     }
       
    47 
       
    48 // -----------------------------------------------------------------------------
       
    49 // CallCSAdpt::~CallCSAdpt
       
    50 //
       
    51 // -----------------------------------------------------------------------------
       
    52 //
       
    53 CallCSAdpt::~CallCSAdpt()
       
    54     {
       
    55     TRACE_PRN_FN_ENT;
       
    56     delete iCSDownlink;
       
    57     delete iCSUplink;
       
    58     delete iRouting;
       
    59     delete iTarSettings;
       
    60 
       
    61     if (iMsgQueueUp.Handle() > 0)
       
    62         {
       
    63         iMsgQueueUp.Close();
       
    64         }
       
    65 
       
    66     if (iMsgQueueDn.Handle() > 0)
       
    67         {
       
    68         iMsgQueueDn.Close();
       
    69         }
       
    70 
       
    71     TRACE_PRN_FN_EXT;
       
    72     }
       
    73 
       
    74 // -----------------------------------------------------------------------------
       
    75 // CallCSAdpt::PostConstruct
       
    76 //
       
    77 // -----------------------------------------------------------------------------
       
    78 //
       
    79 gint CallCSAdpt::PostConstruct()
       
    80     {
       
    81     TRACE_PRN_FN_ENT;
       
    82     gint status(TMS_RESULT_SUCCESS);
       
    83     iNextStreamId = 1;
       
    84     iUplinkInitialized = FALSE;
       
    85     iDnlinkInitialized = FALSE;
       
    86 
       
    87     TRACE_PRN_FN_EXT;
       
    88     return status;
       
    89     }
       
    90 
       
    91 // -----------------------------------------------------------------------------
       
    92 // CallCSAdpt::CreateStream
       
    93 //
       
    94 // -----------------------------------------------------------------------------
       
    95 //
       
    96 gint CallCSAdpt::CreateStream(TMSCallType /*callType*/,
       
    97         TMSStreamType strmType, gint& outStrmId)
       
    98     {
       
    99     TRACE_PRN_FN_ENT;
       
   100     gint status(TMS_RESULT_SUCCESS);
       
   101     switch (strmType)
       
   102         {
       
   103         case TMS_STREAM_UPLINK:
       
   104             status = TMS_RESULT_ALREADY_EXIST;
       
   105             if (!iUplinkInitialized)
       
   106                 {
       
   107                 iUplinkInitialized = TRUE;
       
   108                 iUplinkStreamId = iNextStreamId;
       
   109                 outStrmId = iUplinkStreamId;
       
   110                 iNextStreamId++;
       
   111                 iUplinkInitialized = TRUE;
       
   112                 status = TMS_RESULT_SUCCESS;
       
   113                 }
       
   114             break;
       
   115         case TMS_STREAM_DOWNLINK:
       
   116             status = TMS_RESULT_ALREADY_EXIST;
       
   117             if (!iDnlinkInitialized)
       
   118                 {
       
   119                 iDnlinkInitialized = TRUE;
       
   120                 iDnlinkStreamId = iNextStreamId;
       
   121                 outStrmId = iDnlinkStreamId;
       
   122                 iNextStreamId++;
       
   123                 iDnlinkInitialized = TRUE;
       
   124                 status = TMS_RESULT_SUCCESS;
       
   125                 }
       
   126             break;
       
   127         default:
       
   128             status = TMS_RESULT_STREAM_TYPE_NOT_SUPPORTED;
       
   129             break;
       
   130         }
       
   131     TRACE_PRN_FN_EXT;
       
   132     return status;
       
   133     }
       
   134 
       
   135 // -----------------------------------------------------------------------------
       
   136 // CallCSAdpt::InitStream
       
   137 //
       
   138 // -----------------------------------------------------------------------------
       
   139 //
       
   140 gint CallCSAdpt::InitStreamL(TMSCallType /*callType*/,
       
   141         TMSStreamType strmType, gint strmId, TMSFormatType /*frmtType*/,
       
   142         const RMessage2& aMessage)
       
   143     {
       
   144     TRACE_PRN_FN_ENT;
       
   145     gint status(TMS_RESULT_SUCCESS);
       
   146 
       
   147     switch (strmType)
       
   148         {
       
   149         case TMS_STREAM_UPLINK:
       
   150             if (strmId == iUplinkStreamId)
       
   151                 {
       
   152                 // Open message queue handling client-server communication
       
   153                 if (iMsgQueueUp.Handle() <= 0)
       
   154                     {
       
   155                     // Third argument in TMSCallProxy::InitStream
       
   156                     status = iMsgQueueUp.Open(aMessage, 1);
       
   157                     }
       
   158                 if (status == TMS_RESULT_SUCCESS)
       
   159                     {
       
   160                     TRAP(status, iCSUplink = CSUplink::NewL(*this));
       
   161                     }
       
   162                 iStrmtype = TMS_STREAM_UPLINK;
       
   163                 }
       
   164             else
       
   165                 {
       
   166                 status = TMS_RESULT_DOES_NOT_EXIST;
       
   167                 }
       
   168             break;
       
   169         case TMS_STREAM_DOWNLINK:
       
   170             if (strmId == iDnlinkStreamId)
       
   171                 {
       
   172                 // Open message queue handling client-server communication
       
   173                 if (iMsgQueueDn.Handle() <= 0)
       
   174                     {
       
   175                     // Third argument in TMSCallProxy::InitStream
       
   176                     status = iMsgQueueDn.Open(aMessage, 1);
       
   177                     }
       
   178                 if (status == TMS_RESULT_SUCCESS)
       
   179                     {
       
   180                     TRAP(status, iCSDownlink = CSDownlink::NewL(*this));
       
   181                     if (status == TMS_RESULT_SUCCESS)
       
   182                         {
       
   183                         TRAP(status, iRouting =
       
   184                              CTelephonyAudioRouting::NewL(*this));
       
   185                         if (status == TMS_RESULT_SUCCESS)
       
   186                             {
       
   187                             iTarSettings = TarSettings::NewL();
       
   188                             }
       
   189                         }
       
   190                     }
       
   191                 iStrmtype = TMS_STREAM_DOWNLINK;
       
   192                 }
       
   193             else
       
   194                 {
       
   195                 status = TMS_RESULT_DOES_NOT_EXIST;
       
   196                 }
       
   197             break;
       
   198         default:
       
   199             status = TMS_RESULT_STREAM_TYPE_NOT_SUPPORTED;
       
   200             break;
       
   201         }
       
   202 
       
   203     TRACE_PRN_IF_ERR(status);
       
   204     TRACE_PRN_FN_EXT;
       
   205     return status;
       
   206     }
       
   207 
       
   208 // -----------------------------------------------------------------------------
       
   209 // CallCSAdpt::StartStream
       
   210 //
       
   211 // -----------------------------------------------------------------------------
       
   212 //
       
   213 gint CallCSAdpt::StartStream(TMSCallType /*callType*/,
       
   214         TMSStreamType strmType, gint strmId)
       
   215     {
       
   216     TRACE_PRN_FN_ENT;
       
   217     gint status(TMS_RESULT_SUCCESS);
       
   218     switch (strmType)
       
   219         {
       
   220         case TMS_STREAM_UPLINK:
       
   221             if (iCSUplink && strmId == iUplinkStreamId)
       
   222                 {
       
   223                 iCSUplink->Activate();
       
   224                 }
       
   225             break;
       
   226         case TMS_STREAM_DOWNLINK:
       
   227             if (iCSDownlink && strmId == iDnlinkStreamId)
       
   228                 {
       
   229                 iCSDownlink->Activate();
       
   230                 }
       
   231             break;
       
   232         default:
       
   233             status = TMS_RESULT_STREAM_TYPE_NOT_SUPPORTED;
       
   234             break;
       
   235         }
       
   236     TRACE_PRN_FN_EXT;
       
   237     return status;
       
   238     }
       
   239 
       
   240 // -----------------------------------------------------------------------------
       
   241 // CallCSAdpt::PauseStream
       
   242 //
       
   243 // -----------------------------------------------------------------------------
       
   244 //
       
   245 gint CallCSAdpt::PauseStream(TMSCallType /*callType*/,
       
   246         TMSStreamType /*strmType*/, gint /*strmId*/)
       
   247     {
       
   248     TRACE_PRN_FN_ENT;
       
   249     gint status(TMS_RESULT_SUCCESS);
       
   250     TRACE_PRN_FN_EXT;
       
   251     return status;
       
   252     }
       
   253 
       
   254 // -----------------------------------------------------------------------------
       
   255 // CallCSAdpt::StopStream
       
   256 //
       
   257 // -----------------------------------------------------------------------------
       
   258 //
       
   259 gint CallCSAdpt::StopStream(TMSCallType /*callType*/, TMSStreamType strmType,
       
   260         gint strmId)
       
   261     {
       
   262     TRACE_PRN_FN_ENT;
       
   263     gint status(TMS_RESULT_SUCCESS);
       
   264     switch (strmType)
       
   265         {
       
   266         case TMS_STREAM_UPLINK:
       
   267             if (iCSUplink && strmId == iUplinkStreamId)
       
   268                 {
       
   269                 iCSUplink->Deactivate();
       
   270                 NotifyClient(iUplinkStreamId, ECmdUplinkInitComplete,
       
   271                         status, 0);
       
   272                 }
       
   273             break;
       
   274         case TMS_STREAM_DOWNLINK:
       
   275             if (iCSDownlink && strmId == iDnlinkStreamId)
       
   276                 {
       
   277                 iCSDownlink->Deactivate();
       
   278                 NotifyClient(iDnlinkStreamId, ECmdDownlinkInitComplete,
       
   279                         status, 0);
       
   280                 }
       
   281             break;
       
   282         default:
       
   283             status = TMS_RESULT_STREAM_TYPE_NOT_SUPPORTED;
       
   284             break;
       
   285         }
       
   286     TRACE_PRN_FN_EXT;
       
   287     return status;
       
   288     }
       
   289 
       
   290 // -----------------------------------------------------------------------------
       
   291 // CallCSAdpt::DeinitStream
       
   292 //
       
   293 // -----------------------------------------------------------------------------
       
   294 //
       
   295 gint CallCSAdpt::DeinitStream(TMSCallType /*callType*/,
       
   296         TMSStreamType strmType, gint strmId)
       
   297     {
       
   298     TRACE_PRN_FN_ENT;
       
   299     gint status(TMS_RESULT_SUCCESS);
       
   300     switch (strmType)
       
   301         {
       
   302         case TMS_STREAM_UPLINK:
       
   303             if (iCSUplink && strmId == iUplinkStreamId)
       
   304                 {
       
   305                 iCSUplink->Deactivate();
       
   306                 iUplinkInitialized = FALSE;
       
   307                 NotifyClient(iUplinkStreamId, ECmdUplinkDeInitComplete,
       
   308                         status, 0);
       
   309                 }
       
   310             break;
       
   311         case TMS_STREAM_DOWNLINK:
       
   312             if (iCSDownlink && strmId == iDnlinkStreamId)
       
   313                 {
       
   314                 iCSDownlink->Deactivate();
       
   315                 iDnlinkInitialized = FALSE;
       
   316                 NotifyClient(iDnlinkStreamId, ECmdDownlinkDeInitComplete,
       
   317                         status, 0);
       
   318                 }
       
   319             break;
       
   320         default:
       
   321             status = TMS_RESULT_STREAM_TYPE_NOT_SUPPORTED;
       
   322             break;
       
   323         }
       
   324     TRACE_PRN_FN_EXT;
       
   325     return status;
       
   326     }
       
   327 
       
   328 // -----------------------------------------------------------------------------
       
   329 // CallCSAdpt::DeleteStream
       
   330 //
       
   331 // -----------------------------------------------------------------------------
       
   332 //
       
   333 gint CallCSAdpt::DeleteStream(TMSCallType /*callType*/,
       
   334         TMSStreamType strmType, gint strmId)
       
   335     {
       
   336     TRACE_PRN_FN_ENT;
       
   337     gint status(TMS_RESULT_SUCCESS);
       
   338     switch (strmType)
       
   339         {
       
   340         case TMS_STREAM_UPLINK:
       
   341             if (strmId == iUplinkStreamId)
       
   342                 {
       
   343                 iUplinkStreamId = -1;
       
   344                 iUplinkInitialized = FALSE;
       
   345                 }
       
   346             break;
       
   347         case TMS_STREAM_DOWNLINK:
       
   348             if (strmId == iDnlinkStreamId)
       
   349                 {
       
   350                 iDnlinkStreamId = -1;
       
   351                 iDnlinkInitialized = FALSE;
       
   352                 }
       
   353             break;
       
   354         default:
       
   355             status = TMS_RESULT_STREAM_TYPE_NOT_SUPPORTED;
       
   356             break;
       
   357         }
       
   358     TRACE_PRN_FN_EXT;
       
   359     return status;
       
   360     }
       
   361 
       
   362 // -----------------------------------------------------------------------------
       
   363 // CallCSAdpt::DataXferBufferEmptied
       
   364 //
       
   365 // -----------------------------------------------------------------------------
       
   366 //
       
   367 gint CallCSAdpt::DataXferBufferEmptied(TMSCallType /*callType*/,
       
   368         TMSStreamType /*strmType*/, gint /*strmId*/)
       
   369     {
       
   370     TRACE_PRN_FN_ENT;
       
   371     gint status(TMS_RESULT_FEATURE_NOT_SUPPORTED);
       
   372     TRACE_PRN_FN_EXT;
       
   373     return status;
       
   374     }
       
   375 
       
   376 // -----------------------------------------------------------------------------
       
   377 // CallCSAdpt::DataXferBufferFilled
       
   378 //
       
   379 // -----------------------------------------------------------------------------
       
   380 //
       
   381 gint CallCSAdpt::DataXferBufferFilled(TMSCallType /*callType*/,
       
   382         TMSStreamType /*strmType*/, gint /*strmId*/, guint /*datasize*/)
       
   383     {
       
   384     TRACE_PRN_FN_ENT;
       
   385     gint status(TMS_RESULT_FEATURE_NOT_SUPPORTED);
       
   386     TRACE_PRN_FN_EXT;
       
   387     return status;
       
   388     }
       
   389 
       
   390 // -----------------------------------------------------------------------------
       
   391 // CallCSAdpt::GetDataXferBufferHndl
       
   392 //
       
   393 // -----------------------------------------------------------------------------
       
   394 //
       
   395 gint CallCSAdpt::GetDataXferBufferHndl(const TMSCallType /*callType*/,
       
   396         const TMSStreamType /*strmType*/, const gint /*strmId*/,
       
   397         const guint32 /*key*/, RChunk& /*chunk*/)
       
   398     {
       
   399     TRACE_PRN_FN_ENT;
       
   400     gint status(TMS_RESULT_FEATURE_NOT_SUPPORTED);
       
   401     TRACE_PRN_FN_EXT;
       
   402     return status;
       
   403     }
       
   404 
       
   405 // -----------------------------------------------------------------------------
       
   406 // CallCSAdpt::GetMaxVolume
       
   407 //
       
   408 // -----------------------------------------------------------------------------
       
   409 //
       
   410 gint CallCSAdpt::GetMaxVolume(guint& volume)
       
   411     {
       
   412     TRACE_PRN_FN_ENT;
       
   413     gint status(TMS_RESULT_ILLEGAL_OPERATION);
       
   414     if (iCSDownlink && iDnlinkInitialized)
       
   415         {
       
   416         volume = iCSDownlink->MaxVolume();
       
   417         status = TMS_RESULT_SUCCESS;
       
   418         }
       
   419     TRACE_PRN_FN_EXT;
       
   420     return status;
       
   421     }
       
   422 
       
   423 // -----------------------------------------------------------------------------
       
   424 // CallCSAdpt::SetVolume
       
   425 //
       
   426 // -----------------------------------------------------------------------------
       
   427 //
       
   428 gint CallCSAdpt::SetVolume(const guint volume)
       
   429     {
       
   430     TRACE_PRN_FN_ENT;
       
   431     gint status(TMS_RESULT_ILLEGAL_OPERATION);
       
   432     if (iCSDownlink && iDnlinkInitialized)
       
   433         {
       
   434         iCSDownlink->SetVolume(volume);
       
   435         status = TMS_RESULT_SUCCESS;
       
   436         NotifyClient(iDnlinkStreamId, ECmdSetVolume, status, 0);
       
   437         }
       
   438     TRACE_PRN_FN_EXT;
       
   439     return status;
       
   440     }
       
   441 
       
   442 // -----------------------------------------------------------------------------
       
   443 // CallCSAdpt::GetVolume
       
   444 //
       
   445 // -----------------------------------------------------------------------------
       
   446 //
       
   447 gint CallCSAdpt::GetVolume(guint& volume)
       
   448     {
       
   449     TRACE_PRN_FN_ENT;
       
   450     gint status(TMS_RESULT_ILLEGAL_OPERATION);
       
   451     if (iCSDownlink && iDnlinkInitialized)
       
   452         {
       
   453         volume = iCSDownlink->Volume();
       
   454         status = TMS_RESULT_SUCCESS;
       
   455         }
       
   456 
       
   457     TRACE_PRN_FN_EXT;
       
   458     return status;
       
   459     }
       
   460 
       
   461 // -----------------------------------------------------------------------------
       
   462 // CallCSAdpt::GetMaxGain
       
   463 //
       
   464 // -----------------------------------------------------------------------------
       
   465 //
       
   466 gint CallCSAdpt::GetMaxGain(guint& gain)
       
   467     {
       
   468     TRACE_PRN_FN_ENT;
       
   469     gint status(TMS_RESULT_ILLEGAL_OPERATION);
       
   470     if (iCSUplink && iUplinkInitialized)
       
   471         {
       
   472         gain = iCSUplink->MaxGain();
       
   473         status = TMS_RESULT_SUCCESS;
       
   474         }
       
   475     TRACE_PRN_FN_EXT;
       
   476     return status;
       
   477     }
       
   478 
       
   479 // -----------------------------------------------------------------------------
       
   480 // CallCSAdpt::SetGain
       
   481 //
       
   482 // -----------------------------------------------------------------------------
       
   483 //
       
   484 gint CallCSAdpt::SetGain(const guint gain)
       
   485     {
       
   486     TRACE_PRN_FN_ENT;
       
   487     gint status(TMS_RESULT_ILLEGAL_OPERATION);
       
   488     if (iUplinkInitialized)
       
   489         {
       
   490         iCSUplink->SetGain(gain);
       
   491         status = TMS_RESULT_SUCCESS;
       
   492         NotifyClient(iUplinkInitialized, ECmdSetGain, status, 0);
       
   493         }
       
   494     TRACE_PRN_FN_EXT;
       
   495     return status;
       
   496     }
       
   497 
       
   498 // -----------------------------------------------------------------------------
       
   499 // CallCSAdpt::GetGain
       
   500 //
       
   501 // -----------------------------------------------------------------------------
       
   502 //
       
   503 gint CallCSAdpt::GetGain(guint& gain)
       
   504     {
       
   505     TRACE_PRN_FN_ENT;
       
   506     gint status(TMS_RESULT_ILLEGAL_OPERATION);
       
   507     if (iCSUplink && iUplinkInitialized)
       
   508         {
       
   509         gain = iCSUplink->Gain();
       
   510         status = TMS_RESULT_SUCCESS;
       
   511         }
       
   512     TRACE_PRN_FN_EXT;
       
   513     return status;
       
   514     }
       
   515 
       
   516 // -----------------------------------------------------------------------------
       
   517 // CallCSAdpt::GetGlobalMaxVolume
       
   518 //
       
   519 // -----------------------------------------------------------------------------
       
   520 //
       
   521 gint CallCSAdpt::GetGlobalMaxVolume(guint& volume)
       
   522     {
       
   523     TRACE_PRN_FN_ENT;
       
   524     gint status(TMS_RESULT_ILLEGAL_OPERATION);
       
   525     if (iCSDownlink && iDnlinkInitialized)
       
   526         {
       
   527         volume = iCSDownlink->MaxVolume();
       
   528         status = TMS_RESULT_SUCCESS;
       
   529         }
       
   530     TRACE_PRN_FN_EXT;
       
   531     return status;
       
   532     }
       
   533 
       
   534 // -----------------------------------------------------------------------------
       
   535 // CallCSAdpt::SetGlobalVolume
       
   536 //
       
   537 // -----------------------------------------------------------------------------
       
   538 //
       
   539 gint CallCSAdpt::SetGlobalVolume(const guint volume)
       
   540     {
       
   541     TRACE_PRN_FN_ENT;
       
   542     gint status(TMS_RESULT_SUCCESS);
       
   543 
       
   544     iGlobalVol = volume;
       
   545     if (iCSDownlink && iDnlinkInitialized)
       
   546         {
       
   547         iCSDownlink->SetVolume(volume);
       
   548         status = TMS_RESULT_SUCCESS;
       
   549         }
       
   550     TRACE_PRN_FN_EXT;
       
   551     return status;
       
   552     }
       
   553 
       
   554 // -----------------------------------------------------------------------------
       
   555 // CallCSAdpt::GetGlobalVolume
       
   556 //
       
   557 // -----------------------------------------------------------------------------
       
   558 //
       
   559 gint CallCSAdpt::GetGlobalVolume(guint& volume)
       
   560     {
       
   561     TRACE_PRN_FN_ENT;
       
   562     gint status(TMS_RESULT_ILLEGAL_OPERATION);
       
   563     if (iCSDownlink && iDnlinkInitialized)
       
   564         {
       
   565         volume = iCSDownlink->Volume();
       
   566         status = TMS_RESULT_SUCCESS;
       
   567         }
       
   568 
       
   569     TRACE_PRN_FN_EXT;
       
   570     return status;
       
   571     }
       
   572 
       
   573 // -----------------------------------------------------------------------------
       
   574 // CallCSAdpt::GetMaxGain
       
   575 //
       
   576 // -----------------------------------------------------------------------------
       
   577 //
       
   578 gint CallCSAdpt::GetGlobalMaxGain(guint& gain)
       
   579     {
       
   580     TRACE_PRN_FN_ENT;
       
   581     gint status(TMS_RESULT_ILLEGAL_OPERATION);
       
   582     if (iCSUplink && iUplinkInitialized)
       
   583         {
       
   584         gain = iCSUplink->MaxGain();
       
   585         status = TMS_RESULT_SUCCESS;
       
   586         }
       
   587     TRACE_PRN_FN_EXT;
       
   588     return status;
       
   589     }
       
   590 
       
   591 // -----------------------------------------------------------------------------
       
   592 // CallCSAdpt::SetGain
       
   593 //
       
   594 // -----------------------------------------------------------------------------
       
   595 //
       
   596 gint CallCSAdpt::SetGlobalGain(const guint gain)
       
   597     {
       
   598     TRACE_PRN_FN_ENT;
       
   599     gint status(TMS_RESULT_SUCCESS);
       
   600 
       
   601     iGlobalGain = gain;
       
   602     if (iCSUplink && iUplinkInitialized)
       
   603         {
       
   604         iCSUplink->SetGain(gain);
       
   605         status = TMS_RESULT_SUCCESS;
       
   606         }
       
   607     TRACE_PRN_FN_EXT;
       
   608     return status;
       
   609     }
       
   610 
       
   611 // -----------------------------------------------------------------------------
       
   612 // CallCSAdpt::GetGlobalGain
       
   613 //
       
   614 // -----------------------------------------------------------------------------
       
   615 //
       
   616 gint CallCSAdpt::GetGlobalGain(guint& gain)
       
   617     {
       
   618     TRACE_PRN_FN_ENT;
       
   619     gint status(TMS_RESULT_ILLEGAL_OPERATION);
       
   620     if (iCSUplink && iUplinkInitialized)
       
   621         {
       
   622         gain = iCSUplink->Gain();
       
   623         status = TMS_RESULT_SUCCESS;
       
   624         }
       
   625     TRACE_PRN_FN_EXT;
       
   626     return status;
       
   627     }
       
   628 
       
   629 // -----------------------------------------------------------------------------
       
   630 // CallCSAdpt::GetCodecMode
       
   631 //
       
   632 // -----------------------------------------------------------------------------
       
   633 //
       
   634 gint CallCSAdpt::GetCodecMode(const TMSFormatType /*fmttype*/,
       
   635         const TMSStreamType /*strmtype*/, gint& /*mode*/)
       
   636     {
       
   637     TRACE_PRN_FN_ENT;
       
   638     gint status(TMS_RESULT_FEATURE_NOT_SUPPORTED);
       
   639     TRACE_PRN_FN_EXT;
       
   640     return status;
       
   641     }
       
   642 
       
   643 // -----------------------------------------------------------------------------
       
   644 // CallCSAdpt::SetCodecMode
       
   645 //
       
   646 // -----------------------------------------------------------------------------
       
   647 //
       
   648 gint CallCSAdpt::SetCodecMode(const TMSFormatType /*fmttype*/,
       
   649         const TMSStreamType /*strmtype*/, const gint /*mode*/)
       
   650     {
       
   651     TRACE_PRN_FN_ENT;
       
   652     gint status(TMS_RESULT_FEATURE_NOT_SUPPORTED);
       
   653     TRACE_PRN_FN_EXT;
       
   654     return status;
       
   655     }
       
   656 
       
   657 // -----------------------------------------------------------------------------
       
   658 // CallCSAdpt::GetSupportedBitRatesCount
       
   659 //
       
   660 // -----------------------------------------------------------------------------
       
   661 //
       
   662 gint CallCSAdpt::GetSupportedBitRatesCount(guint& /*count*/)
       
   663     {
       
   664     TRACE_PRN_FN_ENT;
       
   665     gint status(TMS_RESULT_FEATURE_NOT_SUPPORTED);
       
   666     TRACE_PRN_FN_EXT;
       
   667     return status;
       
   668     }
       
   669 
       
   670 // -----------------------------------------------------------------------------
       
   671 // CallCSAdpt::GetSupportedBitRates
       
   672 //
       
   673 // -----------------------------------------------------------------------------
       
   674 //
       
   675 gint CallCSAdpt::GetSupportedBitRates(CBufFlat*& brbuffer)
       
   676     {
       
   677     TRACE_PRN_FN_ENT;
       
   678     TRAPD(status, GetSupportedBitRatesL(brbuffer));
       
   679     TRACE_PRN_FN_EXT;
       
   680     return status;
       
   681     }
       
   682 
       
   683 // -----------------------------------------------------------------------------
       
   684 // CallCSAdpt::GetSupportedBitRatesL
       
   685 //
       
   686 // GetSupportedBitRates implementation which can leave.
       
   687 // -----------------------------------------------------------------------------
       
   688 //
       
   689 void CallCSAdpt::GetSupportedBitRatesL(CBufFlat*& /*brbuffer*/)
       
   690     {
       
   691     User::Leave(TMS_RESULT_FEATURE_NOT_SUPPORTED);
       
   692     }
       
   693 
       
   694 // -----------------------------------------------------------------------------
       
   695 // CallCSAdpt::GetBitRate
       
   696 //
       
   697 // -----------------------------------------------------------------------------
       
   698 //
       
   699 gint CallCSAdpt::GetBitRate(guint& /*bitrate*/)
       
   700     {
       
   701     TRACE_PRN_FN_ENT;
       
   702     gint status(TMS_RESULT_FEATURE_NOT_SUPPORTED);
       
   703     TRACE_PRN_FN_EXT;
       
   704     return status;
       
   705     }
       
   706 
       
   707 // -----------------------------------------------------------------------------
       
   708 // CallCSAdpt::SetBitRate
       
   709 //
       
   710 // -----------------------------------------------------------------------------
       
   711 //
       
   712 gint CallCSAdpt::SetBitRate(const guint /*bitrate*/)
       
   713     {
       
   714     TRACE_PRN_FN_ENT;
       
   715     gint status(TMS_RESULT_FEATURE_NOT_SUPPORTED);
       
   716     TRACE_PRN_FN_EXT;
       
   717     return status;
       
   718     }
       
   719 
       
   720 // -----------------------------------------------------------------------------
       
   721 // CallCSAdpt::GetVAD
       
   722 //
       
   723 // -----------------------------------------------------------------------------
       
   724 //
       
   725 gint CallCSAdpt::GetVAD(const TMSFormatType /*fmttype*/, gboolean& /*vad*/)
       
   726     {
       
   727     TRACE_PRN_FN_ENT;
       
   728     gint status(TMS_RESULT_FEATURE_NOT_SUPPORTED);
       
   729     TRACE_PRN_FN_EXT;
       
   730     return status;
       
   731     }
       
   732 
       
   733 // -----------------------------------------------------------------------------
       
   734 // CallCSAdpt::SetVAD
       
   735 //
       
   736 // -----------------------------------------------------------------------------
       
   737 //
       
   738 gint CallCSAdpt::SetVAD(const TMSFormatType /*fmttype*/, const gboolean /*vad*/)
       
   739     {
       
   740     TRACE_PRN_FN_ENT;
       
   741     gint status(TMS_RESULT_FEATURE_NOT_SUPPORTED);
       
   742     TRACE_PRN_FN_EXT;
       
   743     return status;
       
   744     }
       
   745 
       
   746 // -----------------------------------------------------------------------------
       
   747 // CallCSAdpt::GetCNG
       
   748 //
       
   749 // -----------------------------------------------------------------------------
       
   750 //
       
   751 gint CallCSAdpt::GetCNG(const TMSFormatType /*fmttype*/, gboolean& /*cng*/)
       
   752     {
       
   753     TRACE_PRN_FN_ENT;
       
   754     gint status(TMS_RESULT_FEATURE_NOT_SUPPORTED);
       
   755     TRACE_PRN_FN_EXT;
       
   756     return status;
       
   757     }
       
   758 
       
   759 // -----------------------------------------------------------------------------
       
   760 // CallCSAdpt::SetCNG
       
   761 //
       
   762 // -----------------------------------------------------------------------------
       
   763 //
       
   764 gint CallCSAdpt::SetCNG(const TMSFormatType /*fmttype*/, const gboolean /*cng*/)
       
   765     {
       
   766     TRACE_PRN_FN_ENT;
       
   767     gint status(TMS_RESULT_FEATURE_NOT_SUPPORTED);
       
   768     TRACE_PRN_FN_EXT;
       
   769     return status;
       
   770     }
       
   771 
       
   772 // -----------------------------------------------------------------------------
       
   773 // CallCSAdpt::GetPlc
       
   774 //
       
   775 // -----------------------------------------------------------------------------
       
   776 //
       
   777 gint CallCSAdpt::GetPlc(const TMSFormatType /*fmttype*/, gboolean& /*plc*/)
       
   778     {
       
   779     TRACE_PRN_FN_ENT;
       
   780     gint status(TMS_RESULT_FEATURE_NOT_SUPPORTED);
       
   781     TRACE_PRN_FN_EXT;
       
   782     return status;
       
   783     }
       
   784 
       
   785 // -----------------------------------------------------------------------------
       
   786 // CallCSAdpt::SetPlc
       
   787 //
       
   788 // -----------------------------------------------------------------------------
       
   789 //
       
   790 gint CallCSAdpt::SetPlc(const TMSFormatType /*fmttype*/, const gboolean /*plc*/)
       
   791     {
       
   792     TRACE_PRN_FN_ENT;
       
   793     gint status(TMS_RESULT_FEATURE_NOT_SUPPORTED);
       
   794     TRACE_PRN_FN_EXT;
       
   795     return status;
       
   796     }
       
   797 
       
   798 // -----------------------------------------------------------------------------
       
   799 // CallCSAdpt::SetOutput
       
   800 //
       
   801 // -----------------------------------------------------------------------------
       
   802 //
       
   803 gint CallCSAdpt::SetOutput(TMSAudioOutput output)
       
   804     {
       
   805     TRACE_PRN_FN_ENT;
       
   806     gint status(TMS_RESULT_UNINITIALIZED_OBJECT);
       
   807 
       
   808     if (iRouting)
       
   809         {
       
   810         CTelephonyAudioRouting::TAudioOutput taroutput = TOTAROUTPUT(output);
       
   811         TRAP(status, iRouting->SetOutputL(taroutput));
       
   812         if (status == KErrArgument)
       
   813             {
       
   814             status = TMS_RESULT_INVALID_ARGUMENT;
       
   815             }
       
   816         else
       
   817             {
       
   818             status = TMS_RESULT_SUCCESS;
       
   819             }
       
   820         }
       
   821 
       
   822     TRACE_PRN_FN_EXT;
       
   823     return status;
       
   824     }
       
   825 
       
   826 // -----------------------------------------------------------------------------
       
   827 // CallCSAdpt::GetOutput
       
   828 //
       
   829 // -----------------------------------------------------------------------------
       
   830 //
       
   831 gint CallCSAdpt::GetOutput(TMSAudioOutput& output)
       
   832     {
       
   833     TRACE_PRN_FN_ENT;
       
   834     gint status(TMS_RESULT_UNINITIALIZED_OBJECT);
       
   835 
       
   836     if (iRouting)
       
   837         {
       
   838         CTelephonyAudioRouting::TAudioOutput taroutput;
       
   839         taroutput = iRouting->Output();
       
   840         status = TMS_RESULT_SUCCESS;
       
   841         output = TOTMSOUTPUT(taroutput);
       
   842         }
       
   843 
       
   844     TRACE_PRN_FN_EXT;
       
   845     return status;
       
   846     }
       
   847 
       
   848 // -----------------------------------------------------------------------------
       
   849 // CallCSAdpt::GetPreviousOutput
       
   850 //
       
   851 // -----------------------------------------------------------------------------
       
   852 //
       
   853 gint CallCSAdpt::GetPreviousOutput(TMSAudioOutput& output)
       
   854     {
       
   855     TRACE_PRN_FN_ENT;
       
   856     gint status(TMS_RESULT_UNINITIALIZED_OBJECT);
       
   857 
       
   858     if (iRouting)
       
   859         {
       
   860         CTelephonyAudioRouting::TAudioOutput taroutput;
       
   861         taroutput = iRouting->PreviousOutput();
       
   862         status = TMS_RESULT_SUCCESS;
       
   863         output = TOTMSOUTPUT(taroutput);
       
   864         }
       
   865     TRACE_PRN_FN_EXT;
       
   866     return status;
       
   867     }
       
   868 
       
   869 // -----------------------------------------------------------------------------
       
   870 // CallCSAdpt::GetAvailableOutputsL
       
   871 //
       
   872 // -----------------------------------------------------------------------------
       
   873 //
       
   874 gint CallCSAdpt::GetAvailableOutputsL(gint& count, CBufFlat*& outputsbuffer)
       
   875     {
       
   876     TRACE_PRN_FN_ENT;
       
   877     gint status(TMS_RESULT_UNINITIALIZED_OBJECT);
       
   878     TMSAudioOutput tmsoutput;
       
   879 
       
   880     if (iRouting)
       
   881         {
       
   882         RBufWriteStream stream;
       
   883         stream.Open(*outputsbuffer);
       
   884         CleanupClosePushL(stream);
       
   885 
       
   886         TArray<CTelephonyAudioRouting::TAudioOutput> availableOutputs =
       
   887                 iRouting->AvailableOutputs();
       
   888 
       
   889         guint numOfItems = availableOutputs.Count();
       
   890         count = numOfItems;
       
   891         for (guint i = 0; i < numOfItems; i++)
       
   892             {
       
   893             tmsoutput = TOTMSOUTPUT(availableOutputs[i]);
       
   894             stream.WriteUint32L(tmsoutput);
       
   895             //TRACE_PRN_N1(_L("TMS->CallIPAdpt: outputs: [%d]"), availableOutputs[i]);
       
   896             }
       
   897 
       
   898         CleanupStack::PopAndDestroy(&stream);
       
   899         status = TMS_RESULT_SUCCESS;
       
   900         }
       
   901 
       
   902     TRACE_PRN_FN_EXT;
       
   903     return status;
       
   904     }
       
   905 
       
   906 
       
   907 // From MCSPDevSoundObserver
       
   908 
       
   909 // -----------------------------------------------------------------------------
       
   910 // CallCSAdpt::DownlinkInitCompleted
       
   911 //
       
   912 // -----------------------------------------------------------------------------
       
   913 //
       
   914 void CallCSAdpt::DownlinkInitCompleted(TInt status)
       
   915     {
       
   916     TRACE_PRN_FN_ENT;
       
   917     NotifyClient(iDnlinkStreamId, ECmdDownlinkInitComplete, status, 0);
       
   918     TRACE_PRN_FN_EXT;
       
   919     }
       
   920 
       
   921 // -----------------------------------------------------------------------------
       
   922 // CallCSAdpt::UplinkInitCompleted
       
   923 //
       
   924 // -----------------------------------------------------------------------------
       
   925 //
       
   926 void CallCSAdpt::UplinkInitCompleted(TInt status)
       
   927     {
       
   928     TRACE_PRN_FN_ENT;
       
   929     NotifyClient(iUplinkStreamId, ECmdUplinkInitComplete, status, 0);
       
   930     TRACE_PRN_FN_EXT;
       
   931     }
       
   932 
       
   933 // -----------------------------------------------------------------------------
       
   934 // CallCSAdpt::UplinkActivatedSuccessfully
       
   935 //
       
   936 // -----------------------------------------------------------------------------
       
   937 //
       
   938 void CallCSAdpt::UplinkActivatedSuccessfully()
       
   939     {
       
   940     TRACE_PRN_FN_ENT;
       
   941     NotifyClient(iUplinkStreamId, ECmdUplinkStarted, KErrNone, 0);
       
   942     TRACE_PRN_FN_EXT;
       
   943     }
       
   944 
       
   945 // -----------------------------------------------------------------------------
       
   946 // CallCSAdpt::DownlinkActivatedSuccessfully
       
   947 //
       
   948 // -----------------------------------------------------------------------------
       
   949 //
       
   950 void CallCSAdpt::DownlinkActivatedSuccessfully()
       
   951     {
       
   952     TRACE_PRN_FN_ENT;
       
   953     NotifyClient(iDnlinkStreamId, ECmdDownlinkStarted, KErrNone, 0);
       
   954     TRACE_PRN_FN_EXT;
       
   955     }
       
   956 
       
   957 // -----------------------------------------------------------------------------
       
   958 // CallCSAdpt::UplinkActivationFailed
       
   959 //
       
   960 // -----------------------------------------------------------------------------
       
   961 //
       
   962 void CallCSAdpt::UplinkActivationFailed()
       
   963     {
       
   964     TRACE_PRN_FN_ENT;
       
   965     NotifyClient(iUplinkStreamId, ECmdUplinkStarted, TMS_RESULT_FATAL_ERROR, 0);
       
   966     TRACE_PRN_FN_EXT;
       
   967     }
       
   968 
       
   969 // -----------------------------------------------------------------------------
       
   970 // CallCSAdpt::DownlinkActivationFailed
       
   971 //
       
   972 // -----------------------------------------------------------------------------
       
   973 //
       
   974 void CallCSAdpt::DownlinkActivationFailed()
       
   975     {
       
   976     TRACE_PRN_FN_ENT;
       
   977     NotifyClient(iDnlinkStreamId, ECmdDownlinkStarted,
       
   978             TMS_RESULT_FATAL_ERROR, 0);
       
   979     TRACE_PRN_FN_EXT;
       
   980     }
       
   981 
       
   982 // -----------------------------------------------------------------------------
       
   983 // CallCSAdpt::AvailableOutputsChanged
       
   984 //
       
   985 // -----------------------------------------------------------------------------
       
   986 //
       
   987 void CallCSAdpt::AvailableOutputsChanged(
       
   988         CTelephonyAudioRouting& /*aTelephonyAudioRouting*/)
       
   989     {
       
   990     TRACE_PRN_FN_ENT;
       
   991     TRoutingMsgBufPckg pckg;
       
   992     pckg().iEvent = TMS_EVENT_ROUTING_AVAIL_OUTPUTS_CHANGED;
       
   993     iTarSettings->SetTar(pckg, ETrue);
       
   994     TRACE_PRN_FN_EXT;
       
   995     }
       
   996 
       
   997 // -----------------------------------------------------------------------------
       
   998 // CallCSAdpt::OutputChanged
       
   999 //
       
  1000 // -----------------------------------------------------------------------------
       
  1001 //
       
  1002 void CallCSAdpt::OutputChanged(CTelephonyAudioRouting& aTelephonyAudioRouting)
       
  1003     {
       
  1004     TRACE_PRN_FN_ENT;
       
  1005     TRoutingMsgBufPckg pckg;
       
  1006     pckg().iEvent = TMS_EVENT_ROUTING_OUTPUT_CHANGED;
       
  1007     pckg().iOutput = TOTMSOUTPUT(aTelephonyAudioRouting.Output());
       
  1008     iTarSettings->SetTar(pckg, ETrue);
       
  1009     TRACE_PRN_FN_EXT;
       
  1010     }
       
  1011 
       
  1012 // -----------------------------------------------------------------------------
       
  1013 // CallCSAdpt::SetOutputComplete
       
  1014 //
       
  1015 // -----------------------------------------------------------------------------
       
  1016 //
       
  1017 void CallCSAdpt::SetOutputComplete(
       
  1018         CTelephonyAudioRouting& aTelephonyAudioRouting, gint /*aError*/)
       
  1019     {
       
  1020     TRACE_PRN_FN_ENT;
       
  1021     TRoutingMsgBufPckg pckg;
       
  1022     pckg().iEvent = TMS_EVENT_ROUTING_SET_OUTPUT_COMPLETE;
       
  1023     pckg().iOutput = TOTMSOUTPUT(aTelephonyAudioRouting.Output());
       
  1024     if (iTarSettings)
       
  1025         {
       
  1026         iTarSettings->SetTar(pckg, ETrue);
       
  1027         }
       
  1028     //TRACE_PRN_IF_ERR(aError);
       
  1029     TRACE_PRN_FN_EXT;
       
  1030     }
       
  1031 
       
  1032 // -----------------------------------------------------------------------------
       
  1033 // CallCSAdpt::NotifyClient
       
  1034 //
       
  1035 // -----------------------------------------------------------------------------
       
  1036 //
       
  1037 void CallCSAdpt::NotifyClient(const gint strmId, const gint aCommand,
       
  1038         const gint aStatus, const gint64 /*aInt64*/)
       
  1039     {
       
  1040     iMsgBuffer.iRequest = aCommand;
       
  1041     iMsgBuffer.iStatus = aStatus;
       
  1042 
       
  1043     if (strmId == iUplinkStreamId)
       
  1044         {
       
  1045         iMsgQueueUp.Send(iMsgBuffer);
       
  1046         }
       
  1047     else if (strmId == iDnlinkStreamId)
       
  1048         {
       
  1049         iMsgQueueDn.Send(iMsgBuffer);
       
  1050         }
       
  1051     }
       
  1052 
       
  1053 // End of file