diff -r 65a3ef1d5bd0 -r f742655b05bf callcontinuity/vcc/src/cvccdtmfprovider.cpp --- a/callcontinuity/vcc/src/cvccdtmfprovider.cpp Thu Aug 19 09:45:22 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,263 +0,0 @@ -/* -* Copyright (c) 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: Sends and receives DTMF tones -* -*/ - -#include - -#include "cvccdtmfprovider.h" -#include "cvccdirector.h" -#include "rubydebug.h" - -// ======== MEMBER FUNCTIONS ======== - -// --------------------------------------------------------------------------- -// Symbian constructor -// --------------------------------------------------------------------------- -// -CVccDtmfProvider* CVccDtmfProvider::NewL( - RPointerArray& /*aProviders*/, - const MCCPDTMFObserver& aObserver, - CVccDirector& aDirector ) - { - RUBY_DEBUG_BLOCK( "CVccDtmfProvider::NewL" ); - CVccDtmfProvider* self; - self = new( ELeave ) CVccDtmfProvider( aObserver, aDirector ); - CleanupStack::PushL( self ); - self->ConstructL(); - CleanupStack::Pop( self ); - return self; - } - -// --------------------------------------------------------------------------- -// Destructor -// --------------------------------------------------------------------------- -// -CVccDtmfProvider::~CVccDtmfProvider() - { - iObservers.Close(); - iProviders.Close(); - } - -// --------------------------------------------------------------------------- -// CVccDtmfProvider::CVccDtmfProvider -// C++ default constructor can NOT contain any code, that might leave. -// --------------------------------------------------------------------------- -// -CVccDtmfProvider::CVccDtmfProvider( const MCCPDTMFObserver& aObserver, - CVccDirector& aDirector): - iDirector( &aDirector ) - { - RUBY_DEBUG_BLOCK( "CVccDtmfProvider::CVccDtmfProvider" ); - iObservers.InsertInAddressOrder( &aObserver ); - } - -// --------------------------------------------------------------------------- -// 2nd phase constructor -// --------------------------------------------------------------------------- -// -void CVccDtmfProvider::ConstructL() - { - RUBY_DEBUG_BLOCKL( "CVccDtmfProvider::ConstructL" ); - } - - -// --------------------------------------------------------------------------- -// @ see MCCPDTMFObserver::HandleDTMFEvent -// --------------------------------------------------------------------------- -// -void CVccDtmfProvider::HandleDTMFEvent( const MCCPDTMFObserver::TCCPDtmfEvent aEvent, - const TInt aError, - const TChar aTone ) const - { - RUBY_DEBUG_BLOCK( "CVccDtmfProvider::HandleDTMFEvent" ); - RUBY_DEBUG1( "CVccDtmfProvider::HandleDTMFEvent -- obs count: %d", - iObservers.Count() ); - for ( TInt i = 0; i < iObservers.Count(); i++ ) - { - iObservers[i]->HandleDTMFEvent( aEvent, aError, aTone ); - } - } - -// --------------------------------------------------------------------------- -// @see MCCPDTMFProvider::CancelDtmfStringSending -// --------------------------------------------------------------------------- -// -TInt CVccDtmfProvider::CancelDtmfStringSending() - { - RUBY_DEBUG_BLOCK( "CVccDtmfProvider::CancelDtmfStringSending" ); - RUBY_DEBUG1( "-- call type = %d (0 = cs, 4 = ps)", - iDirector->CurrentCallTypeForDTMF() ); - TInt err( KErrNotSupported ); - - CConvergedCallProvider* prov = iDirector->GetProvider(); - if( prov ) - { - MCCPDTMFProvider* dtmf = NULL; - TRAPD( err1, dtmf = prov->DTMFProviderL( *this ) ); - if( err1 == KErrNone ) - { - err = dtmf->CancelDtmfStringSending(); - } - else - { - err = err1; - } - - } - - RUBY_DEBUG1( "err = %d ", err ); - - return err; - } - -// --------------------------------------------------------------------------- -// @see MCCPDTMFProvider::StartDtmfTone -// --------------------------------------------------------------------------- -// -TInt CVccDtmfProvider::StartDtmfTone( const TChar aTone ) - { - RUBY_DEBUG_BLOCK( "CVccDtmfProvider::StartDtmfTone" ); - RUBY_DEBUG1( "-- call type = %d (0 = cs, 4 = ps)", - iDirector->CurrentCallTypeForDTMF() ); - TInt err( KErrNotSupported ); - - CConvergedCallProvider* prov = iDirector->GetProvider(); - if( prov ) - { - MCCPDTMFProvider* dtmf = NULL; - TRAPD( err1, dtmf = prov->DTMFProviderL( *this ) ); - if( err1 == KErrNone ) - { - err = dtmf->StartDtmfTone( aTone ); - } - else - { - err = err1; - } - } - return err; - } - -// --------------------------------------------------------------------------- -// @see MCCPDTMFProvider::StopDtmfTone -// --------------------------------------------------------------------------- -// -TInt CVccDtmfProvider::StopDtmfTone() - { - RUBY_DEBUG_BLOCK( "CVccDtmfProvider::StopDtmfTone" ); - RUBY_DEBUG1( "-- call type = %d (0 = cs, 4 = ps)", - iDirector->CurrentCallTypeForDTMF() ); - TInt err( KErrNotSupported ); - CConvergedCallProvider* prov = iDirector->GetProvider(); - if( prov ) - { - MCCPDTMFProvider* dtmf = NULL; - TRAPD( err1, dtmf = prov->DTMFProviderL( *this ) ); - if( err1 == KErrNone ) - { - err = dtmf->StopDtmfTone(); - } - else - { - err = err1; - } - } - return err; - } - -// --------------------------------------------------------------------------- -// @see MCCPDTMFProvider::SendDtmfToneString -// --------------------------------------------------------------------------- -// -TInt CVccDtmfProvider::SendDtmfToneString( const TDesC& aString ) - { - RUBY_DEBUG_BLOCK( "CVccDtmfProvider::SendDtmfToneString" ); - RUBY_DEBUG1( "-- call type = %d (0 = cs, 4 = ps)", - iDirector->CurrentCallTypeForDTMF() ); - TInt err( KErrNotSupported ); - - CConvergedCallProvider* prov = iDirector->GetProvider(); - if( prov ) - { - MCCPDTMFProvider* dtmf = NULL; - TRAPD( err1, dtmf = prov->DTMFProviderL( *this ) ); - if( err1 == KErrNone ) - { - err = dtmf->SendDtmfToneString( aString ); - } - else - { - err = err1; - } - } - RUBY_DEBUG1( "err = %d ", err ); - - return err; - } - -// --------------------------------------------------------------------------- -// @see MCCPDTMFProvider::ContinueDtmfStringSending -// --------------------------------------------------------------------------- -// -TInt CVccDtmfProvider::ContinueDtmfStringSending( const TBool aContinue ) - { - RUBY_DEBUG_BLOCK( "CVccDtmfProvider::ContinueDtmfStringSending" ); - RUBY_DEBUG1( "-- call type = %d (0 = cs, 4 = ps)", - iDirector->CurrentCallTypeForDTMF() ); - TInt err ( KErrNotSupported ); - - CConvergedCallProvider* prov = iDirector->GetProvider(); - if( prov ) - { - MCCPDTMFProvider* dtmf = NULL; - TRAPD( err1, dtmf = prov->DTMFProviderL( *this ) ); - if( err1 == KErrNone ) - { - err = dtmf->ContinueDtmfStringSending( aContinue ); - } - else - { - err = err1; - } - } - return err; - } - -// --------------------------------------------------------------------------- -// @see MCCPDTMFProvider::AddObserverL -// --------------------------------------------------------------------------- -// -void CVccDtmfProvider::AddObserverL( const MCCPDTMFObserver& aObserver ) - { - RUBY_DEBUG_BLOCK( "CVccDtmfProvider::AddObserverL" ); - iObservers.InsertInAddressOrderL( &aObserver ); - } - -// --------------------------------------------------------------------------- -// @see MCCPDTMFProvider::RemoveObserver -// --------------------------------------------------------------------------- -// -TInt CVccDtmfProvider::RemoveObserver( const MCCPDTMFObserver& aObserver ) - { - RUBY_DEBUG_BLOCK( "CVccDtmfProvider::RemoveObserver" ); - TInt res = iObservers.Find( &aObserver ); - if ( res != KErrNotFound ) - { - iObservers.Remove( res ); - res = KErrNone; - } - return res; - }