diff -r 000000000000 -r 1bce908db942 multimediacommscontroller/tsrc/componenttests/src/test_async_features.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/multimediacommscontroller/tsrc/componenttests/src/test_async_features.cpp Tue Feb 02 01:04:58 2010 +0200 @@ -0,0 +1,224 @@ +/* +* Copyright (c) 2006 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: +* +*/ + + + + +// INCLUDES +#include "test_async_features.h" +#include "mccteststubs.h" +#include "mmccinterface.h" +#include "mmcccodecinformation.h" +#include "testdefinitions.hrh" + + +// ======== MEMBER FUNCTIONS ================================================= + +// --------------------------------------------------------------------------- +// CTestAsyncFeat::CTestAsyncFeat +// C++ default constructor can NOT contain any code, that +// might leave. +// --------------------------------------------------------------------------- +// +CTestAsyncFeat::CTestAsyncFeat( CConsoleBase& aConsole, + const TMccNetSettings& aNetsettings, CMccInterface& aIF, + CMccInterfaceStub& aIFStub ) + : iInterface( aIF ), iConsole( aConsole ), iNetsettings( aNetsettings ), + iIfStub( aIFStub ) + { + } + +// --------------------------------------------------------------------------- +// CTestAsyncFeat::ConstructL +// Symbian 2nd phase constructor can leave. +// --------------------------------------------------------------------------- +// +void CTestAsyncFeat::ConstructL( ) + { + } + +// --------------------------------------------------------------------------- +// CTestAsyncFeat::NewL +// Static constructor. +// --------------------------------------------------------------------------- +// +CTestAsyncFeat* CTestAsyncFeat::NewL( CConsoleBase& aConsole, + const TMccNetSettings& aNetsettings, CMccInterface& aIF, + CMccInterfaceStub& aIFStub ) + { + CTestAsyncFeat* self + = new ( ELeave ) CTestAsyncFeat( aConsole, aNetsettings, aIF, aIFStub ); + CleanupStack::PushL( self ); + + self->ConstructL(); + + CleanupStack::Pop( self ); + return self; + } + +// --------------------------------------------------------------------------- +// CTestAsyncFeat::~CTestAsyncFeat +// Destructor. +// --------------------------------------------------------------------------- +// +CTestAsyncFeat::~CTestAsyncFeat() + { + delete iCodec; + } + +// --------------------------------------------------------------------------- +// CTestAsyncFeat::DoRunAsyncFeatureTestsL +// --------------------------------------------------------------------------- +// +void CTestAsyncFeat::DoRunAsyncFeatureTestsL() + { + iConsole.Printf( _L("REQUEST MEDIA QUALITY\n") ); + RDebug::Print( _L("Mcc_COM_TEST_START: TestMediaQualityRequestL") ); + //__UHEAP_MARK; + TestMediaQualityRequestL(); + //__UHEAP_MARKEND; + RDebug::Print( _L("Mcc_COM_TEST_STOP: TestMediaQualityRequestL") ); + } + +// --------------------------------------------------------------------------- +// CTestAsyncFeat::TestMediaQualityRequestL() +// private +// --------------------------------------------------------------------------- +// +void CTestAsyncFeat::TestMediaQualityRequestL() + { + RDebug::Print( _L("CTestAsyncFeat::TestMediaQualityRequestL") ); + + User::LeaveIfError( iInterface.CreateSession( iSessionId ) ); + + RDebug::Print( _L("CTestAsyncFeat::TestMediaQualityRequestL KMccLinkGeneral") ); + User::LeaveIfError( + iInterface.CreateLink( iSessionId, KMccLinkGeneral, iLinkId, + iNetsettings ) ); + + iIfStub.WaitForEvent( iSessionId, iLinkId, 0, KMccLinkCreated ); + +// User::LeaveIfError( iInterface.SetRemoteAddress( iSessionId, iLinkId, iNetsettings.iRemoteAddress ) ); + + iCodec = FetchCodecByMimeSubtypeNameL( iInterface, KAMRSdpName ); + + // AUDIO DOWNLINK STREAM CREATION + RDebug::Print( _L("CTestAsyncFeat::TestMediaQualityRequestL ADD RSC AUDIO DL") ); + + User::LeaveIfError( + iInterface.AddDataSink( KUidMmfAudioOutput, KNullDesC8, iAudioSinkId ) ); + User::LeaveIfError( + iInterface.AddDataSource( KMccRtpSourceUid, KNullDesC8, iRtpSourceId ) ); + + User::LeaveIfError( iInterface.CreateStream( iSessionId, iLinkId, iStreamId1, + KMccAudioDownlinkStream, *iCodec ) ); + + User::LeaveIfError( iInterface.PrepareStream( iSessionId, iLinkId, iStreamId1 ) ); + iIfStub.WaitForEvent( iSessionId, iLinkId, iStreamId1, KMccStreamPrepared ); + iIfStub.WaitForEvent( iSessionId, iLinkId, iStreamId1, KMccStreamPrepared ); + + User::LeaveIfError( iInterface.StartStream( iSessionId, iLinkId, iStreamId1 ) ); + iIfStub.WaitForEvent( iSessionId, iLinkId, iStreamId1, KMccStreamStarted ); + iIfStub.WaitForEvent( iSessionId, iLinkId, iStreamId1, KMccStreamStarted ); + + // AUDIO UPLINK STREAM CREATION + RDebug::Print( _L("CTestAsyncFeat::TestMediaQualityRequestL CREATE AUDIO UL") ); + + User::LeaveIfError( + iInterface.AddDataSink( KMccRtpSinkUid, KNullDesC8, iRtpSinkId ) ); + User::LeaveIfError( + iInterface.AddDataSource( KUidMmfAudioInput, KNullDesC8, iAudioSourceId ) ); + + User::LeaveIfError( iInterface.CreateStream( iSessionId, iLinkId, iStreamId2, + KMccAudioUplinkStream, *iCodec ) ); + + User::LeaveIfError( iInterface.PrepareStream( iSessionId, iLinkId, iStreamId2 ) ); + iIfStub.WaitForEvent( iSessionId, iLinkId, iStreamId2, KMccStreamPrepared ); + iIfStub.WaitForEvent( iSessionId, iLinkId, iStreamId2, KMccStreamPrepared ); + + User::LeaveIfError( iInterface.StartStream( iSessionId, iLinkId, iStreamId2 ) ); + iIfStub.WaitForEvent( iSessionId, iLinkId, iStreamId2, KMccStreamStarted ); + iIfStub.WaitForEvent( iSessionId, iLinkId, iStreamId2, KMccStreamStarted ); + + iConfig.iJitterLevel = 1; + iConfig.iPacketLoss = 1; + iConfig.iReportType = EMccJitterReport; + iConfig.iReportIntervalType = EMccQualityTimeBased; + iConfig.iReportInterval = 100; + iConfig.iSessionId = iSessionId; + iConfig.iEndpointId = iRtpSourceId; + + iConsole.Printf( _L( "Media quality observing: Start\n" ) ); + User::LeaveIfError( iInterface.MediaQualityRequest( iConfig ) ); + + iConsole.Printf( _L( "Press a key to stop \n" ) ); + iConsole.Getch(); + + User::LeaveIfError( iInterface.CancelMediaQualityRequest( iConfig ) ); + + User::LeaveIfError( iInterface.StopStream( iSessionId, iLinkId, iStreamId1 ) ); + iIfStub.WaitForEvent( iSessionId, iLinkId, iStreamId1, KMccStreamStopped ); + iIfStub.WaitForEvent( iSessionId, iLinkId, iStreamId1, KMccStreamStopped ); + + User::LeaveIfError( iInterface.StopStream( iSessionId, iLinkId, iStreamId2 ) ); + iIfStub.WaitForEvent( iSessionId, iLinkId, iStreamId2, KMccStreamStopped ); + iIfStub.WaitForEvent( iSessionId, iLinkId, iStreamId2, KMccStreamStopped ); + + User::LeaveIfError( iInterface.DeleteStream( iSessionId, iLinkId, iStreamId1 ) ); + User::LeaveIfError( iInterface.DeleteStream( iSessionId, iLinkId, iStreamId2 ) ); + + //iInterface.RemoveDataSink( iSessionId, iLinkId1, iStreamId1, iAudioSinkId ); + //iInterface.RemoveDataSource( iSessionId, iLinkId1, iStreamId1, iRtpSourceId ); + + User::LeaveIfError( iInterface.CloseLink( iSessionId, iLinkId ) ); + User::LeaveIfError( iInterface.CloseSession( iSessionId ) ); + } + +// --------------------------------------------------------------------------- +// CTestAsyncFeat::FetchCodecByMimeSubtypeNameL +// Private +// --------------------------------------------------------------------------- +// +CMccCodecInformation* CTestAsyncFeat::FetchCodecByMimeSubtypeNameL( + const CMccInterface& aInterface, const TDesC8& aName ) const + { + RPointerArray codecArray; + CleanupResetAndDestroy< RPointerArray >::PushL( codecArray ); + User::LeaveIfError( aInterface.GetCapabilities( codecArray ) ); + + CMccCodecInformation* tmp = NULL; + TInt ind( codecArray.Count() ); + + while ( ( ind-- ) && ( NULL == tmp ) ) + { + if ( codecArray[ind]->SdpName().Compare( aName ) == 0 ) + { + tmp = codecArray[ind]->CloneDetailedL(); + } + } + + if ( NULL == tmp ) + { + User::Leave( KErrNotFound ); + } + + CleanupStack::PopAndDestroy( &codecArray ); + return tmp; + } + + +// End of File