diff -r 4a629bc82c5e -r b67dd1fc57c5 mmserv/tms/tmscallserver/src/tmscallipadpt.cpp --- a/mmserv/tms/tmscallserver/src/tmscallipadpt.cpp Fri Apr 30 19:18:45 2010 -0500 +++ b/mmserv/tms/tmscallserver/src/tmscallipadpt.cpp Fri May 14 18:19:45 2010 -0500 @@ -105,7 +105,6 @@ iNextStreamId = 1; iUplinkInitialized = FALSE; iDnlinkInitialized = FALSE; - TRACE_PRN_FN_EXT; return status; } @@ -163,14 +162,13 @@ // // ----------------------------------------------------------------------------- // -gint TMSCallIPAdpt::InitStreamL(TMSCallType /*callType*/, - TMSStreamType strmType, gint strmId, TMSFormatType frmtType, - const RMessage2& aMessage) +gint TMSCallIPAdpt::InitStream(TMSCallType /*callType*/, TMSStreamType strmType, + gint strmId, TMSFormatType frmtType, const RMessage2& message) { TRACE_PRN_FN_ENT; gint status(TMS_RESULT_SUCCESS); - TUint32 fourCC = TOFOURCC(frmtType); + guint32 fourCC = TOFOURCC(frmtType); if (fourCC == NULL) { return TMS_RESULT_INVALID_ARGUMENT; @@ -184,17 +182,11 @@ if (strmId == iUplinkStreamId) { SetFormat(iUplinkStreamId, fourCC); - status = OpenUplinkL(aMessage); - - iDTMFUplinkPlayer = TMSAudioDtmfTonePlayer::NewL(*this, - KAudioPrefUnknownVoipAudioUplink, - KAudioPriorityUnknownVoipAudioUplink); - - if (!iDTMFNotifier) + status = OpenUplinkL(message); + if (status == TMS_RESULT_SUCCESS) { - iDTMFNotifier = TMSDtmfNotifier::NewL(); + status = InitDTMF(TMS_STREAM_UPLINK); } - NotifyClient(iUplinkStreamId, ECmdUplinkInitComplete, status); } break; @@ -205,17 +197,11 @@ if (strmId == iDnlinkStreamId) { SetFormat(iDnlinkStreamId, fourCC); - status = OpenDownlinkL(aMessage); - - iDTMFDnlinkPlayer = TMSAudioDtmfTonePlayer::NewL(*this, - KAudioPrefUnknownVoipAudioDownlink, - KAudioPriorityUnknownVoipAudioDownlink); - - if (!iDTMFNotifier) + status = OpenDownlinkL(message); + if (status == TMS_RESULT_SUCCESS) { - iDTMFNotifier = TMSDtmfNotifier::NewL(); + status = InitDTMF(TMS_STREAM_DOWNLINK); } - NotifyClient(iDnlinkStreamId, ECmdDownlinkInitComplete, status); } break; @@ -1013,14 +999,21 @@ // Method for player initialization. // ----------------------------------------------------------------------------- // -gint TMSCallIPAdpt::OpenDownlinkL(const RMessage2& aMessage) +gint TMSCallIPAdpt::OpenDownlinkL(const RMessage2& message) { TRACE_PRN_FN_ENT; - gint status(TMS_RESULT_SUCCESS); + gint status(TMS_RESULT_UNINITIALIZED_OBJECT); // Clients must have MultimediaDD capability to use this priority/pref. // TODO: Also, TMS will monitor for emergency call and if detected it // will deny access to audio resources. + + /* Clarify with adaptation team which prio/pref values should be used. + * 1) KAudioPrefUnknownVoipAudioDownlink -3rd party VoIP? + * KAudioPriorityUnknownVoipAudioDownlink -3rd party VoIP? + * 2) KAudioPrefVoipAudioDownlink -NOK native VoIP? + * KAudioPriorityVoipAudioDownlink -NOK native VoIP? + */ iPriority.iPref = KAudioPrefVoipAudioDownlink; iPriority.iPriority = KAudioPriorityVoipAudioDownlink; @@ -1035,7 +1028,7 @@ if (iMsgQueueDn.Handle() <= 0) { // Second argument in TMSCallProxy::InitStream - status = iMsgQueueDn.Open(aMessage, 1); + status = iMsgQueueDn.Open(message, 1); } if (status == TMS_RESULT_SUCCESS) @@ -1044,7 +1037,6 @@ iIPDownlink->SetMsgQueue(iMsgQueueDn); } } - TRACE_PRN_IF_ERR(status); TRACE_PRN_FN_EXT; return status; @@ -1055,12 +1047,19 @@ // Method for recorder initialization. // ----------------------------------------------------------------------------- // -gint TMSCallIPAdpt::OpenUplinkL(const RMessage2& aMessage) +gint TMSCallIPAdpt::OpenUplinkL(const RMessage2& message) { TRACE_PRN_FN_ENT; - gint status(TMS_RESULT_SUCCESS); + gint status(TMS_RESULT_UNINITIALIZED_OBJECT); + + // Clients must have MultimediaDD capability to use this priority/pref - // Ensure clients have MultimediaDD capability to use this priority/pref + /* Clarify with adaptation team which prio/pref values should be used. + * 1) KAudioPrefUnknownVoipAudioUplink -3rd party VoIP? + * KAudioPriorityUnknownVoipAudioUplink -3rd party VoIP? + * 2) KAudioPrefVoipAudioUplink -NOK native VoIP? + * KAudioPriorityVoipAudioUplink -NOK native VoIP? + */ iPriority.iPref = KAudioPrefVoipAudioUplink; iPriority.iPriority = KAudioPriorityVoipAudioUplink; @@ -1075,7 +1074,7 @@ if (iMsgQueueUp.Handle() <= 0) { // Second argument in TMSCallProxy::InitStream - status = iMsgQueueUp.Open(aMessage, 1); + status = iMsgQueueUp.Open(message, 1); } if (status == TMS_RESULT_SUCCESS) @@ -1084,7 +1083,6 @@ iIPUplink->SetMsgQueue(iMsgQueueUp); } } - TRACE_PRN_IF_ERR(status); TRACE_PRN_FN_EXT; return status; @@ -1095,7 +1093,7 @@ // // ----------------------------------------------------------------------------- // -void TMSCallIPAdpt::SetFormat(const gint strmId, const TUint32 aFormat) +void TMSCallIPAdpt::SetFormat(const gint strmId, const guint32 aFormat) { if (strmId == iUplinkStreamId) { @@ -1112,7 +1110,7 @@ // // ----------------------------------------------------------------------------- // -void TMSCallIPAdpt::BufferFilledL(TUint dataSize) +void TMSCallIPAdpt::BufferFilledL(guint dataSize) { if (iIPDownlink) { @@ -1139,7 +1137,7 @@ // ----------------------------------------------------------------------------- // gint TMSCallIPAdpt::GetDataXferChunkHndl(const TMSStreamType strmType, - const TUint32 key, RChunk& chunk) + const guint32 key, RChunk& chunk) { TRACE_PRN_FN_ENT; @@ -1405,6 +1403,60 @@ } // ----------------------------------------------------------------------------- +// TMSCallIPAdpt::InitDTMF +// +// ----------------------------------------------------------------------------- +// +gint TMSCallIPAdpt::InitDTMF(TMSStreamType strmtype) + { + TRACE_PRN_FN_ENT; + gint status(TMS_RESULT_STREAM_TYPE_NOT_SUPPORTED); + + if (strmtype == TMS_STREAM_DOWNLINK) + { + delete iDTMFDnlinkPlayer; + iDTMFDnlinkPlayer = NULL; + + /* Clarify with adaptation team which prio/pref values should be used. + * 1) KAudioDTMFString -local play, no mixing + * KAudioPriorityDTMFString -local play, no mixing + * 2) KAudioPrefUnknownVoipAudioDownlink -3rd party VoIP? + * KAudioPriorityUnknownVoipAudioDownlink -3rd party VoIP? + * 3) KAudioPrefVoipAudioDownlink -NOK native VoIP? + * KAudioPriorityVoipAudioDownlink -NOK native VoIP? + */ + TRAP(status, iDTMFDnlinkPlayer = TMSAudioDtmfTonePlayer::NewL(*this, + KAudioPrefVoipAudioDownlink, KAudioPriorityVoipAudioDownlink)); + } + else if (strmtype == TMS_STREAM_UPLINK) + { + delete iDTMFUplinkPlayer; + iDTMFUplinkPlayer = NULL; + + /* Clarify with adaptation team which prio/pref values should be used. + * Currently the audio policy blocks DTMF mixing with the UPL stream. + * 1) KAudioPrefUnknownVoipAudioUplink -3rd party VoIP? + * KAudioPriorityUnknownVoipAudioUplink -3rd party VoIP? + * KAudioPriorityUnknownVoipAudioUplinkNonSignal -??? + * 2) KAudioPrefVoipAudioUplink -NOK native VoIP? + * KAudioPrefUnknownVoipAudioUplinkNonSignal -??? + * KAudioPrefVoipAudioUplinkNonSignal -??? + * KAudioPriorityVoipAudioUplink -NOK native VoIP? + */ + TRAP(status, iDTMFUplinkPlayer = TMSAudioDtmfTonePlayer::NewL(*this, + KAudioPrefVoipAudioUplink, KAudioPriorityVoipAudioUplink)); + } + + if (!iDTMFNotifier && status == TMS_RESULT_SUCCESS) + { + TRAP(status, iDTMFNotifier = TMSDtmfNotifier::NewL()); + } + + TRACE_PRN_FN_EXT; + return status; + } + +// ----------------------------------------------------------------------------- // TMSCallIPAdpt::StartDTMF // // ----------------------------------------------------------------------------- @@ -1412,35 +1464,44 @@ gint TMSCallIPAdpt::StartDTMF(TMSStreamType strmtype, TDes& dtmfstring) { TRACE_PRN_FN_ENT; + gint status(TMS_RESULT_STREAM_TYPE_NOT_SUPPORTED); TmsMsgBufPckg dtmfpckg; + dtmfpckg().iStatus = status; + dtmfpckg().iRequest = ECmdDTMFTonePlayFinished; + if (strmtype == TMS_STREAM_DOWNLINK) { - if (iDTMFDnlinkPlayer /*&& iDTMFDnlinkStatus*/) + status = TMS_RESULT_UNINITIALIZED_OBJECT; + if (iDTMFDnlinkPlayer) { iDTMFDnlinkPlayer->PlayDtmfTone(dtmfstring); - dtmfpckg().iStatus = TMS_RESULT_SUCCESS; - //TMS_EVENT_DTMF_TONE_STARTED - dtmfpckg().iRequest = ECmdDTMFOpenDnlinkComplete; + status = TMS_RESULT_SUCCESS; } + dtmfpckg().iStatus = status; + dtmfpckg().iRequest = ECmdDTMFToneDnlPlayStarted; } else if (strmtype == TMS_STREAM_UPLINK) { - if (iDTMFUplinkPlayer /*&& iDTMFUplinkStatus*/) + status = TMS_RESULT_UNINITIALIZED_OBJECT; + if (iDTMFUplinkPlayer) { iDTMFUplinkPlayer->PlayDtmfTone(dtmfstring); - dtmfpckg().iStatus = TMS_RESULT_SUCCESS; - //TMS_EVENT_DTMF_TONE_STARTED - dtmfpckg().iRequest = ECmdDTMFOpenUplinkComplete; + status = TMS_RESULT_SUCCESS; } + dtmfpckg().iStatus = status; + dtmfpckg().iRequest = ECmdDTMFToneUplPlayStarted; } if (iDTMFNotifier) { - iDTMFNotifier->SetDtmf(dtmfpckg, TRUE); + iDTMFNotifier->SetDtmf(dtmfpckg); } + + TRACE_PRN_IF_ERR(status); TRACE_PRN_FN_EXT; - return TMS_RESULT_SUCCESS; + return status; } + // ----------------------------------------------------------------------------- // TMSCallIPAdpt::StopDTMF // @@ -1454,7 +1515,7 @@ { iDTMFDnlinkPlayer->Cancel(); } - else + else if (streamtype == TMS_STREAM_UPLINK) { iDTMFUplinkPlayer->Cancel(); } @@ -1468,10 +1529,8 @@ // // ----------------------------------------------------------------------------- // -gint TMSCallIPAdpt::ContinueDTMF(TBool /*continuesending*/) +gint TMSCallIPAdpt::ContinueDTMF(gboolean /*continuesending*/) { - TRACE_PRN_FN_ENT; - TRACE_PRN_FN_EXT; return TMS_RESULT_FEATURE_NOT_SUPPORTED; } @@ -1481,10 +1540,10 @@ // // ----------------------------------------------------------------------------- // -void TMSCallIPAdpt::DTMFInitCompleted(TInt /*error*/) +void TMSCallIPAdpt::DTMFInitCompleted(gint /*error*/) { - //DTMF init status TRACE_PRN_FN_ENT; + //TRACE_PRN_IF_ERR(error); TRACE_PRN_FN_EXT; } @@ -1493,22 +1552,22 @@ // // ----------------------------------------------------------------------------- // -void TMSCallIPAdpt::DTMFToneFinished(TInt error) +void TMSCallIPAdpt::DTMFToneFinished(gint error) { TRACE_PRN_FN_ENT; + TRACE_PRN_IF_ERR(error); TmsMsgBufPckg dtmfpckg; - if(error == KErrUnderflow || error == KErrInUse) + // Ignore KErrUnderflow - end of DTMF playback. + if(error == KErrUnderflow /*|| error == KErrInUse*/) { error = TMS_RESULT_SUCCESS; } - dtmfpckg().iStatus = error; - //TMS_EVENT_DTMF_TONE_STOPPED dtmfpckg().iRequest = ECmdDTMFTonePlayFinished; if (iDTMFNotifier) { - iDTMFNotifier->SetDtmf(dtmfpckg, TRUE); + iDTMFNotifier->SetDtmf(dtmfpckg); } TRACE_PRN_FN_EXT; } @@ -1517,8 +1576,8 @@ // TMSCallIPAdpt::NotifyClient // ----------------------------------------------------------------------------- // -void TMSCallIPAdpt::NotifyClient(const gint strmId, const TInt aCommand, - const TInt aStatus, const TInt64 /*aInt64*/) +void TMSCallIPAdpt::NotifyClient(const gint strmId, const gint aCommand, + const gint aStatus, const gint64 /*aInt64*/) { iMsgBuffer.iRequest = aCommand; iMsgBuffer.iStatus = aStatus;