mmserv/tms/tmscallserver/src/callcsadpt.cpp
changeset 12 5a06f39ad45b
parent 0 71ca22bcf22a
--- a/mmserv/tms/tmscallserver/src/callcsadpt.cpp	Tue Feb 02 01:08:46 2010 +0200
+++ b/mmserv/tms/tmscallserver/src/callcsadpt.cpp	Fri Apr 16 15:29:42 2010 +0300
@@ -26,37 +26,46 @@
 #include "tmsshared.h"
 #include "tmsclientserver.h"
 #include "tarsettings.h"
+#include "cpeaudiodtmftoneplayer.h"
+#include "cspdtmfprovider.h"
+#include "dtmfnotifier.h"
 
 using namespace TMS;
 
 // -----------------------------------------------------------------------------
-// CallCSAdpt::CallCSAdpt
+// TMSCallCSAdpt::TMSCallCSAdpt
 //
 // -----------------------------------------------------------------------------
 //
-CallCSAdpt::CallCSAdpt()
+TMSCallCSAdpt::TMSCallCSAdpt()
     {
     TRACE_PRN_FN_ENT;
 
     iCSDownlink = NULL;
     iCSUplink = NULL;
     iRouting = NULL;
+    iDTMFDnlinkPlayer = NULL;
+    iDTMFUplinkPlayer = NULL;
+    iDTMFNotifier = NULL;
 
     TRACE_PRN_FN_EXT;
     }
 
 // -----------------------------------------------------------------------------
-// CallCSAdpt::~CallCSAdpt
+// TMSCallCSAdpt::~TMSCallCSAdpt
 //
 // -----------------------------------------------------------------------------
 //
-CallCSAdpt::~CallCSAdpt()
+TMSCallCSAdpt::~TMSCallCSAdpt()
     {
     TRACE_PRN_FN_ENT;
     delete iCSDownlink;
     delete iCSUplink;
     delete iRouting;
     delete iTarSettings;
+    delete iDTMFDnlinkPlayer;
+    delete iDTMFUplinkPlayer;
+    delete iDTMFNotifier;
 
     if (iMsgQueueUp.Handle() > 0)
         {
@@ -72,11 +81,11 @@
     }
 
 // -----------------------------------------------------------------------------
-// CallCSAdpt::PostConstruct
+// TMSCallCSAdpt::PostConstruct
 //
 // -----------------------------------------------------------------------------
 //
-gint CallCSAdpt::PostConstruct()
+gint TMSCallCSAdpt::PostConstruct()
     {
     TRACE_PRN_FN_ENT;
     gint status(TMS_RESULT_SUCCESS);
@@ -89,11 +98,11 @@
     }
 
 // -----------------------------------------------------------------------------
-// CallCSAdpt::CreateStream
+// TMSCallCSAdpt::CreateStream
 //
 // -----------------------------------------------------------------------------
 //
-gint CallCSAdpt::CreateStream(TMSCallType /*callType*/,
+gint TMSCallCSAdpt::CreateStream(TMSCallType /*callType*/,
         TMSStreamType strmType, gint& outStrmId)
     {
     TRACE_PRN_FN_ENT;
@@ -133,11 +142,11 @@
     }
 
 // -----------------------------------------------------------------------------
-// CallCSAdpt::InitStream
+// TMSCallCSAdpt::InitStream
 //
 // -----------------------------------------------------------------------------
 //
-gint CallCSAdpt::InitStreamL(TMSCallType /*callType*/,
+gint TMSCallCSAdpt::InitStreamL(TMSCallType /*callType*/,
         TMSStreamType strmType, gint strmId, TMSFormatType /*frmtType*/,
         const RMessage2& aMessage)
     {
@@ -157,7 +166,17 @@
                     }
                 if (status == TMS_RESULT_SUCCESS)
                     {
-                    TRAP(status, iCSUplink = CSUplink::NewL(*this));
+                    TRAP(status, iCSUplink = TMSCSUplink::NewL(*this));
+
+                    if (status == TMS_RESULT_SUCCESS)
+                        {
+                        iDTMFUplinkPlayer =  TMSDTMFProvider::NewL();
+                        iDTMFUplinkPlayer->AddObserverL(*this);
+                        if(!iDTMFNotifier)
+                            {
+                            iDTMFNotifier = TMSDtmfNotifier::NewL();
+                            }
+                        }
                     }
                 iStrmtype = TMS_STREAM_UPLINK;
                 }
@@ -177,14 +196,25 @@
                     }
                 if (status == TMS_RESULT_SUCCESS)
                     {
-                    TRAP(status, iCSDownlink = CSDownlink::NewL(*this));
+                    TRAP(status, iCSDownlink = TMSCSDownlink::NewL(*this));
                     if (status == TMS_RESULT_SUCCESS)
                         {
                         TRAP(status, iRouting =
                              CTelephonyAudioRouting::NewL(*this));
                         if (status == TMS_RESULT_SUCCESS)
                             {
-                            iTarSettings = TarSettings::NewL();
+                            iTarSettings = TMSTarSettings::NewL();
+                            }
+                        if (status == TMS_RESULT_SUCCESS)
+                            {
+                            TRAP(status, iDTMFDnlinkPlayer =
+                                 TMSAudioDtmfTonePlayer::NewL(*this,
+                                 KAudioPrefKeyDownDTMF,
+                                 KAudioPriorityDtmfKeyPress));
+                            if(!iDTMFNotifier)
+                                {
+                                iDTMFNotifier = TMSDtmfNotifier::NewL();
+                                }
                             }
                         }
                     }
@@ -206,11 +236,11 @@
     }
 
 // -----------------------------------------------------------------------------
