diff -r 128eb6a32b84 -r 8dfd592727cb mmserv/tms/tmscallserver/src/tmscallipadpt.cpp --- a/mmserv/tms/tmscallserver/src/tmscallipadpt.cpp Thu May 27 13:20:50 2010 +0300 +++ b/mmserv/tms/tmscallserver/src/tmscallipadpt.cpp Wed Jun 23 18:47:10 2010 +0300 @@ -19,7 +19,6 @@ #include "tmsutility.h" #include "tmsclientserver.h" #include "tmsshared.h" -#include "tmsipcallstream.h" #include "tmscallipadpt.h" using namespace TMS; @@ -46,8 +45,8 @@ void TMSCallIPAdpt::ConstructL() { TRACE_PRN_FN_ENT; + iIPDownlink = NULL; iIPUplink = NULL; - iIPDownlink = NULL; iDTMFDnlinkPlayer = NULL; iDTMFUplinkPlayer = NULL; iDTMFNotifier = NULL; @@ -114,8 +113,8 @@ // // ----------------------------------------------------------------------------- // -gint TMSCallIPAdpt::CreateStream(TMSCallType /*callType*/, - TMSStreamType strmType, gint& outStrmId) +gint TMSCallIPAdpt::CreateStream(const TMSCallType /*callType*/, + const TMSStreamType strmType, gint& outStrmId) { TRACE_PRN_FN_ENT; gint status(TMS_RESULT_SUCCESS); @@ -126,10 +125,10 @@ status = TMS_RESULT_ALREADY_EXIST; if (!iUplinkInitialized) { - iUplinkInitialized = TRUE; iUplinkStreamId = iNextStreamId; outStrmId = iUplinkStreamId; iNextStreamId++; + //iUplinkInitialized = TRUE; //not initialized yet! status = TMS_RESULT_SUCCESS; } break; @@ -139,10 +138,10 @@ status = TMS_RESULT_ALREADY_EXIST; if (!iDnlinkInitialized) { - iDnlinkInitialized = TRUE; iDnlinkStreamId = iNextStreamId; outStrmId = iDnlinkStreamId; iNextStreamId++; + //iDnlinkInitialized = TRUE; //not initialized yet! status = TMS_RESULT_SUCCESS; } break; @@ -162,12 +161,13 @@ // // ----------------------------------------------------------------------------- // -gint TMSCallIPAdpt::InitStream(TMSCallType /*callType*/, TMSStreamType strmType, - gint strmId, TMSFormatType frmtType, const RMessage2& message) +gint TMSCallIPAdpt::InitStream(const TMSCallType /*callType*/, + const TMSStreamType strmType, const gint strmId, + const TMSFormatType frmtType, const gint retrytime, + const RMessage2& message) { TRACE_PRN_FN_ENT; gint status(TMS_RESULT_SUCCESS); - guint32 fourCC = TOFOURCC(frmtType); if (fourCC == NULL) { @@ -182,12 +182,11 @@ if (strmId == iUplinkStreamId) { SetFormat(iUplinkStreamId, fourCC); - status = OpenUplinkL(message); + status = OpenUplink(message, retrytime); if (status == TMS_RESULT_SUCCESS) { status = InitDTMF(TMS_STREAM_UPLINK); } - NotifyClient(iUplinkStreamId, ECmdUplinkInitComplete, status); } break; } @@ -197,12 +196,11 @@ if (strmId == iDnlinkStreamId) { SetFormat(iDnlinkStreamId, fourCC); - status = OpenDownlinkL(message); + status = OpenDownlink(message, retrytime); if (status == TMS_RESULT_SUCCESS) { status = InitDTMF(TMS_STREAM_DOWNLINK); } - NotifyClient(iDnlinkStreamId, ECmdDownlinkInitComplete, status); } break; } @@ -223,8 +221,8 @@ // // ----------------------------------------------------------------------------- // -gint TMSCallIPAdpt::StartStream(TMSCallType /*callType*/, - TMSStreamType strmType, gint strmId) +gint TMSCallIPAdpt::StartStream(const TMSCallType /*callType*/, + const TMSStreamType strmType, const gint strmId, const gint retrytime) { TRACE_PRN_FN_ENT; gint status(TMS_RESULT_INVALID_STATE); @@ -232,9 +230,9 @@ { case TMS_STREAM_UPLINK: { - if (strmId == iUplinkStreamId && iIPUplink) + if (iIPUplink && strmId == iUplinkStreamId) { - iIPUplink->Start(); + iIPUplink->Start(retrytime); status = TMS_RESULT_SUCCESS; NotifyClient(iUplinkStreamId, ECmdUplinkStarted, status); } @@ -242,9 +240,9 @@ } case TMS_STREAM_DOWNLINK: { - if (strmId == iDnlinkStreamId && iIPDownlink) + if (iIPDownlink && strmId == iDnlinkStreamId) { - iIPDownlink->Start(); + iIPDownlink->Start(retrytime); status = TMS_RESULT_SUCCESS; NotifyClient(iDnlinkStreamId, ECmdDownlinkStarted, status); } @@ -265,8 +263,8 @@ // // ----------------------------------------------------------------------------- // -gint TMSCallIPAdpt::PauseStream(TMSCallType /*callType*/, - TMSStreamType strmType, gint strmId) +gint TMSCallIPAdpt::PauseStream(const TMSCallType /*callType*/, + const TMSStreamType strmType, const gint strmId) { TRACE_PRN_FN_ENT; gint status(TMS_RESULT_INVALID_STATE); @@ -307,8 +305,8 @@ // // ----------------------------------------------------------------------------- // -gint TMSCallIPAdpt::StopStream(TMSCallType /*callType*/, TMSStreamType strmType, - gint strmId) +gint TMSCallIPAdpt::StopStream(const TMSCallType /*callType*/, + const TMSStreamType strmType, const gint strmId) { TRACE_PRN_FN_ENT; gint status(TMS_RESULT_INVALID_STATE); @@ -317,7 +315,7 @@ { case TMS_STREAM_UPLINK: { - if (strmId == iUplinkStreamId && iIPUplink) + if (iIPUplink && strmId == iUplinkStreamId) { iIPUplink->Stop(); status = TMS_RESULT_SUCCESS; @@ -327,7 +325,7 @@ } case TMS_STREAM_DOWNLINK: { - if (strmId == iDnlinkStreamId && iIPDownlink) + if (iIPDownlink && strmId == iDnlinkStreamId) { iIPDownlink->Stop(); status = TMS_RESULT_SUCCESS; @@ -350,8 +348,8 @@ // // ----------------------------------------------------------------------------- // -gint TMSCallIPAdpt::DeinitStream(TMSCallType /*callType*/, - TMSStreamType strmType, gint strmId) +gint TMSCallIPAdpt::DeinitStream(const TMSCallType /*callType*/, + const TMSStreamType strmType, const gint strmId) { TRACE_PRN_FN_ENT; gint status(TMS_RESULT_INVALID_STATE); @@ -360,20 +358,19 @@ { case TMS_STREAM_UPLINK: { - if (strmId == iUplinkStreamId && iIPUplink) + if (iIPUplink && strmId == iUplinkStreamId) { iIPUplink->Stop(); //iUplinkStreamId = -1; iUplinkInitialized = FALSE; status = TMS_RESULT_SUCCESS; - NotifyClient(iUplinkStreamId, ECmdDownlinkDeInitComplete, - status); + NotifyClient(iUplinkStreamId, ECmdUplinkDeInitComplete, status); } break; } case TMS_STREAM_DOWNLINK: { - if (strmId == iDnlinkStreamId && iIPDownlink) + if (iIPDownlink && strmId == iDnlinkStreamId) { iIPDownlink->Stop(); //iDnlinkStreamId = -1; @@ -400,8 +397,8 @@ // // ----------------------------------------------------------------------------- // -gint TMSCallIPAdpt::DeleteStream(TMSCallType /*callType*/, - TMSStreamType strmType, gint strmId) +gint TMSCallIPAdpt::DeleteStream(const TMSCallType /*callType*/, + const TMSStreamType strmType, const gint strmId) { TRACE_PRN_FN_ENT; gint status(TMS_RESULT_SUCCESS); @@ -409,7 +406,6 @@ { case TMS_STREAM_UPLINK: { - // This is additional error checking if (strmId == iUplinkStreamId) { iUplinkStreamId = -1; @@ -419,7 +415,6 @@ } case TMS_STREAM_DOWNLINK: { - // This is additional error checking if (strmId == iDnlinkStreamId) { iDnlinkStreamId = -1; @@ -442,8 +437,8 @@ // // ----------------------------------------------------------------------------- // -gint TMSCallIPAdpt::DataXferBufferEmptied(TMSCallType /*callType*/, - TMSStreamType strmType, gint strmId) +gint TMSCallIPAdpt::DataXferBufferEmptied(const TMSCallType /*callType*/, + const TMSStreamType strmType, const gint strmId) { TRACE_PRN_FN_ENT; gint status(TMS_RESULT_SUCCESS); @@ -473,8 +468,8 @@ // // ----------------------------------------------------------------------------- // -gint TMSCallIPAdpt::DataXferBufferFilled(TMSCallType /*callType*/, - TMSStreamType strmType, gint strmId, guint datasize) +gint TMSCallIPAdpt::DataXferBufferFilled(const TMSCallType /*callType*/, + const TMSStreamType strmType, const gint strmId, const guint datasize) { TRACE_PRN_FN_ENT; gint status(TMS_RESULT_SUCCESS); @@ -543,14 +538,12 @@ { TRACE_PRN_FN_ENT; gint status(TMS_RESULT_INVALID_STATE); - if (iDnlinkInitialized && iIPDownlink) { status = iIPDownlink->GetMaxVolume(volume); iMaxVolume = volume; TRACE_PRN_N1(_L("TMS->TMSCallIPAdpt: GetMaxVolume [%d]"), iMaxVolume); } - TRACE_PRN_FN_EXT; return status; } @@ -657,7 +650,7 @@ { status = iIPDownlink->GetMaxVolume(volume); iMaxVolume = volume; - TRACE_PRN_N1(_L("TMS->TMSCallIPAdpt: GetMaxVolume [%d]"), iMaxVolume); + TRACE_PRN_N1(_L("TMS->TMSCallIPAdpt::GetGlobalMaxVolume [%d]"), volume); } TRACE_PRN_FN_EXT; return status; @@ -672,6 +665,7 @@ { TRACE_PRN_FN_ENT; gint status(TMS_RESULT_INVALID_STATE); + //iGlobalVol = volume; if (iDnlinkInitialized && iIPDownlink) { status = iIPDownlink->SetVolume(volume); @@ -710,7 +704,7 @@ { status = iIPUplink->GetMaxGain(gain); iMaxGain = gain; - TRACE_PRN_N1(_L("TMS->TMSCallIPAdpt::GetMaxGain [%d]"), iMaxGain); + TRACE_PRN_N1(_L("TMS->TMSCallIPAdpt::GetGlobalMaxGain [%d]"), gain); } TRACE_PRN_FN_EXT; return status; @@ -725,6 +719,7 @@ { TRACE_PRN_FN_ENT; gint status(TMS_RESULT_INVALID_STATE); + //iGlobalGain = gain; if (iUplinkInitialized && iIPUplink) { status = iIPUplink->SetGain(gain); @@ -995,11 +990,11 @@ } // ----------------------------------------------------------------------------- -// TMSCallIPAdpt::OpenDownlinkL +// TMSCallIPAdpt::OpenDownlink // Method for player initialization. // ----------------------------------------------------------------------------- // -gint TMSCallIPAdpt::OpenDownlinkL(const RMessage2& message) +gint TMSCallIPAdpt::OpenDownlink(const RMessage2& message, const gint retrytime) { TRACE_PRN_FN_ENT; gint status(TMS_RESULT_UNINITIALIZED_OBJECT); @@ -1019,10 +1014,11 @@ if (!iIPDownlink) { - iIPDownlink = TMSIPDownlink::NewL(iDnFourCC, iPriority); + TRAP(status, iIPDownlink = TMSIPDownlink::NewL(*this, iDnFourCC, + iPriority, retrytime)); } - if (iIPDownlink) + if (iIPDownlink && status == TMS_RESULT_SUCCESS) { // Open message queue for handling server notifications to the client if (iMsgQueueDn.Handle() <= 0) @@ -1043,11 +1039,11 @@ } // ----------------------------------------------------------------------------- -// TMSCallIPAdpt::OpenUplinkL +// TMSCallIPAdpt::OpenUplink // Method for recorder initialization. // ----------------------------------------------------------------------------- // -gint TMSCallIPAdpt::OpenUplinkL(const RMessage2& message) +gint TMSCallIPAdpt::OpenUplink(const RMessage2& message, const gint retrytime) { TRACE_PRN_FN_ENT; gint status(TMS_RESULT_UNINITIALIZED_OBJECT); @@ -1065,10 +1061,11 @@ if (!iIPUplink) { - iIPUplink = TMSIPUplink::NewL(iUpFourCC, iPriority); + TRAP(status, iIPUplink = TMSIPUplink::NewL(*this, iUpFourCC, iPriority, + retrytime)); } - if (iIPUplink) + if (iIPUplink && status == TMS_RESULT_SUCCESS) { // Open message queue for handling server notifications to the client if (iMsgQueueUp.Handle() <= 0) @@ -1360,11 +1357,13 @@ // gint TMSCallIPAdpt::SetOutput(TMSAudioOutput output) { + TRACE_PRN_FN_ENT; gint status(TMS_RESULT_UNINITIALIZED_OBJECT); if (iDnlinkInitialized && iIPDownlink) { TRAP(status, iIPDownlink->SetAudioDeviceL(output)); } + TRACE_PRN_FN_EXT; return status; } // ----------------------------------------------------------------------------- @@ -1374,13 +1373,16 @@ // gint TMSCallIPAdpt::GetOutput(TMSAudioOutput& output) { + TRACE_PRN_FN_ENT; gint status(TMS_RESULT_UNINITIALIZED_OBJECT); if (iDnlinkInitialized && iIPDownlink) { TRAP(status, iIPDownlink->GetAudioDeviceL(output)); } + TRACE_PRN_FN_EXT; return status; } + // ----------------------------------------------------------------------------- // TMSCallIPAdpt::GetPreviousOutput // @@ -1397,7 +1399,7 @@ // ----------------------------------------------------------------------------- // gint TMSCallIPAdpt::GetAvailableOutputsL(gint& /*count*/, - CBufFlat*& /*outputsbuffer*/) + CBufFlat*& /*outputsbuf*/) { return TMS_RESULT_FEATURE_NOT_SUPPORTED; } @@ -1416,35 +1418,15 @@ { 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)); + KAudioDTMFString, KAudioPriorityDTMFString)); } 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)); + KAudioDTMFString, KAudioPriorityDTMFString)); } if (!iDTMFNotifier && status == TMS_RESULT_SUCCESS) @@ -1510,18 +1492,20 @@ gint TMSCallIPAdpt::StopDTMF(TMSStreamType streamtype) { TRACE_PRN_FN_ENT; + gint status(TMS_RESULT_SUCCESS); - if (streamtype == TMS_STREAM_DOWNLINK) + if (streamtype == TMS_STREAM_DOWNLINK && iDTMFDnlinkPlayer) { iDTMFDnlinkPlayer->Cancel(); } - else if (streamtype == TMS_STREAM_UPLINK) + else if (streamtype == TMS_STREAM_UPLINK && iDTMFUplinkPlayer) { + //status = iDTMFUplinkPlayer->StopDtmfTone(); iDTMFUplinkPlayer->Cancel(); } TRACE_PRN_FN_EXT; - return TMS_RESULT_SUCCESS; + return status; } // ----------------------------------------------------------------------------- @@ -1529,7 +1513,7 @@ // // ----------------------------------------------------------------------------- // -gint TMSCallIPAdpt::ContinueDTMF(gboolean /*continuesending*/) +gint TMSCallIPAdpt::ContinueDTMF(const gboolean /*sending*/) { return TMS_RESULT_FEATURE_NOT_SUPPORTED; } @@ -1540,10 +1524,10 @@ // // ----------------------------------------------------------------------------- // -void TMSCallIPAdpt::DTMFInitCompleted(gint /*error*/) +void TMSCallIPAdpt::DTMFInitCompleted(gint /*status*/) { TRACE_PRN_FN_ENT; - //TRACE_PRN_IF_ERR(error); + // TODO: process error TRACE_PRN_FN_EXT; } @@ -1552,18 +1536,18 @@ // // ----------------------------------------------------------------------------- // -void TMSCallIPAdpt::DTMFToneFinished(gint error) +void TMSCallIPAdpt::DTMFToneFinished(gint status) { TRACE_PRN_FN_ENT; - TRACE_PRN_IF_ERR(error); + TRACE_PRN_IF_ERR(status); TmsMsgBufPckg dtmfpckg; - // Ignore KErrUnderflow - end of DTMF playback. - if(error == KErrUnderflow /*|| error == KErrInUse*/) - { - error = TMS_RESULT_SUCCESS; - } - dtmfpckg().iStatus = error; + // KErrUnderflow indicates end of DTMF playback. + if (status == KErrUnderflow /*|| status == KErrInUse*/) + { + status = TMS_RESULT_SUCCESS; + } + dtmfpckg().iStatus = TMSUtility::TMSResult(status); dtmfpckg().iRequest = ECmdDTMFTonePlayFinished; if (iDTMFNotifier) { @@ -1573,14 +1557,70 @@ } // ----------------------------------------------------------------------------- +// TMSCallIPAdpt::DownlinkInitCompleted +// From TMSIPDevSoundObserver +// ----------------------------------------------------------------------------- +// +void TMSCallIPAdpt::DownlinkInitCompleted(gint status) + { + TRACE_PRN_FN_ENT; + if (status == TMS_RESULT_SUCCESS) + { + iDnlinkInitialized = TRUE; + } + NotifyClient(iDnlinkStreamId, ECmdDownlinkInitComplete, status); + TRACE_PRN_FN_EXT; + } + +// ----------------------------------------------------------------------------- +// TMSCallIPAdpt::UplinkInitCompleted +// From TMSIPDevSoundObserver +// ----------------------------------------------------------------------------- +// +void TMSCallIPAdpt::UplinkInitCompleted(gint status) + { + TRACE_PRN_FN_ENT; + if (status == TMS_RESULT_SUCCESS) + { + iUplinkInitialized = TRUE; + } + NotifyClient(iUplinkStreamId, ECmdUplinkInitComplete, status); + TRACE_PRN_FN_EXT; + } + +// ----------------------------------------------------------------------------- +// TMSCallIPAdpt::UplinkStarted +// From TMSIPDevSoundObserver +// ----------------------------------------------------------------------------- +// +void TMSCallIPAdpt::UplinkStarted(gint status) + { + TRACE_PRN_FN_ENT; + NotifyClient(iUplinkStreamId, ECmdUplinkStarted, status); + TRACE_PRN_FN_EXT; + } + +// ----------------------------------------------------------------------------- +// TMSCallIPAdpt::DownlinkStarted +// From TMSIPDevSoundObserver +// ----------------------------------------------------------------------------- +// +void TMSCallIPAdpt::DownlinkStarted(gint status) + { + TRACE_PRN_FN_ENT; + NotifyClient(iDnlinkStreamId, ECmdDownlinkStarted, status); + TRACE_PRN_FN_EXT; + } + +// ----------------------------------------------------------------------------- // TMSCallIPAdpt::NotifyClient // ----------------------------------------------------------------------------- // -void TMSCallIPAdpt::NotifyClient(const gint strmId, const gint aCommand, - const gint aStatus, const gint64 /*aInt64*/) +void TMSCallIPAdpt::NotifyClient(const gint strmId, const gint command, + const gint status, const gint64 /*int64*/) { - iMsgBuffer.iRequest = aCommand; - iMsgBuffer.iStatus = aStatus; + iMsgBuffer.iRequest = command; + iMsgBuffer.iStatus = status; if (strmId == iUplinkStreamId) {