diff -r 7b872347d83b -r 6d0b9f605b61 sipvoipprovider/src/svpmtsession.cpp --- a/sipvoipprovider/src/svpmtsession.cpp Tue Feb 02 00:05:57 2010 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,382 +0,0 @@ -/* -* Copyright (c) 2006-2008 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Representation of SVP MT session -* -*/ - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include "svpmtsession.h" -#include "svpaudioutility.h" -#include "svpsipconsts.h" -#include "svplogger.h" - -// --------------------------------------------------------------------------- -// CSVPMtSession::CSVPMtSession -// --------------------------------------------------------------------------- -// -CSVPMtSession::CSVPMtSession( CMceInSession* aMtSession, - TMceTransactionDataContainer& aContainer, - TUint32 aVoIPProfileId, - MSVPSessionObserver& aObserver, - CSVPUtility& aSVPUtility, - CSVPRtpObserver& aRtpObserver, - TInt aKeepAliveValue, - TBool aPreconditions ) - : CSVPSessionBase( aContainer, aObserver, aSVPUtility, aRtpObserver ) - { - iSession = aMtSession; - iVoIPProfileId = aVoIPProfileId; - iKeepAliveValue = aKeepAliveValue; - iPreconditions = aPreconditions; - - CMceSession::TControlPathSecurityLevel securityLevel = - aMtSession->ControlPathSecurityLevel(); - - // Not secure call event is sent according this, in mt case event isn't sent - iCallEventToBeSent = MCCPCallObserver::ECCPSecureNotSpecified; - - if ( CMceSession::EControlPathSecure == securityLevel && - KMceSessionSecure == aMtSession->Type() ) - { - SVPDEBUG1( "CSVPMtSession::CSVPMtSession Mt secure" ) - iSecured = ETrue; - } - else - { - SVPDEBUG1( "CSVPMtSession::CSVPMtSession Mt non secure" ) - iSecured = EFalse; - } - } - -// --------------------------------------------------------------------------- -// CSVPMtSession::NewL -// --------------------------------------------------------------------------- -// -CSVPMtSession* CSVPMtSession::NewL( CMceInSession* aMtSession, - TMceTransactionDataContainer& aContainer, - TUint32 aServiceId, - TUint32 aVoIPProfileId, - MSVPSessionObserver& aObserver, - CSVPUtility& aSVPUtility, - CSVPRtpObserver& aRtpObserver, - TInt aKeepAliveValue, - TBool aPreconditions ) - { - CSVPMtSession* self = new ( ELeave ) CSVPMtSession( aMtSession, - aContainer, - aVoIPProfileId, - aObserver, - aSVPUtility, - aRtpObserver, - aKeepAliveValue, - aPreconditions ); - CleanupStack::PushL( self ); - self->ConstructL( aServiceId ); - CleanupStack::Pop( self ); - return self; - } - -// --------------------------------------------------------------------------- -// CSVPMtSession::~CSVPMtSession -// --------------------------------------------------------------------------- -// -CSVPMtSession::~CSVPMtSession() - { - SVPDEBUG1( "CSVPMtSession::~CSVPMtSession" ) - } - -// --------------------------------------------------------------------------- -// CSVPMtSession::ConstructL -// --------------------------------------------------------------------------- -// -void CSVPMtSession::ConstructL( TUint32 aServiceId ) - { - SVPDEBUG1( "CSVPMtSession::ConstructL In" ) - - iCallParameters = CCCPCallParameters::NewL(); - iCallParameters->SetServiceId( aServiceId ); - iCallParameters->SetCallType( CCPCall::ECallTypePS ); - - // modify QoS preconditions - if ( iPreconditions ) - { - SVPDEBUG1( "CSVPMtSession::ConstructL preconditions supported" ) - iSession->SetModifierL( KMcePreconditions, KMcePreconditionsSupported ); - } - else - { - SVPDEBUG1( "CSVPMtSession::ConstructL preconditions NOT supported" ) - iSession->SetModifierL( KMcePreconditions, KMcePreconditionsNotUsed ); - } - - // modify Old way hold on - iSession->SetModifierL( KMceMediaDirection, KMceMediaDirectionWithAddress ); - - InitializePropertyWatchingL(); - - SVPDEBUG1( "CSVPMtSession::ConstructL Out" ) - } - - -// from MCCPCall -// --------------------------------------------------------------------------- -// CSVPMtSession::Answer -// --------------------------------------------------------------------------- -// -TInt CSVPMtSession::Answer() - { - SVPDEBUG1( "CSVPMtSession::Answer In" ) - - // stop expires timer - StopTimers(); - - // answer to session - TRAPD( err, DoAnswerL() ); - - if ( KErrNone != err ) - { - SVPDEBUG2( "CSVPMtSession::Answer Out return(err)=%d", err ) - return err; - } - else - { - ExecCbCallStateChanged( MCCPCallObserver::ECCPStateAnswering ); - SVPDEBUG2( "CSVPMtSession::Answer Out return=%d", err ) - return err; - } - } - -// --------------------------------------------------------------------------- -// CSVPMtSession::DoAnswerL -// --------------------------------------------------------------------------- -// -void CSVPMtSession::DoAnswerL() - { - SVPDEBUG1( "CSVPMtSession::DoAnswerL In" ) - - static_cast( iSession )->AcceptL(); - HandleMtStreamsL( iSession->Streams() ); - - SVPDEBUG1( "CSVPMtSession::DoAnswerL Out" ) - } - -// --------------------------------------------------------------------------- -// CSVPMtSession::HandleMtStreamsL -// --------------------------------------------------------------------------- -// -void CSVPMtSession::HandleMtStreamsL( - const RPointerArray& aStreams ) - { - SVPDEBUG1( "CSVPMtSession::HandleMtStreamsL In" ) - - // go through streams and enable rtp source and speaker sink if found - for ( TInt i = 0; i < aStreams.Count(); i++ ) - { - SVPDEBUG1( "CSVPMtSession::HandleMtStreamsL for-loop" ) - - CMceMediaStream* stream1 = aStreams[ i ]; - CMceMediaStream& boundStream = stream1->BoundStreamL();// fetch bound stream - - // enable RTP source - if ( stream1->Source() && stream1->Source()->Type() == KMceRTPSource ) - { - SVPDEBUG1( "CSVPMtSession::HandleMtStreamsL RTPSource found" ) - stream1->Source()->EnableL(); - SVPDEBUG1( "CSVPMtSession::HandleMtStreamsL RTPSource ENABLED" ) - } - - // enable speaker sink - SVPAudioUtility::EnableSpeakerSinkL( stream1->Sinks() ); - - // enable mic source - if ( stream1->Source() ) - { - SVPAudioUtility::EnableMicSourceL( *stream1->Source() ); - } - - // enable mic source from bound stream, if found - if ( boundStream.Source() ) - { - SVPAudioUtility::EnableMicSourceL( *boundStream.Source() ); - } - } - - SVPDEBUG1( "CSVPMtSession::HandleMtStreamsL Out" ) - } - -// --------------------------------------------------------------------------- -// CSVPMtSession::IsCallForwarded -// --------------------------------------------------------------------------- -// -TBool CSVPMtSession::IsCallForwarded() const - { - return EFalse; - } - -// --------------------------------------------------------------------------- -// CSVPMtSession::Release -// --------------------------------------------------------------------------- -// -TInt CSVPMtSession::Release() - { - SVPDEBUG1( "CSVPMtSession::Release" ) - delete this; - return KErrNone; - } - -// --------------------------------------------------------------------------- -// CSVPMtSession::Reject -// --------------------------------------------------------------------------- -// -TInt CSVPMtSession::Reject() - { - SVPDEBUG1( "CSVPMtSession::Reject In" ) - - TRAPD( err, static_cast(iSession )->RejectL( - KSVPBusyHereReason, KSVPBusyHereVal ) ); - - if ( !err ) - { - ExecCbCallStateChanged( MCCPCallObserver::ECCPStateIdle ); - } - - SVPDEBUG2( "CSVPMtSession::Reject Out return=%d", err ) - return err; - } - -// --------------------------------------------------------------------------- -// CSVPMtSession::Queue -// --------------------------------------------------------------------------- -// -TInt CSVPMtSession::Queue() - { - SVPDEBUG1( "CSVPMtSession::Queue In" ) - - // Get PS waiting setting - TInt error( KErrNone ); - TInt psWaiting( EFalse ); - CRepository* repository = NULL; - - TRAP( error, repository = CRepository::NewL( KCRUidRichCallSettings ) ); - - if ( KErrNone == error ) - { - error = repository->Get( KRCSPSCallWaiting, psWaiting ); - delete repository; - repository = NULL; - - if ( psWaiting ) - { - // send 180 ringing - Ringing(); - SVPDEBUG1( "CSVPMtSession::Queue Sending 180 Ringing" ) - - // send 182 queued - SVPDEBUG1( "CSVPMtSession::Queue() Sending 182 Queued" ) - TRAPD( err, static_cast ( iSession )->RespondL( - KSVPQueuedReason, KSVPQueuedVal ) ); - - if ( err ) - { - SVPDEBUG2( "CSVPMtSession::Queue Out return=%d", err ) - return err; - } - } - else - { - // ps waiting off, return error - SVPDEBUG1( "CSVPMtSession::Queue Out return=KErrNotReady" ) - return KErrNotReady; - } - } - - SVPDEBUG2( "CSVPMtSession::Queue Out return=%d", error ) - return error; - } - -// --------------------------------------------------------------------------- -// CSVPMtSession::Ringing -// --------------------------------------------------------------------------- -// -TInt CSVPMtSession::Ringing() - { - SVPDEBUG1( "CSVPMtSession::Ringing In" ) - - TRAPD( err, static_cast( iSession )->RingL() ); - - SVPDEBUG2( "CSVPMtSession::Ringing Out return=%d", err ) - return err; - } - -// --------------------------------------------------------------------------- -// CSVPMtSession::Hold -// --------------------------------------------------------------------------- -// -TInt CSVPMtSession::Hold() - { - SVPDEBUG1( "CSVPMtSession::Hold In" ) - - TBool sessionUpdateOngoing = ETrue; - TRAP_IGNORE( SetRtpKeepAliveL( iSession, sessionUpdateOngoing ) ); - - TInt status = CSVPSessionBase::Hold(); - - SVPDEBUG2( "CSVPMtSession::Hold Out return=%d", status ) - return status; - } - -// --------------------------------------------------------------------------- -// CSVPMtSession::Resume -// --------------------------------------------------------------------------- -// -TInt CSVPMtSession::Resume() - { - SVPDEBUG1( "CSVPMtSession::Resume" ) - return CSVPSessionBase::Resume(); - } - -// --------------------------------------------------------------------------- -// CSVPMtSession::IsMobileOriginated -// --------------------------------------------------------------------------- -// -TBool CSVPMtSession::IsMobileOriginated() const - { - SVPDEBUG1( "CSVPMtSession::IsMobileOriginated = EFalse" ) - return EFalse; - } - -// --------------------------------------------------------------------------- -// CSVPMtSession::SetRtpKeepAliveL -// --------------------------------------------------------------------------- -// -void CSVPMtSession::SetRtpKeepAliveL( CMceSession* aSession, - TBool aSessionUpdateOngoing ) - { - SVPDEBUG1( "CSVPMtSession::SetRtpKeepAliveL In" ) - - __ASSERT_ALWAYS( aSession, User::Leave( KErrArgument ) ); - UpdateKeepAliveL( *aSession, aSessionUpdateOngoing ); - - SVPDEBUG1( "CSVPMtSession::SetRtpKeepAliveL Out" ) - } -