-// CallCSAdpt::StartStream
+// TMSCallCSAdpt::StartStream
 //
 // -----------------------------------------------------------------------------
 //
-gint CallCSAdpt::StartStream(TMSCallType /*callType*/,
+gint TMSCallCSAdpt::StartStream(TMSCallType /*callType*/,
         TMSStreamType strmType, gint strmId)
     {
     TRACE_PRN_FN_ENT;
@@ -238,11 +268,11 @@
     }
 
 // -----------------------------------------------------------------------------
-// CallCSAdpt::PauseStream
+// TMSCallCSAdpt::PauseStream
 //
 // -----------------------------------------------------------------------------
 //
-gint CallCSAdpt::PauseStream(TMSCallType /*callType*/,
+gint TMSCallCSAdpt::PauseStream(TMSCallType /*callType*/,
         TMSStreamType /*strmType*/, gint /*strmId*/)
     {
     TRACE_PRN_FN_ENT;
@@ -252,11 +282,11 @@
     }
 
 // -----------------------------------------------------------------------------
-// CallCSAdpt::StopStream
+// TMSCallCSAdpt::StopStream
 //
 // -----------------------------------------------------------------------------
 //
-gint CallCSAdpt::StopStream(TMSCallType /*callType*/, TMSStreamType strmType,
+gint TMSCallCSAdpt::StopStream(TMSCallType /*callType*/, TMSStreamType strmType,
         gint strmId)
     {
     TRACE_PRN_FN_ENT;
@@ -288,11 +318,11 @@
     }
 
 // -----------------------------------------------------------------------------
-// CallCSAdpt::DeinitStream
+// TMSCallCSAdpt::DeinitStream
 //
 // -----------------------------------------------------------------------------
 //
-gint CallCSAdpt::DeinitStream(TMSCallType /*callType*/,
+gint TMSCallCSAdpt::DeinitStream(TMSCallType /*callType*/,
         TMSStreamType strmType, gint strmId)
     {
     TRACE_PRN_FN_ENT;
@@ -326,11 +356,11 @@
     }
 
 // -----------------------------------------------------------------------------
-// CallCSAdpt::DeleteStream
+// TMSCallCSAdpt::DeleteStream
 //
 // -----------------------------------------------------------------------------
 //
-gint CallCSAdpt::DeleteStream(TMSCallType /*callType*/,
+gint TMSCallCSAdpt::DeleteStream(TMSCallType /*callType*/,
         TMSStreamType strmType, gint strmId)
     {
     TRACE_PRN_FN_ENT;
@@ -360,11 +390,11 @@
     }
 
 // -----------------------------------------------------------------------------
-// CallCSAdpt::DataXferBufferEmptied
+// TMSCallCSAdpt::DataXferBufferEmptied
 //
 // -----------------------------------------------------------------------------
 //
-gint CallCSAdpt::DataXferBufferEmptied(TMSCallType /*callType*/,
+gint TMSCallCSAdpt::DataXferBufferEmptied(TMSCallType /*callType*/,
         TMSStreamType /*strmType*/, gint /*strmId*/)
     {
     TRACE_PRN_FN_ENT;
@@ -374,11 +404,11 @@
     }
 
 // -----------------------------------------------------------------------------
-// CallCSAdpt::DataXferBufferFilled
+// TMSCallCSAdpt::DataXferBufferFilled
 //
 // -----------------------------------------------------------------------------
 //
-gint CallCSAdpt::DataXferBufferFilled(TMSCallType /*callType*/,
+gint TMSCallCSAdpt::DataXferBufferFilled(TMSCallType /*callType*/,
         TMSStreamType /*strmType*/, gint /*strmId*/, guint /*datasize*/)
     {
     TRACE_PRN_FN_ENT;
@@ -388,11 +418,11 @@
     }
 
 // -----------------------------------------------------------------------------
-// CallCSAdpt::GetDataXferBufferHndl
+// TMSCallCSAdpt::GetDataXferBufferHndl
 //
 // -----------------------------------------------------------------------------
 //
-gint CallCSAdpt::GetDataXferBufferHndl(const TMSCallType /*callType*/,
+gint TMSCallCSAdpt::GetDataXferBufferHndl(const TMSCallType /*callType*/,
         const TMSStreamType /*strmType*/, const gint /*strmId*/,
         const guint32 /*key*/, RChunk& /*chunk*/)
     {
@@ -403,11 +433,11 @@
     }
 
 // -----------------------------------------------------------------------------
-// CallCSAdpt::GetMaxVolume
+// TMSCallCSAdpt::GetMaxVolume
 //
 // -----------------------------------------------------------------------------
 //
-gint CallCSAdpt::GetMaxVolume(guint& volume)
+gint TMSCallCSAdpt::GetMaxVolume(guint& volume)
     {
     TRACE_PRN_FN_ENT;
     gint status(TMS_RESULT_ILLEGAL_OPERATION);
@@ -421,11 +451,11 @@
     }
 
 // -----------------------------------------------------------------------------
-// CallCSAdpt::SetVolume
+// TMSCallCSAdpt::SetVolume
 //
 // -----------------------------------------------------------------------------
 //
-gint CallCSAdpt::SetVolume(const guint volume)
+gint TMSCallCSAdpt::SetVolume(const guint volume)
     {
     TRACE_PRN_FN_ENT;
     gint status(TMS_RESULT_ILLEGAL_OPERATION);
@@ -440,11 +470,11 @@
     }
 
 // -----------------------------------------------------------------------------
-// CallCSAdpt::GetVolume
+// TMSCallCSAdpt::GetVolume
 //
 // -----------------------------------------------------------------------------
 //
-gint CallCSAdpt::GetVolume(guint& volume)
+gint TMSCallCSAdpt::GetVolume(guint& volume)
     {
     TRACE_PRN_FN_ENT;
     gint status(TMS_RESULT_ILLEGAL_OPERATION);
@@ -459,11 +489,11 @@
     }
 
 // -----------------------------------------------------------------------------
-// CallCSAdpt::GetMaxGain
+// TMSCallCSAdpt::GetMaxGain
 //
 // -----------------------------------------------------------------------------
 //
-gint CallCSAdpt::GetMaxGain(guint& gain)
+gint TMSCallCSAdpt::GetMaxGain(guint& gain)
     {
     TRACE_PRN_FN_ENT;
     gint status(TMS_RESULT_ILLEGAL_OPERATION);
@@ -477,11 +507,11 @@
     }
 
 // -----------------------------------------------------------------------------
-// CallCSAdpt::SetGain
+// TMSCallCSAdpt::SetGain
 //
 // -----------------------------------------------------------------------------
 //
-gint CallCSAdpt::SetGain(const guint gain)
+gint TMSCallCSAdpt::SetGain(const guint gain)
     {
     TRACE_PRN_FN_ENT;
     gint status(TMS_RESULT_ILLEGAL_OPERATION);
@@ -496,11 +526,11 @@
     }
 
 // -----------------------------------------------------------------------------
-// CallCSAdpt::GetGain
+// TMSCallCSAdpt::GetGain
 //
 // -----------------------------------------------------------------------------
 //
-gint CallCSAdpt::GetGain(guint& gain)
+gint TMSCallCSAdpt::GetGain(guint& gain)
     {
     TRACE_PRN_FN_ENT;
     gint status(TMS_RESULT_ILLEGAL_OPERATION);
@@ -514,11 +544,11 @@
     }
 
 // -----------------------------------------------------------------------------
-// CallCSAdpt::GetGlobalMaxVolume
+// TMSCallCSAdpt::GetGlobalMaxVolume
 //
 // -----------------------------------------------------------------------------
 //
-gint CallCSAdpt::GetGlobalMaxVolume(guint& volume)
+gint TMSCallCSAdpt::GetGlobalMaxVolume(guint& volume)
     {
     TRACE_PRN_FN_ENT;
     gint status(TMS_RESULT_ILLEGAL_OPERATION);
@@ -532,11 +562,11 @@
     }
 
 // -----------------------------------------------------------------------------
-// CallCSAdpt::SetGlobalVolume
+// TMSCallCSAdpt::SetGlobalVolume
 //
 // -----------------------------------------------------------------------------
 //
-gint CallCSAdpt::SetGlobalVolume(const guint volume)
+gint TMSCallCSAdpt::SetGlobalVolume(const guint volume)
     {
     TRACE_PRN_FN_ENT;
     gint status(TMS_RESULT_SUCCESS);
@@ -552,11 +582,11 @@
     }
 
 // -----------------------------------------------------------------------------
-// CallCSAdpt::GetGlobalVolume
+// TMSCallCSAdpt::GetGlobalVolume
 //
 // -----------------------------------------------------------------------------
 //
-gint CallCSAdpt::GetGlobalVolume(guint& volume)
+gint TMSCallCSAdpt::GetGlobalVolume(guint& volume)
     {
     TRACE_PRN_FN_ENT;
     gint status(TMS_RESULT_ILLEGAL_OPERATION);
@@ -571,11 +601,11 @@
     }
 
 // -----------------------------------------------------------------------------
-// CallCSAdpt::GetMaxGain
+// TMSCallCSAdpt::GetMaxGain
 //
 // -----------------------------------------------------------------------------
 //
-gint CallCSAdpt::GetGlobalMaxGain(guint& gain)
+gint TMSCallCSAdpt::GetGlobalMaxGain(guint& gain)
     {
     TRACE_PRN_FN_ENT;
     gint status(TMS_RESULT_ILLEGAL_OPERATION);
@@ -589,11 +619,11 @@
     }
 
 // -----------------------------------------------------------------------------
-// CallCSAdpt::SetGain
+// TMSCallCSAdpt::SetGain
 //
 // -----------------------------------------------------------------------------
 //
-gint CallCSAdpt::SetGlobalGain(const guint gain)
+gint TMSCallCSAdpt::SetGlobalGain(const guint gain)
     {
     TRACE_PRN_FN_ENT;
     gint status(TMS_RESULT_SUCCESS);
@@ -609,11 +639,11 @@
     }
 
 // -----------------------------------------------------------------------------
-// CallCSAdpt::GetGlobalGain
+// TMSCallCSAdpt::GetGlobalGain
 //
 // -----------------------------------------------------------------------------
 //
-gint CallCSAdpt::GetGlobalGain(guint& gain)
+gint TMSCallCSAdpt::GetGlobalGain(guint& gain)
     {
     TRACE_PRN_FN_ENT;
     gint status(TMS_RESULT_ILLEGAL_OPERATION);
@@ -627,11 +657,11 @@
     }
 
 // -----------------------------------------------------------------------------
-// CallCSAdpt::GetCodecMode
+// TMSCallCSAdpt::GetCodecMode
 //
 // -----------------------------------------------------------------------------
 //
-gint CallCSAdpt::GetCodecMode(const TMSFormatType /*fmttype*/,
+gint TMSCallCSAdpt::GetCodecMode(const TMSFormatType /*fmttype*/,
         const TMSStreamType /*strmtype*/, gint& /*mode*/)
     {
     TRACE_PRN_FN_ENT;
@@ -641,11 +671,11 @@
     }
 
 // -----------------------------------------------------------------------------
-// CallCSAdpt::SetCodecMode
+// TMSCallCSAdpt::SetCodecMode
 //
 // -----------------------------------------------------------------------------
 //
-gint CallCSAdpt::SetCodecMode(const TMSFormatType /*fmttype*/,
+gint TMSCallCSAdpt::SetCodecMode(const TMSFormatType /*fmttype*/,
         const TMSStreamType /*strmtype*/, const gint /*mode*/)
     {
     TRACE_PRN_FN_ENT;
@@ -655,11 +685,11 @@
     }
 
 // -----------------------------------------------------------------------------
-// CallCSAdpt::GetSupportedBitRatesCount
+// TMSCallCSAdpt::GetSupportedBitRatesCount
 //
 // -----------------------------------------------------------------------------
 //
-gint CallCSAdpt::GetSupportedBitRatesCount(guint& /*count*/)
+gint TMSCallCSAdpt::GetSupportedBitRatesCount(guint& /*count*/)
     {
     TRACE_PRN_FN_ENT;
     gint status(TMS_RESULT_FEATURE_NOT_SUPPORTED);
@@ -668,11 +698,11 @@
     }
 
 // -----------------------------------------------------------------------------
-// CallCSAdpt::GetSupportedBitRates
+// TMSCallCSAdpt::GetSupportedBitRates
 //
 // -----------------------------------------------------------------------------
 //
-gint CallCSAdpt::GetSupportedBitRates(CBufFlat*& brbuffer)
+gint TMSCallCSAdpt::GetSupportedBitRates(CBufFlat*& brbuffer)
     {
     TRACE_PRN_FN_ENT;
     TRAPD(status, GetSupportedBitRatesL(brbuffer));
@@ -681,22 +711,22 @@
     }
 
 // -----------------------------------------------------------------------------
-// CallCSAdpt::GetSupportedBitRatesL
+// TMSCallCSAdpt::GetSupportedBitRatesL
 //
 // GetSupportedBitRates implementation which can leave.
 // -----------------------------------------------------------------------------
 //
-void CallCSAdpt::GetSupportedBitRatesL(CBufFlat*& /*brbuffer*/)
+void TMSCallCSAdpt::GetSupportedBitRatesL(CBufFlat*& /*brbuffer*/)
     {
     User::Leave(TMS_RESULT_FEATURE_NOT_SUPPORTED);
     }
 
 // -----------------------------------------------------------------------------
-// CallCSAdpt::GetBitRate
+// TMSCallCSAdpt::GetBitRate
 //
 // -----------------------------------------------------------------------------
 //
-gint CallCSAdpt::GetBitRate(guint& /*bitrate*/)
+gint TMSCallCSAdpt::GetBitRate(guint& /*bitrate*/)
     {
     TRACE_PRN_FN_ENT;
     gint status(TMS_RESULT_FEATURE_NOT_SUPPORTED);
@@ -705,11 +735,11 @@
     }
 
 // -----------------------------------------------------------------------------
-// CallCSAdpt::SetBitRate
+// TMSCallCSAdpt::SetBitRate
 //
 // -----------------------------------------------------------------------------
 //
-gint CallCSAdpt::SetBitRate(const guint /*bitrate*/)
+gint TMSCallCSAdpt::SetBitRate(const guint /*bitrate*/)
     {
     TRACE_PRN_FN_ENT;
     gint status(TMS_RESULT_FEATURE_NOT_SUPPORTED);
@@ -718,11 +748,11 @@
     }
 
 // -----------------------------------------------------------------------------
-// CallCSAdpt::GetVAD
+// TMSCallCSAdpt::GetVAD
 //
 // -----------------------------------------------------------------------------
 //
-gint CallCSAdpt::GetVAD(const TMSFormatType /*fmttype*/, gboolean& /*vad*/)
+gint TMSCallCSAdpt::GetVAD(const TMSFormatType /*fmttype*/, gboolean& /*vad*/)
     {
     TRACE_PRN_FN_ENT;
     gint status(TMS_RESULT_FEATURE_NOT_SUPPORTED);
@@ -731,11 +761,11 @@
     }
 
 // -----------------------------------------------------------------------------
-// CallCSAdpt::SetVAD
+// TMSCallCSAdpt::SetVAD
 //
 // -----------------------------------------------------------------------------
 //
-gint CallCSAdpt::SetVAD(const TMSFormatType /*fmttype*/, const gboolean /*vad*/)
+gint TMSCallCSAdpt::SetVAD(const TMSFormatType /*fmttype*/, const gboolean /*vad*/)
     {
     TRACE_PRN_FN_ENT;
     gint status(TMS_RESULT_FEATURE_NOT_SUPPORTED);
@@ -744,11 +774,11 @@
     }
 
 // -----------------------------------------------------------------------------
-// CallCSAdpt::GetCNG
+// TMSCallCSAdpt::GetCNG
 //
 // -----------------------------------------------------------------------------
 //
-gint CallCSAdpt::GetCNG(const TMSFormatType /*fmttype*/, gboolean& /*cng*/)
+gint TMSCallCSAdpt::GetCNG(const TMSFormatType /*fmttype*/, gboolean& /*cng*/)
     {
     TRACE_PRN_FN_ENT;
     gint status(TMS_RESULT_FEATURE_NOT_SUPPORTED);
@@ -757,11 +787,12 @@
     }
 
 // -----------------------------------------------------------------------------
-// CallCSAdpt::SetCNG
+// TMSCallCSAdpt::SetCNG
 //
 // -----------------------------------------------------------------------------
 //
-gint CallCSAdpt::SetCNG(const TMSFormatType /*fmttype*/, const gboolean /*cng*/)
+gint TMSCallCSAdpt::SetCNG(const TMSFormatType /*fmttype*/,
+        const gboolean /*cng*/)
     {
     TRACE_PRN_FN_ENT;
     gint status(TMS_RESULT_FEATURE_NOT_SUPPORTED);
@@ -770,11 +801,11 @@
     }
 
 // -----------------------------------------------------------------------------
-// CallCSAdpt::GetPlc
+// TMSCallCSAdpt::GetPlc
 //
 // -----------------------------------------------------------------------------
 //
-gint CallCSAdpt::GetPlc(const TMSFormatType /*fmttype*/, gboolean& /*plc*/)
+gint TMSCallCSAdpt::GetPlc(const TMSFormatType /*fmttype*/, gboolean& /*plc*/)
     {
     TRACE_PRN_FN_ENT;
     gint status(TMS_RESULT_FEATURE_NOT_SUPPORTED);
@@ -783,11 +814,12 @@
     }
 
 // -----------------------------------------------------------------------------
-// CallCSAdpt::SetPlc
+// TMSCallCSAdpt::SetPlc
 //
 // -----------------------------------------------------------------------------
 //
-gint CallCSAdpt::SetPlc(const TMSFormatType /*fmttype*/, const gboolean /*plc*/)
+gint TMSCallCSAdpt::SetPlc(const TMSFormatType /*fmttype*/,
+        const gboolean /*plc*/)
     {
     TRACE_PRN_FN_ENT;
     gint status(TMS_RESULT_FEATURE_NOT_SUPPORTED);
@@ -796,11 +828,11 @@
     }
 
 // -----------------------------------------------------------------------------
-// CallCSAdpt::SetOutput
+// TMSCallCSAdpt::SetOutput
 //
 // -----------------------------------------------------------------------------
 //
-gint CallCSAdpt::SetOutput(TMSAudioOutput output)
+gint TMSCallCSAdpt::SetOutput(TMSAudioOutput output)
     {
     TRACE_PRN_FN_ENT;
     gint status(TMS_RESULT_UNINITIALIZED_OBJECT);
@@ -824,11 +856,11 @@
     }
 
 // -----------------------------------------------------------------------------
-// CallCSAdpt::GetOutput
+// TMSCallCSAdpt::GetOutput
 //
 // -----------------------------------------------------------------------------
 //
-gint CallCSAdpt::GetOutput(TMSAudioOutput& output)
+gint TMSCallCSAdpt::GetOutput(TMSAudioOutput& output)
     {
     TRACE_PRN_FN_ENT;
     gint status(TMS_RESULT_UNINITIALIZED_OBJECT);
@@ -846,11 +878,11 @@
     }
 
 // -----------------------------------------------------------------------------
-// CallCSAdpt::GetPreviousOutput
+// TMSCallCSAdpt::GetPreviousOutput
 //
 // -----------------------------------------------------------------------------
 //
-gint CallCSAdpt::GetPreviousOutput(TMSAudioOutput& output)
+gint TMSCallCSAdpt::GetPreviousOutput(TMSAudioOutput& output)
     {
     TRACE_PRN_FN_ENT;
     gint status(TMS_RESULT_UNINITIALIZED_OBJECT);
@@ -867,11 +899,11 @@
     }
 
 // -----------------------------------------------------------------------------
-// CallCSAdpt::GetAvailableOutputsL
+// TMSCallCSAdpt::GetAvailableOutputsL
 //
 // -----------------------------------------------------------------------------
 //
-gint CallCSAdpt::GetAvailableOutputsL(gint& count, CBufFlat*& outputsbuffer)
+gint TMSCallCSAdpt::GetAvailableOutputsL(gint& count, CBufFlat*& outputsbuffer)
     {
     TRACE_PRN_FN_ENT;
     gint status(TMS_RESULT_UNINITIALIZED_OBJECT);
@@ -903,15 +935,205 @@
     return status;
     }
 
+// -----------------------------------------------------------------------------
+// TMSCallCSAdpt::StartDTMF
+//
+// -----------------------------------------------------------------------------
+//
+gint TMSCallCSAdpt::StartDTMF(TMSStreamType strmtype, TDes& dtmfstring)
+    {
+    TRACE_PRN_FN_ENT;
+    gint status(TMS_RESULT_SUCCESS);
 
-// From MCSPDevSoundObserver
+    TmsMsgBufPckg dtmfpckg;
+
+    if (strmtype == TMS_STREAM_DOWNLINK && iDnlinkInitialized)
+        {
+        if (iDTMFDnlinkPlayer)
+            {
+            iDTMFDnlinkPlayer->PlayDtmfTone(dtmfstring);
+            }
+
+        dtmfpckg().iStatus = TMS_RESULT_SUCCESS;
+        //TMS_EVENT_DTMF_TONE_STARTED;
+        dtmfpckg().iRequest = ECmdDTMFOpenDnlinkComplete;
+        if (iDTMFNotifier)
+            {
+            iDTMFNotifier->SetDtmf(dtmfpckg, TRUE);
+            }
+        }
+    else if (strmtype == TMS_STREAM_UPLINK && iUplinkInitialized)
+        {
+        //use etel for uplink
+        if (iDTMFUplinkPlayer)
+            {
+            status = iDTMFUplinkPlayer->SendDtmfToneString(dtmfstring);
+            }
+
+        dtmfpckg().iStatus = TMSUtility::EtelToTMSResult(status);
+        //TMS_EVENT_DTMF_TONE_STARTED;
+        dtmfpckg().iRequest = ECmdDTMFOpenUplinkComplete;
+
+        if (iDTMFNotifier)
+            {
+            iDTMFNotifier->SetDtmf(dtmfpckg, TRUE);
+            }
+        }
+
+    TRACE_PRN_FN_EXT;
+    return status;
+    }
 
 // -----------------------------------------------------------------------------
-// CallCSAdpt::DownlinkInitCompleted
+// TMSCallCSAdpt::StopDTMF
+//
+// -----------------------------------------------------------------------------
+//
+gint TMSCallCSAdpt::StopDTMF(TMSStreamType streamtype)
+    {
+    TRACE_PRN_FN_ENT;
+    gint status(TMS_RESULT_SUCCESS);
+
+    if (streamtype == TMS_STREAM_DOWNLINK && iDTMFDnlinkPlayer)
+        {
+        iDTMFDnlinkPlayer->Cancel();
+        }
+    else if (streamtype == TMS_STREAM_UPLINK && iDTMFUplinkPlayer)
+        {
+        status = iDTMFUplinkPlayer->StopDtmfTone();
+        status = TMSUtility::EtelToTMSResult(status);
+        }
+
+    TRACE_PRN_FN_EXT;
+    return status;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSCallCSAdpt::ContinueDTMF
+//
+// -----------------------------------------------------------------------------
+//
+gint TMSCallCSAdpt::ContinueDTMF(TBool continuesending)
+    {
+    TRACE_PRN_FN_ENT;
+    gint status(TMS_RESULT_SUCCESS);
+
+    if (iDTMFUplinkPlayer)
+        {
+        status = iDTMFUplinkPlayer->ContinueDtmfStringSending(continuesending);
+        status = TMSUtility::EtelToTMSResult(status);
+        }
+
+    TRACE_PRN_FN_EXT;
+    return status;
+    }
+
+//From DTMFTonePlayerObserver
+// -----------------------------------------------------------------------------
+// TMSCallCSAdpt::DTMFInitCompleted
 //
 // -----------------------------------------------------------------------------
 //
-void CallCSAdpt::DownlinkInitCompleted(TInt status)
+void TMSCallCSAdpt::DTMFInitCompleted(TInt /*error*/)
+    {
+    TRACE_PRN_FN_ENT;
+    TRACE_PRN_FN_EXT;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSCallCSAdpt::DTMFToneFinished
+//
+// -----------------------------------------------------------------------------
+//
+void TMSCallCSAdpt::DTMFToneFinished(TInt error)
+    {
+    TRACE_PRN_FN_ENT;
+    TmsMsgBufPckg dtmfpckg;
+
+    if (error == KErrUnderflow || error == KErrInUse)
+        {
+        error = TMS_RESULT_SUCCESS;
+        }
+
+    dtmfpckg().iStatus = TMSUtility::TMSResult(error);
+    //TMS_EVENT_DTMF_TONE_STOPPED
+    dtmfpckg().iRequest = ECmdDTMFTonePlayFinished;
+    if (iDTMFNotifier)
+        {
+        iDTMFNotifier->SetDtmf(dtmfpckg, TRUE);
+        }
+
+    TRACE_PRN_FN_EXT;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSCallCSAdpt::HandleDTMFEvent
+//
+// -----------------------------------------------------------------------------
+//
+void TMSCallCSAdpt::HandleDTMFEvent(
+        const TMSCCPDTMFObserver::TCCPDtmfEvent aEvent, const TInt aError,
+        const TChar /*aTone*/)
+    {
+    TRACE_PRN_FN_ENT;
+    TmsMsgBufPckg dtmfpckg;
+
+    TRACE_PRN_N1(_L("**TMS TMSCallCSAdpt::HandleDTMFEvent error:%d"),aError);
+
+    dtmfpckg().iStatus = TMSUtility::EtelToTMSResult(aError);
+
+    switch (aEvent)
+        {
+            /** Unknown */
+        case ECCPDtmfUnknown:
+            break;
+            /** DTMF sending started manually */
+        case ECCPDtmfManualStart:
+            /** Automatic DTMF sending initialized */
+        case ECCPDtmfSequenceStart:
+            //TMS_EVENT_DTMF_TONE_STARTED
+            dtmfpckg().iRequest = ECmdDTMFOpenUplinkComplete;
+            break;
+
+            /** DTMF sending stopped manually */
+        case ECCPDtmfManualStop:
+            //break;
+            /** DTMF sending aborted manually */
+        case ECCPDtmfManualAbort:
+            //break;
+            /** Automatic DTMF sending stopped */
+        case ECCPDtmfSequenceStop:
+            //break;
+            /** Automatic DTMF sending aborted */
+        case ECCPDtmfSequenceAbort:
+            //break;
+            /** There was stop mark in DTMF string */
+        case ECCPDtmfStopInDtmfString:
+            //break;
+            /** DTMF sending completed succesfully */
+        case ECCPDtmfStringSendingCompleted:
+            //TMS_EVENT_DTMF_TONE_STOPPED
+            dtmfpckg().iRequest = ECmdDTMFTonePlayFinished;
+            break;
+        default:
+            break;
+        }
+
+    if (iDTMFNotifier)
+        {
+        iDTMFNotifier->SetDtmf(dtmfpckg, TRUE);
+        }
+    TRACE_PRN_FN_EXT;
+    }
+
+// From TMSCSPDevSoundObserver
+
+// -----------------------------------------------------------------------------
+// TMSCallCSAdpt::DownlinkInitCompleted
+//
+// -----------------------------------------------------------------------------
+//
+void TMSCallCSAdpt::DownlinkInitCompleted(TInt status)
     {
     TRACE_PRN_FN_ENT;
     NotifyClient(iDnlinkStreamId, ECmdDownlinkInitComplete, status, 0);
@@ -919,11 +1141,11 @@
     }
 
 // -----------------------------------------------------------------------------
-// CallCSAdpt::UplinkInitCompleted
+// TMSCallCSAdpt::UplinkInitCompleted
 //
 // -----------------------------------------------------------------------------
 //
-void CallCSAdpt::UplinkInitCompleted(TInt status)
+void TMSCallCSAdpt::UplinkInitCompleted(TInt status)
     {
     TRACE_PRN_FN_ENT;
     NotifyClient(iUplinkStreamId, ECmdUplinkInitComplete, status, 0);
@@ -931,11 +1153,11 @@
     }
 
 // -----------------------------------------------------------------------------
-// CallCSAdpt::UplinkActivatedSuccessfully
+// TMSCallCSAdpt::UplinkActivatedSuccessfully
 //
 // -----------------------------------------------------------------------------
 //
-void CallCSAdpt::UplinkActivatedSuccessfully()
+void TMSCallCSAdpt::UplinkActivatedSuccessfully()
     {
     TRACE_PRN_FN_ENT;
     NotifyClient(iUplinkStreamId, ECmdUplinkStarted, KErrNone, 0);
@@ -943,11 +1165,11 @@
     }
 
 // -----------------------------------------------------------------------------
-// CallCSAdpt::DownlinkActivatedSuccessfully
+// TMSCallCSAdpt::DownlinkActivatedSuccessfully
 //
 // -----------------------------------------------------------------------------
 //
-void CallCSAdpt::DownlinkActivatedSuccessfully()
+void TMSCallCSAdpt::DownlinkActivatedSuccessfully()
     {
     TRACE_PRN_FN_ENT;
     NotifyClient(iDnlinkStreamId, ECmdDownlinkStarted, KErrNone, 0);
@@ -955,11 +1177,11 @@
     }
 
 // -----------------------------------------------------------------------------
-// CallCSAdpt::UplinkActivationFailed
+// TMSCallCSAdpt::UplinkActivationFailed
 //
 // -----------------------------------------------------------------------------
 //
-void CallCSAdpt::UplinkActivationFailed()
+void TMSCallCSAdpt::UplinkActivationFailed()
     {
     TRACE_PRN_FN_ENT;
     NotifyClient(iUplinkStreamId, ECmdUplinkStarted, TMS_RESULT_FATAL_ERROR, 0);
@@ -967,11 +1189,11 @@
     }
 
 // -----------------------------------------------------------------------------
-// CallCSAdpt::DownlinkActivationFailed
+// TMSCallCSAdpt::DownlinkActivationFailed
 //
 // -----------------------------------------------------------------------------
 //
-void CallCSAdpt::DownlinkActivationFailed()
+void TMSCallCSAdpt::DownlinkActivationFailed()
     {
     TRACE_PRN_FN_ENT;
     NotifyClient(iDnlinkStreamId, ECmdDownlinkStarted,
@@ -980,11 +1202,11 @@
     }
 
 // -----------------------------------------------------------------------------
-// CallCSAdpt::AvailableOutputsChanged
+// TMSCallCSAdpt::AvailableOutputsChanged
 //
 // -----------------------------------------------------------------------------
 //
-void CallCSAdpt::AvailableOutputsChanged(
+void TMSCallCSAdpt::AvailableOutputsChanged(
         CTelephonyAudioRouting& /*aTelephonyAudioRouting*/)
     {
     TRACE_PRN_FN_ENT;
@@ -995,11 +1217,12 @@
     }
 
 // -----------------------------------------------------------------------------
-// CallCSAdpt::OutputChanged
+// TMSCallCSAdpt::OutputChanged
 //
 // -----------------------------------------------------------------------------
 //
-void CallCSAdpt::OutputChanged(CTelephonyAudioRouting& aTelephonyAudioRouting)
+void TMSCallCSAdpt::OutputChanged(
+        CTelephonyAudioRouting& aTelephonyAudioRouting)
     {
     TRACE_PRN_FN_ENT;
     TRoutingMsgBufPckg pckg;
@@ -1010,11 +1233,11 @@
     }
 
 // -----------------------------------------------------------------------------
-// CallCSAdpt::SetOutputComplete
+// TMSCallCSAdpt::SetOutputComplete
 //
 // -----------------------------------------------------------------------------
 //
-void CallCSAdpt::SetOutputComplete(
+void TMSCallCSAdpt::SetOutputComplete(
         CTelephonyAudioRouting& aTelephonyAudioRouting, gint /*aError*/)
     {
     TRACE_PRN_FN_ENT;
@@ -1030,11 +1253,11 @@
     }
 
 // -----------------------------------------------------------------------------
-// CallCSAdpt::NotifyClient
+// TMSCallCSAdpt::NotifyClient
 //
 // -----------------------------------------------------------------------------
 //
-void CallCSAdpt::NotifyClient(const gint strmId, const gint aCommand,
+void TMSCallCSAdpt::NotifyClient(const gint strmId, const gint aCommand,
         const gint aStatus, const gint64 /*aInt64*/)
     {
     iMsgBuffer.iRequest = aCommand;