diff -r 000000000000 -r 1bce908db942 multimediacommscontroller/tsrc/TestConsoles/McpSubThreads/ClientTests/Src/testconsole.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/multimediacommscontroller/tsrc/TestConsoles/McpSubThreads/ClientTests/Src/testconsole.cpp Tue Feb 02 01:04:58 2010 +0200 @@ -0,0 +1,1423 @@ +/* +* Copyright (c) 2004 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: Part of TestConsole application. +** Methods for the class CTestAppConsole +** +*/ + + + + +#include +#include +#include "TestConsole.h" +#include "mccsymsubthreadclient.h" +#include "mcculdlclient.h" +#include "mccdefs.h" +#include "mccinternalcodecs.h" +#include "mcculdlclient.h" +#include +#include "mccrtpdatasource.h" +#include "mccrtpdatasink.h" + +const TUint32 KUplinkStreamId = 1; +const TUint32 KDownlinkStreamId = 2; + +// Main Instruction Text +_LIT(KTxtMainInstructions, "Please select one option:\n" + L"1. Test basic controls in UL/DL 1\n" + L"3. Test UL Basic controls\n" + L"4. Test DL Basic controls\n" + L"5. Test memory management\n" + L"9. Quit\n"); + +//******************************************************************************* +// Method : CTestAppConsole::NewL() +// Purpose : +// Parameters : +// Return Value: +//******************************************************************************* +CTestAppConsole* CTestAppConsole::NewL( ) + { + CTestAppConsole* self = new(ELeave)CTestAppConsole(); + CleanupStack::PushL(self); + + self->ConstructL(); + + CleanupStack::Pop(); + return self; + } + +//******************************************************************************* +// Method : CTestAppConsole::CTestAppConsole() +// Purpose : Constructor +// Parameters : +// Return Value: +//******************************************************************************* +CTestAppConsole::CTestAppConsole( ) : CActive(EPriorityStandard) + { + CActiveScheduler::Add(this); + } + +//******************************************************************************* +// Method : CTestAppConsole::ConstructL() +// Purpose : +// Parameters : +// Return Value: +//******************************************************************************* +void CTestAppConsole::ConstructL() + { + _LIT(KTxtTitle, " RTP Test "); + iConsole = Console::NewL(KTxtTitle, TSize(KConsFullScreen, KConsFullScreen)); + DisplayConsoleMenu(KTxtMainInstructions); + + // Create Log files + /* + TFileUtil::InitLogFile(KLogFileTest); // test events + TFileUtil::InitLogFile(KLogFileRtp); // Rtp packets + TFileUtil::InitLogFile(KLogFileRtcp); // Rtcp packets + TFileUtil::InitLogFile(KLogFileStat); // Statistic + */ + ConstructDlSinkSource(); + ConstructUlSinkSource(); + } + +//******************************************************************************* +// Method : CTestAppConsole::~CTestAppConsole() +// Purpose : Destructor +// Parameters : +// Return Value: +//******************************************************************************* +CTestAppConsole::~CTestAppConsole() + { + Cancel(); // any outstanding request + + if (iConsole) + { + delete iConsole; + } + + delete iInstruct; + + if(iDlsource) + delete iDlsource; + + if(iUlsink) + delete iUlsink; + + if(iDlsink) + delete iDlsink; + + if(iUlsource) + delete iUlsource; + } + +//******************************************************************************* +// Method : CRtpAppConsole::StartTesting() +// Purpose : start this AO +// Parameters : +// Return Value: +//******************************************************************************* +void CTestAppConsole::StartTesting() + { + DoRead(); + } + +//******************************************************************************* +// Method : CRtpAppConsole::DoRead() +// Purpose : get the user's option and send request to scheduler +// Parameters : +// Return Value: +//******************************************************************************* +void CTestAppConsole::DoRead() + { + iConsole->Read(iStatus); + SetActive(); + } + +//******************************************************************************* +// Method : CRtpAppConsole::RunL() +// Purpose : +// Parameters : +// Return Value: +//******************************************************************************* +void CTestAppConsole::RunL() + { + // According to current test case and direct the user's command + // to proper command handler. + ProcessMainInput(); + } + +//******************************************************************************* +// Method : CRtpAppConsole::DoCancel() +// Purpose : +// Parameters : +// Return Value: +//******************************************************************************* +void CTestAppConsole::DoCancel() + { + iConsole->ReadCancel(); + } + + +//******************************************************************************* +// Method : CRtpAppConsole::DisplayConsoleMenu() +// Purpose : Display main or sub console menus for different test cases +// Parameters : TDesc &aInstructions +// Return Value: void +//******************************************************************************* + +void CTestAppConsole::DisplayConsoleMenu(const TDesC &aInstructions) + { + if (iInstruct) + { + delete iInstruct; + iInstruct = NULL; + } + iInstruct = aInstructions.AllocL(); + iConsole->ClearScreen(); + iConsole->Write(*iInstruct); + } + +//******************************************************************************* +// Method : CTestAppConsole::ProcessMainInput() +// Purpose : Obtain user's option and decide which test case to run next. +// Parameters : +// Return Value: +//******************************************************************************* +void CTestAppConsole::ProcessMainInput() + { + TChar inputChar = iConsole->KeyCode(); + + switch(inputChar) + { + case '1': + __UHEAP_MARK; + RunTest1(); + __UHEAP_MARKEND; + break; + case '3': + __UHEAP_MARK; + RunTest3(); + __UHEAP_MARKEND; + break; + case '4': + __UHEAP_MARK; + RunTest4(); + __UHEAP_MARKEND; + break; + case '5': + __UHEAP_MARK; + RunTest5(); + __UHEAP_MARKEND; + break; + case '6': + RunTest6(); + break; + case '9': + CActiveScheduler::Stop(); + break; + default: + _LIT(KTxtWrongOption, "Wrong Option! Try Again."); + DisplayMsg(KTxtWrongOption); + break; + } + + // Ready to get next input option. + DoRead(); + } + +//******************************************************************************* +// Method : CRtpAppConsole::DisplayMsg() +// Purpose : Display testing message on screen +// Parameters : TDesC & +// Return Value: +//******************************************************************************* +void CTestAppConsole::DisplayMsg(const TDesC &aMsg) + { + iConsole->ClearScreen(); + iConsole->Write(*iInstruct); + iConsole->Printf(KTxtLineBreak); + iConsole->Printf(aMsg); + iConsole->Printf(KTxtLineBreak); + } + +//******************************************************************************* +// Method : CTestAppConsole::GetAddrFromConsole() +// Purpose : +// Parameters : +// Return Value: +//******************************************************************************* +TKeyCode CTestAppConsole::GetStringFromConsole(TDes &aAddr) + { + // Get a line from console + TKeyCode input = EKeyNull; + const TInt start_pos = iConsole->WhereX(); + aAddr.Zero(); + + // loop until descriptor full or EKeyEnter or EKeyEscape entered + do { + // get one character + input = iConsole->Getch(); + // process it + if(input == EKeyBackspace || input == EKeyDelete) + { + // backspace or delete + if(iConsole->WhereX() > start_pos) + { + iConsole->SetPos(iConsole->WhereX() - 1); + iConsole->ClearToEndOfLine(); + if(aAddr.Length() > 0) + { + aAddr.SetLength(aAddr.Length() - 1); + } + } + } + else + { + // other than backspace or delete + TChar ch(input); + if(ch.IsPrint()) + { + aAddr.Append(ch); + iConsole->Printf(_L("%c"), input); + } + } + } + while(aAddr.Length() < aAddr.MaxLength() && input != EKeyEnter && input != EKeyEscape); + + DisplayMsg(KTxtLineBreak); + return input; + } + +//******************************************************************************* +// Method : CTestAppConsole::RunTest1() +// Purpose : +// Parameters : +// Return Value: +//******************************************************************************* +void CTestAppConsole::RunTest1() + { + SetUpRtpStack(); + + TInt cells = User::CountAllocCells(); + iConsole->Printf( _L("Allocated cells: %d\n"), cells); + + iKeepgoingUL = ETrue; + CMccSymSubthreadClient* ul_client = CMccSymSubthreadClient::NewL(this); + + iKeepgoingDL = ETrue; + CMccSymSubthreadClient* dl_client = CMccSymSubthreadClient::NewL(this); + + if(!ul_client) + { + iKeepgoingUL = EFalse; + } + + if(!dl_client) + { + iKeepgoingDL = EFalse; + } + + iUlError = KErrNone; + iDlError = KErrNone; + + if(iKeepgoingUL && iKeepgoingDL) + { + iConsole->Printf( _L("Allocations OK for UL & DL, going on...\n") ); + } + else + { + if(!iKeepgoingDL) + { + iConsole->Printf( _L("DL Allocations failed...\n") ); + } + else if(!iKeepgoingDL) + { + iConsole->Printf( _L("UL Allocations failed...\n") ); + } + else + { + iConsole->Printf( _L("DL & UL Allocations failed!!!\n") ); + } + } + + for(TInt k = 0; k < 1; k++) + { + TestOpen( ul_client, dl_client ); + + TestParameters( ul_client, dl_client ); + + TestPrepare( ul_client, dl_client ); + + TestControls( ul_client, dl_client ); + } + + if(iKeepgoingDL && iKeepgoingDL) + { + iConsole->Printf( _L("All tests ran OK\n") ); + } + else + { + iConsole->Printf( _L("Not all tests done\n") ); + } + + + delete ul_client; + delete dl_client; + + cells = User::CountAllocCells(); + iConsole->Printf( _L("Allocated cells: %d\n"), cells); + + iConsole->Getch(); + }; + +void CTestAppConsole::ErrorNotify(TInt aError) + { + iConsole->Printf( _L("Error notify: %d"), aError ); + }; + +void CTestAppConsole::RunTest3() + { + SetUpRtpStack(); + TInt cells = User::CountAllocCells(); + iConsole->Printf( _L("Allocated cells: %d\n"), cells); + + CMccSymSubthreadClient* ul_client = CMccSymSubthreadClient::NewL(this); + + TFourCC fourAMR(KMccFourCCIdAMRNB); + TRtpId ulsession = KNullId; + TRtpId ulstream = KNullId; + + ul_client->CreateSessionL(iPort, iIapid, EFalse, 0); + iConsole->Printf( _L("UL Session created\n") ); + iConsole->Getch(); + + TMMFPrioritySettings prior; + prior.iPriority = EMdaPriorityNormal; + prior.iPref = EMdaPriorityPreferenceQuality; + + ul_client->OpenL(EMccAudioUplinkStream, fourAMR, iUlsource, iUlsink, KUplinkStreamId, prior ); + + iConsole->Printf( _L("UL stream created\n") ); + iConsole->Getch(); + + ul_client->SetRemoteAddressL(iRemoteAddr); + iConsole->Printf( _L("Setted remote address\n") ); + iConsole->Getch(); + + ul_client->SetPrioritySettingsL( KUplinkStreamId, prior ); + iConsole->Printf( _L("Setted priority settings\n") ); + iConsole->Getch(); + + + ul_client->PrepareL( KUplinkStreamId, 0 ); + iConsole->Printf( _L("Stream prepared\n") ); + iConsole->Getch(); + + ul_client->PlayL( KUplinkStreamId, 0, EFalse, ETrue ); + iConsole->Printf( _L("Stream recording\n") ); + iConsole->Getch(); + + + ul_client->PauseL( KUplinkStreamId, 0, ETrue ); + iConsole->Printf( _L("Stream paused\n") ); + iConsole->Getch(); + + ul_client->ResumeL( KUplinkStreamId, 0, ETrue ); + iConsole->Printf( _L("Stream resumed\n") ); + iConsole->Getch(); + + ul_client->StopL( KUplinkStreamId, 0 ); + iConsole->Printf( _L("Stream stopped\n") ); + iConsole->Getch(); + + ul_client->CloseL( KUplinkStreamId ); + iConsole->Printf( _L("Stream closed\n") ); + + delete ul_client; + + cells = User::CountAllocCells(); + iConsole->Printf( _L("Allocated cells: %d\n"), cells); + iConsole->Getch(); + }; + +void CTestAppConsole::RunTest4() + { + SetUpRtpStack(); + + TInt cells = User::CountAllocCells(); + iConsole->Printf( _L("Allocated cells: %d\n"), cells); + + CMccSymSubthreadClient* dl_client = CMccSymSubthreadClient::NewL(this); + + TFourCC fourAMR(KMccFourCCIdAMRNB); + TRtpId dlsession = KNullId; + TRtpId dlstream = KNullId; + + dl_client->CreateSessionL(iPort, iIapid, EFalse, 0); + iConsole->Printf( _L("DL Session created\n") ); + iConsole->Getch(); + + + TMMFPrioritySettings prior; + prior.iPriority = EMdaPriorityNormal; + prior.iPref = EMdaPriorityPreferenceQuality; + + dl_client->OpenL( EMccAudioDownlinkStream, fourAMR, iDlsource, iDlsink, KDownlinkStreamId, prior ); + iConsole->Printf( _L("DL stream created\n") ); + iConsole->Getch(); + + + dl_client->SetPrioritySettingsL( KDownlinkStreamId, prior ); + iConsole->Printf( _L("Setted priority settings\n") ); + iConsole->Getch(); + + dl_client->PrepareL( KDownlinkStreamId, 0 ); + iConsole->Printf( _L("Stream prepared\n") ); + iConsole->Getch(); + + dl_client->PlayL( KDownlinkStreamId, 0, EFalse, ETrue ); + iConsole->Printf( _L("Stream playing\n") ); + iConsole->Getch(); + + dl_client->PauseL( KDownlinkStreamId, 0, ETrue ); + iConsole->Printf( _L("Stream paused\n") ); + iConsole->Getch(); + + dl_client->ResumeL( KDownlinkStreamId, 0, ETrue ); + iConsole->Printf( _L("Stream resumed\n") ); + iConsole->Getch(); + + dl_client->StopL( KDownlinkStreamId, 0 ); + iConsole->Printf( _L("Stream stopped\n") ); + iConsole->Getch(); + + dl_client->CloseL( KDownlinkStreamId ); + iConsole->Printf( _L("Stream closed\n") ); + + delete dl_client; + + cells = User::CountAllocCells(); + iConsole->Printf( _L("Allocated cells: %d\n"), cells); + iConsole->Getch(); + }; + +void CTestAppConsole::RunTest5() + { + TFourCC fourAMR(KMccFourCCIdAMRNB); + TInt bitrate = 12200; + + iConsole->Printf( _L("Memory allocate/deallocate tests\n") ); + iConsole->Getch(); + + __UHEAP_MARK; + TInt cells = User::CountAllocCells(); + iConsole->Printf( _L("Allocated cells: %d\n"), cells); + CMccSymSubthreadClient* dl_client = CMccSymSubthreadClient::NewL(this); + delete dl_client; + cells = User::CountAllocCells(); + iConsole->Printf( _L("Allocated cells: %d\n"), cells); + __UHEAP_MARKEND; + iConsole->Printf( _L("Basic DL Create/Delete OK\n") ); + iConsole->Getch(); + + __UHEAP_MARK; + cells = User::CountAllocCells(); + iConsole->Printf( _L("Allocated cells: %d\n"), cells); + CMccSymSubthreadClient* ul_client = CMccSymSubthreadClient::NewL(this); + delete ul_client; + cells = User::CountAllocCells(); + iConsole->Printf( _L("Allocated cells: %d\n"), cells); + __UHEAP_MARKEND; + iConsole->Printf( _L("Basic UL Create/Delete OK\n") ); + iConsole->Getch(); + + SetUpRtpStack(); + + __UHEAP_MARK; + cells = User::CountAllocCells(); + iConsole->Printf( _L("Allocated cells: %d\n"), cells); + ul_client = CMccSymSubthreadClient::NewL(this); + ul_client->CreateSessionL(iPort, iIapid, EFalse, 0); + delete ul_client; + cells = User::CountAllocCells(); + iConsole->Printf( _L("Allocated cells: %d\n"), cells); + __UHEAP_MARKEND; + iConsole->Printf( _L("UL Create session OK\n") ); + iConsole->Getch(); + + __UHEAP_MARK; + cells = User::CountAllocCells(); + iConsole->Printf( _L("Allocated cells: %d\n"), cells); + dl_client = CMccSymSubthreadClient::NewL(this); + dl_client->CreateSessionL(iPort, iIapid, EFalse, 0); + delete dl_client; + cells = User::CountAllocCells(); + iConsole->Printf( _L("Allocated cells: %d\n"), cells); + __UHEAP_MARKEND; + iConsole->Printf( _L("DL Create session OK\n") ); + iConsole->Getch(); + + __UHEAP_MARK; + cells = User::CountAllocCells(); + iConsole->Printf( _L("Allocated cells: %d\n"), cells); + ul_client = CMccSymSubthreadClient::NewL(this); + ul_client->CreateSessionL(iPort, iIapid, EFalse, 0); + + TMMFPrioritySettings prior; + prior.iPriority = EMdaPriorityNormal; + prior.iPref = EMdaPriorityPreferenceQuality; + + ul_client->OpenL( EMccAudioUplinkStream, fourAMR, iUlsource, iUlsink, KUplinkStreamId, prior ); + ul_client->CloseL(); + delete ul_client; + cells = User::CountAllocCells(); + iConsole->Printf( _L("Allocated cells: %d\n"), cells); + __UHEAP_MARKEND; + iConsole->Printf( _L("UL Open/Close OK\n") ); + iConsole->Getch(); + + __UHEAP_MARK; + cells = User::CountAllocCells(); + iConsole->Printf( _L("Allocated cells: %d\n"), cells); + dl_client = CMccSymSubthreadClient::NewL(this); + dl_client->CreateSessionL(iPort, iIapid, EFalse, 0); + + dl_client->OpenL( EMccAudioDownlinkStream, fourAMR, iDlsource, iDlsink, KDownlinkStreamId, prior ); + dl_client->CloseL(); + delete dl_client; + cells = User::CountAllocCells(); + iConsole->Printf( _L("Allocated cells: %d\n"), cells); + __UHEAP_MARKEND; + iConsole->Printf( _L("DL Open/Close OK\n") ); + iConsole->Getch(); + + __UHEAP_MARK; + cells = User::CountAllocCells(); + iConsole->Printf( _L("UL Allocated cells: %d\n"), cells); + ul_client = CMccSymSubthreadClient::NewL(this); + + ul_client->CreateSessionL(iPort, iIapid, EFalse, 0); + + ul_client->OpenL( EMccAudioUplinkStream, fourAMR, iUlsource, iUlsink, KUplinkStreamId, prior ); + + ul_client->PrepareL( KUplinkStreamId, 0 ); + + ul_client->PlayL( KUplinkStreamId, 0, EFalse, ETrue ); + iConsole->Getch(); + ul_client->StopL( KUplinkStreamId, 0 ); + + //ul_client->CloseL(); + + delete ul_client; + + cells = User::CountAllocCells(); + iConsole->Printf( _L("UL Allocated cells: %d\n"), cells); + __UHEAP_MARKEND; + iConsole->Printf( _L("UL Open/Close/Prepare OK\n") ); + iConsole->Getch(); + + __UHEAP_MARK; + cells = User::CountAllocCells(); + iConsole->Printf( _L("Allocated cells: %d\n"), cells); + dl_client = CMccSymSubthreadClient::NewL(this); + dl_client->CreateSessionL(iPort, iIapid, EFalse, 0 ); + dl_client->OpenL( EMccAudioDownlinkStream, fourAMR, iDlsource, iDlsink, KDownlinkStreamId, prior ); + dl_client->PrepareL( KDownlinkStreamId, 0 ); + dl_client->PlayL( KDownlinkStreamId, 0, EFalse, ETrue ); + + iConsole->Getch(); + + dl_client->StopL( KDownlinkStreamId, 0 ); + //dl_client->CloseL(); + delete dl_client; + cells = User::CountAllocCells(); + iConsole->Printf( _L("Allocated cells: %d\n"), cells); + __UHEAP_MARKEND; + iConsole->Printf( _L("DL Open/Close/Prepare OK\n") ); + iConsole->Getch(); + }; + + +void CTestAppConsole::RunTest6() + { + TFourCC fourAMR(KMccFourCCIdAMRNB); + + SetUpRtpStack(); + + for(TInt k = 0; k < 2; k++) + { + iConsole->Printf( _L("Cells BEFORE Tests: %d"), User::CountAllocCells() ); + + iClient = CMccUlDlClient::NewL(this, iSessionID); + + iClient->CreateLinkL( KMccLinkGeneral, iLinkId, iPort, iIapid, 0, 0 ); + + TMMFPrioritySettings prior; + prior.iPriority = EMdaPriorityNormal; + prior.iPref = EMdaPriorityPreferenceQuality; + + TFourCC fourAMR(KMccFourCCIdAMRNB); + + TInt ulstream = iClient->OpenL( iLinkId, EMccAudioUplinkStream, fourAMR, iUlsource, iUlsink, prior ); + TInt dlstream = iClient->OpenL( iLinkId, EMccAudioDownlinkStream, fourAMR, iDlsource, iDlsink, prior ); + /* + iClient->SetRemoteAddressL( iRemoteAddr, ulstream ); + iClient->SetRemoteAddressL( iRemoteAddr, dlstream ); + iClient->SetTargetBitrateL(ulstream, 12200); + iClient->SetTargetBitrateL(dlstream, 12200); + */ + //iClient->PrepareL(ulstream); + //iClient->PrepareL(dlstream); + + //iClient->CloseL(ulstream); + //iClient->CloseL(dlstream); + delete iClient; + + iConsole->Printf( _L("Cells AFTER Tests: %d"), User::CountAllocCells() ); + + iConsole->Printf( _L("Test 6 OK if you see this") ); + iConsole->Getch(); + } + + }; + +void CTestAppConsole::ErrorOccured( TInt aError, + TUint32 aSessionId, + TUint32 aLinkId, + TUint32 aStreamId, + TUint32 aEndpointId ) + { + iConsole->Printf( _L("Error Occured: %d, Session: %u, Link: %u, Stream: %u, Endpoint %u"), + aError, + aSessionId, + aLinkId, + aStreamId, + aEndpointId ); + }; + +void CTestAppConsole::StateChange( TInt aState, TUint32 aLink ) + { + iConsole->Printf( _L("State change STATE: %d, LINK: %u"), aState, aLink ); + }; + +TInt CTestAppConsole::SendMccEventToClient( TMccEvent& /*aEvent*/ ) + { + iConsole->Printf( _L("Event received...") ); + + return KErrNone; + }; + +void CTestAppConsole::SetUpRtpStack() + { + TDes* line = new TBuf<80>; + + iConsole->ClearScreen(); + iConsole->Printf( _L("\nEnter the IAP ID: ") ); + GetStringFromConsole(*line); + + TLex lex(*line); + lex.Val(iIapid,EDecimal); + + // Get Remote Port number + iConsole->ClearScreen(); + iConsole->Printf(_L("\nMccEnter the Local port number ")); + + GetStringFromConsole(*line); + + //Use INPUT + TLex lex2(*line); + lex2.Val(iPort,EDecimal); + + //Use INPUT + iConsole->ClearScreen(); + + TBuf<128> theInput; + + iConsole->Printf(_L("\nEnter the Remote IP address ")); + GetStringFromConsole(*line); + + theInput.Copy( *line ); + iRemoteAddr.SetFamily(KAfInet); + iRemoteAddr.Input(theInput); + iRemoteAddr.SetPort(iPort); + + delete line; + }; + +void CTestAppConsole::TestOpen(CMccSymSubthreadClient* aUlclient, CMccSymSubthreadClient* aDlclient) + { + TFourCC fourAMR(KMccFourCCIdAMRNB); + + TMMFPrioritySettings prior; + prior.iPriority = EMdaPriorityNormal; + prior.iPref = EMdaPriorityPreferenceQuality; + + // Test session creation + if(iKeepgoingUL) + { + TRAP(iUlError, aUlclient->CreateSessionL(iPort, iIapid, EFalse, 0) ); + if(iUlError != KErrNone) + { + iKeepgoingUL = EFalse; + iConsole->Printf( _L("Error in UL CreateSessionL: %d\n"), iUlError ); + iConsole->Getch(); + } + else + { + iConsole->Printf( _L("UL CreateSessionL OK\n") ); + iConsole->Getch(); + } + } + else + { + iConsole->Printf( _L("UL CreateSessionL Test not run\n") ); + iConsole->Getch(); + } + + if(iKeepgoingDL) + { + TRAP(iDlError, aDlclient->CreateSessionL(iPort, iIapid, EFalse, 0) ); + if(iDlError != KErrNone) + { + iKeepgoingDL = EFalse; + iConsole->Printf( _L("Error in DL CreateSessionL: %d\n"), iDlError ); + iConsole->Getch(); + } + else + { + iConsole->Printf( _L("DL CreateSessionL OK\n") ); + iConsole->Getch(); + } + } + else + { + iConsole->Printf( _L("DL CreateSessionL Test not run\n") ); + iConsole->Getch(); + } + + if(iKeepgoingUL) + { + TRAP(iUlError, aUlclient->OpenL(EMccAudioUplinkStream, fourAMR, iUlsource, iUlsink, KUplinkStreamId, prior) ); + if(iUlError != KErrNone) + { + iKeepgoingUL = EFalse; + iConsole->Printf( _L("Error in UL OpenL: %d\n"), iUlError ); + iConsole->Getch(); + } + else + { + iConsole->Printf( _L("UL OpenL OK\n") ); + iConsole->Getch(); + } + } + else + { + iConsole->Printf( _L("UL OpenL Test not run\n") ); + iConsole->Getch(); + } + + if(iKeepgoingDL) + { + TRAP(iDlError, aDlclient->OpenL(EMccAudioDownlinkStream, fourAMR, iDlsource, iDlsink, KDownlinkStreamId, prior ) ); + if(iDlError != KErrNone) + { + iKeepgoingDL = EFalse; + iConsole->Printf( _L("Error in DL OpenL: %d\n"), iDlError ); + iConsole->Getch(); + } + else + { + iConsole->Printf( _L("DL OpenL OK\n") ); + iConsole->Getch(); + } + } + else + { + iConsole->Printf( _L("DL OpenL Test not run\n") ); + iConsole->Getch(); + } + + // Test remote address setup... + if(iKeepgoingUL) + { + TRAP(iUlError, aUlclient->SetRemoteAddressL(iRemoteAddr) ); + if(iUlError != KErrNone) + { + iKeepgoingUL = EFalse; + iConsole->Printf( _L("Error in UL SetRemoteAddress: %d\n"), iUlError ); + iConsole->Getch(); + } + else + { + iConsole->Printf( _L("UL SetRemoteAddress OK\n") ); + iConsole->Getch(); + } + } + else + { + iConsole->Printf( _L("UL SetRemoteAddress Test not run\n") ); + iConsole->Getch(); + } + + if(iKeepgoingDL) + { + TRAP( iDlError, aDlclient->SetRemoteAddressL(iRemoteAddr) ); + if(iDlError != KErrNone) + { + iKeepgoingDL = EFalse; + iConsole->Printf( _L("Error in DL SetRemoteAddress: %d\n"), iDlError ); + iConsole->Getch(); + } + else + { + iConsole->Printf( _L("DL SetRemoteAddress OK\n") ); + iConsole->Getch(); + } + } + else + { + iConsole->Printf( _L("DL SetRemoteAddress Test not run\n") ); + iConsole->Getch(); + } + }; + +void CTestAppConsole::TestParameters(CMccSymSubthreadClient* aUlclient, CMccSymSubthreadClient* aDlclient) + { + TFourCC fourAMR(KMccFourCCIdAMRNB); + TFourCC fourG711(KMccFourCCIdG711); + TFourCC fourILBC(KMccFourCCIdILBC); + + TMccCodecInfo codec; + codec.iFourCC = fourAMR; + codec.iBitrate = 12200; + codec.iPtime = 20; + codec.iMaxPtime = 40; + codec.iAlgoUsed = ENoAlgoUsed; + codec.iCodecMode = KAmrCodecModeOctetAlign; + codec.iEnableDTX = EFalse; + + /* + if(iKeepgoingUL) + { + TRAP( iUlError, aUlclient->SetCodecL(fourG711) ); + if(iUlError != KErrNone) + { + iKeepgoingUL = EFalse; + iConsole->Printf( _L("Error in UL SetCodecL G.711: %d\n"), iUlError ); + iConsole->Getch(); + } + else + { + iConsole->Printf( _L("UL SetCodecL G.711 OK\n") ); + iConsole->Getch(); + } + } + else + { + iConsole->Printf( _L("UL SetCodecL G.711 Test not run\n") ); + iConsole->Getch(); + } + + if(iKeepgoingDL) + { + TRAP( iDlError, aDlclient->SetCodecL(fourG711) ); + if(iDlError != KErrNone) + { + iKeepgoingDL =EFalse; + iConsole->Printf( _L("Error in DL SetCodecL G.711: %d\n"), iDlError ); + iConsole->Getch(); + } + else + { + iConsole->Printf( _L("DL SetCodecL G.711 OK\n") ); + iConsole->Getch(); + } + } + else + { + iConsole->Printf( _L("DL SetCodecL G.711 Test not run\n") ); + iConsole->Getch(); + } + */ + + + TMMFPrioritySettings prior; + prior.iPriority = EMdaPriorityMax; + prior.iPref = EMdaPriorityPreferenceTimeAndQuality; + + if(iKeepgoingUL) + { + TRAP( iUlError, aUlclient->SetPrioritySettingsL(KUplinkStreamId, prior) ); + if(iUlError != KErrNone) + { + iKeepgoingUL = EFalse; + iConsole->Printf( _L("Error in UL SetPrioritySettingsL: %d\n"), iUlError ); + iConsole->Getch(); + } + else + { + iConsole->Printf( _L("UL SetPrioritySettingsL OK\n") ); + iConsole->Getch(); + } + } + else + { + iConsole->Printf( _L("UL SetPrioritySettingsL Test not run\n") ); + iConsole->Getch(); + } + + if(iKeepgoingDL) + { + TRAP( iDlError, aDlclient->SetPrioritySettingsL(KDownlinkStreamId, prior) ); + if(iDlError != KErrNone) + { + iKeepgoingDL =EFalse; + iConsole->Printf( _L("Error in DL SetPrioritySettingsL: %d\n"), iDlError ); + iConsole->Getch(); + } + else + { + iConsole->Printf( _L("DL SetPrioritySettingsL OK\n") ); + iConsole->Getch(); + } + } + else + { + iConsole->Printf( _L("DL SetPrioritySettingsL Test not run\n") ); + iConsole->Getch(); + } + + TInt volume = 0; + + if(iKeepgoingUL) + { + TRAP( iUlError, aUlclient->MaxGainL(volume) ); + if(iUlError != KErrNone) + { + iKeepgoingUL =EFalse; + iConsole->Printf( _L("Error in UL MaxGainL: %d\n"), iUlError ); + iConsole->Getch(); + } + else + { + iConsole->Printf( _L("UL MaxGainL OK\n") ); + iConsole->Getch(); + } + } + + if(iKeepgoingUL) + { + TRAP( iUlError, aUlclient->SetGainL(volume) ); + if(iUlError != KErrNone) + { + iKeepgoingUL =EFalse; + iConsole->Printf( _L("Error in UL SetGainL: %d\n"), iUlError ); + iConsole->Getch(); + } + else + { + iConsole->Printf( _L("UL SetGainL OK\n") ); + iConsole->Getch(); + } + } + + if(iKeepgoingDL) + { + TRAP( iDlError, aDlclient->MaxVolumeL(volume) ); + if(iDlError != KErrNone) + { + iKeepgoingDL =EFalse; + iConsole->Printf( _L("Error in DL MaxVolumeL: %d\n"), iDlError ); + iConsole->Getch(); + } + else + { + iConsole->Printf( _L("DL MaxVolumeL OK\n") ); + iConsole->Getch(); + } + } + + if(iKeepgoingDL) + { + TRAP( iDlError, aDlclient->SetVolumeL(volume) ); + if(iDlError != KErrNone) + { + iKeepgoingDL =EFalse; + iConsole->Printf( _L("Error in DL SetVolumeL: %d\n"), iDlError ); + iConsole->Getch(); + } + else + { + iConsole->Printf( _L("DL SetVolumeL OK\n") ); + iConsole->Getch(); + } + } + + if(iKeepgoingUL) + { + TRAP( iUlError, aUlclient->SetBalanceL(KUplinkStreamId, 50, 50) ); + if(iUlError != KErrNone) + { + iKeepgoingUL = EFalse; + iConsole->Printf( _L("Error in UL SetBalanceL: %d\n"), iUlError); + iConsole->Getch(); + } + else + { + iConsole->Printf( _L("UL SetBalanceL OK\n") ); + iConsole->Getch(); + } + } + + if(iKeepgoingDL) + { + TRAP( iDlError, aDlclient->SetBalanceL(KDownlinkStreamId, 50, 50) ); + if(iDlError != KErrNone) + { + iKeepgoingDL = EFalse; + iConsole->Printf( _L("Error in DL SetBalanceL: %d\n"), iDlError); + iConsole->Getch(); + } + else + { + iConsole->Printf( _L("DL SetBalanceL OK\n") ); + iConsole->Getch(); + } + } + + TInt lbal = 0; + TInt rbal = 0; + + if(iKeepgoingUL) + { + TRAP( iUlError, aUlclient->GetBalanceL(KUplinkStreamId, lbal, rbal) ); + if(iUlError != KErrNone) + { + iKeepgoingUL = EFalse; + iConsole->Printf( _L("Error in UL GetRecordBalanceL: %d\n"), iUlError); + iConsole->Getch(); + } + else + { + iConsole->Printf( _L("UL GetRecordBalanceL OK: %d ja %d\n"), lbal, rbal ); + iConsole->Getch(); + } + } + + if(iKeepgoingDL) + { + TRAP( iDlError, aDlclient->GetBalanceL(KDownlinkStreamId, lbal, rbal) ); + if(iDlError != KErrNone) + { + iKeepgoingDL = EFalse; + iConsole->Printf( _L("Error in DL GetPlayBalanceL: %d\n"), iDlError); + iConsole->Getch(); + } + else + { + iConsole->Printf( _L("DL GetPlayBalanceL OK: %d ja %d\n"), lbal, rbal ); + iConsole->Getch(); + } + } + + if(iKeepgoingUL) + { + TRAP( iUlError, aUlclient->SetCodecInformationL(KUplinkStreamId, codec, KNullDesC8) ); + if(iUlError != KErrNone) + { + iKeepgoingUL = EFalse; + iConsole->Printf( _L("Error in UL SetCodecInformationL: %d\n"), iUlError); + iConsole->Getch(); + } + else + { + iConsole->Printf( _L("UL SetCodecInformationL OK\n") ); + iConsole->Getch(); + } + } + + if(iKeepgoingDL) + { + TRAP( iDlError, aDlclient->SetCodecInformationL(KDownlinkStreamId, codec, KNullDesC8) ); + if(iDlError != KErrNone) + { + iKeepgoingDL = EFalse; + iConsole->Printf( _L("Error in DL SetCodecInformationL: %d\n"), iDlError); + iConsole->Getch(); + } + else + { + iConsole->Printf( _L("DL SetCodecInformationL OK\n") ); + iConsole->Getch(); + } + } + }; + +void CTestAppConsole::TestPrepare(CMccSymSubthreadClient* aUlclient, CMccSymSubthreadClient* aDlclient) + { + if(iKeepgoingUL) + { + TRAP( iUlError, aUlclient->PrepareL( KUplinkStreamId, 0 ) ); + if(iUlError != KErrNone) + { + iKeepgoingUL = EFalse; + iConsole->Printf( _L("Error in UL PrepareL: %d\n"), iUlError ); + iConsole->Getch(); + } + else + { + iConsole->Printf( _L("UL PrepareL OK\n") ); + iConsole->Getch(); + } + } + + if(iKeepgoingDL) + { + TRAP( iDlError, aDlclient->PrepareL( KDownlinkStreamId, 0 ) ); + if(iDlError != KErrNone) + { + iKeepgoingDL = EFalse; + iConsole->Printf( _L("Error in DL PrepareL: %d\n"), iDlError ); + iConsole->Getch(); + } + else + { + iConsole->Printf( _L("DL PrepareL OK\n") ); + iConsole->Getch(); + } + } + }; + +void CTestAppConsole::TestControls(CMccSymSubthreadClient* aUlclient, CMccSymSubthreadClient* aDlclient) + { + if(iKeepgoingUL) + { + TRAP( iUlError, aUlclient->PlayL(KUplinkStreamId, 0, EFalse, ETrue) ); + if(iUlError != KErrNone) + { + iKeepgoingUL = EFalse; + iConsole->Printf( _L("Error in UL PlayL: %d\n"), iUlError ); + iConsole->Getch(); + } + else + { + iConsole->Printf( _L("UL PlayL OK\n") ); + iConsole->Getch(); + } + } + + if(iKeepgoingDL) + { + TRAP( iDlError, aDlclient->PlayL(KDownlinkStreamId, 0, EFalse, ETrue) ); + if(iDlError != KErrNone) + { + iKeepgoingDL = EFalse; + iConsole->Printf( _L("Error in DL PlayL: %d\n"), iDlError ); + iConsole->Getch(); + } + else + { + iConsole->Printf( _L("DL PlayL OK\n") ); + iConsole->Getch(); + } + } + + /* + TTimeIntervalMicroSeconds32 wait(20000000); + User::After(wait); + + if(iKeepgoingUL) + { + TRAP( iUlError, aUlclient->PauseL() ); + if(iUlError != KErrNone) + { + iKeepgoingUL = EFalse; + iConsole->Printf( _L("Error in UL PauseL: %d\n"), iUlError ); + iConsole->Getch(); + } + else + { + iConsole->Printf( _L("UL PauseL OK\n") ); + iConsole->Getch(); + } + } + + + if(iKeepgoingDL) + { + TRAP( iDlError, aDlclient->PauseL() ); + if(iDlError != KErrNone) + { + iKeepgoingDL = EFalse; + iConsole->Printf( _L("Error in DL PauseL: %d\n"), iDlError ); + iConsole->Getch(); + } + else + { + iConsole->Printf( _L("DL PauseL OK\n") ); + iConsole->Getch(); + } + } + + if(iKeepgoingUL) + { + TRAP( iUlError, aUlclient->ResumeL() ); + if(iUlError != KErrNone) + { + iKeepgoingUL = EFalse; + iConsole->Printf( _L("Error in UL ResumeL: %d\n"), iUlError ); + iConsole->Getch(); + } + else + { + iConsole->Printf( _L("UL ResumeL OK\n") ); + iConsole->Getch(); + } + } + + if(iKeepgoingDL) + { + TRAP( iDlError, aDlclient->ResumeL() ); + if(iDlError != KErrNone) + { + iKeepgoingDL = EFalse; + iConsole->Printf( _L("Error in DL ResumeL: %d\n"), iDlError ); + iConsole->Getch(); + } + else + { + iConsole->Printf( _L("DL ResumeL OK\n") ); + iConsole->Getch(); + } + } + */ + TRAP( iUlError, aUlclient->StopL(KUplinkStreamId, 0) ); + if(iUlError != KErrNone) + { + iConsole->Printf( _L("Error in UL StopL: %d\n"), iUlError ); + iConsole->Getch(); + iKeepgoingUL = EFalse; + } + else + { + iConsole->Printf( _L("UL StopL OK\n") ); + iConsole->Getch(); + } + + TRAP( iDlError, aDlclient->StopL(KDownlinkStreamId, 0) ); + if(iDlError != KErrNone) + { + iConsole->Printf( _L("Error in DL StopL: %d\n"), iDlError ); + iConsole->Getch(); + iKeepgoingDL = EFalse; + } + else + { + iConsole->Printf( _L("DL StopL OK\n") ); + iConsole->Getch(); + } + + + TRAP( iUlError, aUlclient->CloseL() ); + if(iUlError != KErrNone) + { + iConsole->Printf( _L("Error in UL CloseL: %d\n"), iUlError ); + iConsole->Getch(); + iKeepgoingUL = EFalse; + } + else + { + iConsole->Printf( _L("UL CloseL OK\n") ); + iConsole->Getch(); + } + + TRAP( iDlError, aDlclient->CloseL() ); + if(iDlError != KErrNone) + { + iConsole->Printf( _L("Error in DL CloseL: %d\n"), iDlError ); + iConsole->Getch(); + iKeepgoingDL = EFalse; + } + else + { + iConsole->Printf( _L("DL CloseL OK\n") ); + iConsole->Getch(); + } + }; + +void CTestAppConsole::ConstructUlSinkSource() + { + TUid rtpsnk; + rtpsnk.iUid = 0x10202861; + + iKeepgoingUL = EFalse; + TInt allocerror = KErrNone; + + TRAP( allocerror, iUlsink = MDataSink::NewSinkL(rtpsnk, KNullDesC8) ); + if(allocerror != KErrNone) + { + iKeepgoingUL = EFalse; + iConsole->Printf( _L("Error alloc UL SRC %d\n"), allocerror ); + iConsole->Getch(); + return; + } + + TRAP( allocerror, iUlsource = MDataSource::NewSourceL(KUidMmfAudioInput, KNullDesC8) ); + if(allocerror != KErrNone) + { + iKeepgoingUL = EFalse; + iConsole->Printf( _L("Error alloc UL SNK %d\n"), allocerror ); + iConsole->Getch(); + return; + } + + iKeepgoingUL = ETrue; + }; + +void CTestAppConsole::ConstructDlSinkSource() + { + TUid rtpsrc; + rtpsrc.iUid = 0x1020285F; + + iKeepgoingDL = EFalse; + + TInt allocerror = KErrNone; + + TRAP( allocerror, iDlsource = MDataSource::NewSourceL(rtpsrc, KNullDesC8) ); + if(allocerror != KErrNone) + { + iKeepgoingDL = EFalse; + iConsole->Printf( _L("Error alloc DL SRC %d\n"), allocerror ); + iConsole->Getch(); + return; + } + + TRAP( allocerror, iDlsink = MDataSink::NewSinkL(KUidMmfAudioOutput, KNullDesC8) ); + if(allocerror != KErrNone) + { + iKeepgoingDL = EFalse; + iConsole->Printf( _L("Error alloc DL SNK %d\n"), allocerror ); + iConsole->Getch(); + return; + } + //iDlsink->SinkStopL(); + iKeepgoingDL = ETrue; + }; + +void CTestAppConsole::DestructSinksSources() + { + + };