mmserv/tms/tmscallserver/src/tmscallsession.cpp
changeset 12 5a06f39ad45b
parent 0 71ca22bcf22a
child 14 80975da52420
--- a/mmserv/tms/tmscallserver/src/tmscallsession.cpp	Tue Feb 02 01:08:46 2010 +0200
+++ b/mmserv/tms/tmscallserver/src/tmscallsession.cpp	Fri Apr 16 15:29:42 2010 +0300
@@ -224,6 +224,15 @@
         case TMS_ROUTING_AVAILABLE_OUTPUT_GET:
             HandleRoutingGetAvailableOutputsL(aMessage);
             break;
+        case TMS_DTMF_START:
+            HandleDTMFStart(aMessage);
+            break;
+        case TMS_DTMF_STOP:
+            HandleDTMFStop(aMessage);
+            break;
+        case TMS_DTMF_CONTINUE:
+            HandleDTMFContinue(aMessage);
+            break;
         default:
             User::Leave(TMS_RESULT_ILLEGAL_OPERATION);
             break;
@@ -244,7 +253,7 @@
         {
         // Get Call type
         gint callType = aMessage.Int0();
-        status = CallAdpt::CreateCallL(callType, iCallAdpt);
+        status = TMSCallAdpt::CreateCallL(callType, iCallAdpt);
         }
     aMessage.Complete(status);
     TRACE_PRN_FN_EXT;
@@ -1109,4 +1118,68 @@
     aMessage.Complete(status);
     }
 
+void TMSCallSession::HandleDTMFStart(const RMessage2& aMessage)
+    {
+    TRACE_PRN_FN_ENT;
+    gint status(TMS_RESULT_DOES_NOT_EXIST);
+
+    if (iCallAdpt)
+        {
+        TMSStreamType strmtype;
+        gint len = 0;
+        strmtype = (TMSStreamType) aMessage.Int0();
+        len = aMessage.GetDesLength(1);
+        HBufC* tone(NULL);
+        if (len > 0)
+            {
+            delete tone;
+            tone = NULL;
+            TRAP(status,tone = HBufC::NewL(len));
+            if (status == KErrNone)
+                {
+                TPtr ptr = tone->Des();
+                status = aMessage.Read(1, ptr);
+                TRACE_PRN_N(ptr);
+                if (status == KErrNone)
+                    {
+                    status = iCallAdpt->StartDTMF(strmtype, ptr);
+                    }
+                }
+            delete tone;
+            tone = NULL;
+            }
+        }
+
+    aMessage.Complete(status);
+    TRACE_PRN_FN_EXT;
+    }
+
+void TMSCallSession::HandleDTMFStop(const RMessage2& aMessage)
+    {
+    TRACE_PRN_FN_ENT;
+    gint status(TMS_RESULT_DOES_NOT_EXIST);
+    if (iCallAdpt)
+        {
+        TMSStreamType streamtype;
+        streamtype = (TMSStreamType) aMessage.Int0();
+        status = iCallAdpt->StopDTMF(streamtype);
+        }
+    aMessage.Complete(status);
+    TRACE_PRN_FN_EXT;
+    }
+
+void TMSCallSession::HandleDTMFContinue(const RMessage2& aMessage)
+    {
+    TRACE_PRN_FN_ENT;
+    gint status(TMS_RESULT_DOES_NOT_EXIST);
+    if (iCallAdpt)
+        {
+        TBool continuesending;
+        continuesending = (TBool) aMessage.Int0();
+        status = iCallAdpt->ContinueDTMF(continuesending);
+        }
+    aMessage.Complete(status);
+    TRACE_PRN_FN_EXT;
+    }
+
 // End of file