--- /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<CMccCodecInformation> codecArray;
+ CleanupResetAndDestroy< RPointerArray<CMccCodecInformation> >::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