diff -r 71ca22bcf22a -r 5a06f39ad45b mmserv/tms/tmscallserver/src/tmscallsession.cpp --- 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