diff -r 000000000000 -r 1bce908db942 multimediacommscontroller/tsrc/TestConsoles/RtpSourceSink/Src/testconsole.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/multimediacommscontroller/tsrc/TestConsoles/RtpSourceSink/Src/testconsole.cpp Tue Feb 02 01:04:58 2010 +0200 @@ -0,0 +1,305 @@ +/* +* 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 + +#include "TestConsole.h" +#include "FileUtil.h" +#include "mccuids.hrh" + +const TUid KControllerUID = { KImplUidMccController }; +const TUid KSourceUID = { KImplUidRtpDataSource }; +const TUid KSinkUID = { KImplUidRtpDataSink }; + +// Main Instruction Text +_LIT(KTxtMainInstructions, "Please select one option:\n" + L"1. Create instances from MccRtpDataSource and -Sink\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 + } + +//******************************************************************************* +// Method : CTestAppConsole::~CTestAppConsole() +// Purpose : Destructor +// Parameters : +// Return Value: +//******************************************************************************* +CTestAppConsole::~CTestAppConsole() + { + Cancel(); // any outstanding request + + if (iConsole) + { + delete iConsole; + } + + delete iInstruct; + } + +//******************************************************************************* +// 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': + RunTest1(); + break; + case '2': + //RunTest2(); + break; + case '9': + CActiveScheduler::Stop(); + 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() + { + //DisplayMsg(_L("------Test2 End------\n")); + RMMFController controller; + TMMFPrioritySettings settings; + settings.iPriority = EPriorityNormal; + + controller.Open( KControllerUID, settings ); + + TInt err = controller.AddDataSource( KSourceUID, KNullDesC8 ); + + err = controller.AddDataSink( KSinkUID, KNullDesC8 ); + + } + + +//******************************************************************************* +void CTestAppConsole::RunTest2() + { + } + +//******************************************************************************* +void CTestAppConsole::Stop() + { + #ifdef DEBUG_INFO + RDebug::Print (_L ("------The End------\n")); + #endif + + DisplayMsg(_L("------The End------")); +// iConsole->Getch(); + } + +