diff -r 000000000000 -r 1bce908db942 natplugins/natpnatfwsdpprovider/tsrc/testconsole/src/nsptestconsoleapp.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/natplugins/natpnatfwsdpprovider/tsrc/testconsole/src/nsptestconsoleapp.cpp Tue Feb 02 01:04:58 2010 +0200 @@ -0,0 +1,417 @@ +/* +* 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: +* +*/ + +#include +#include +#include +#include +#include +#include +#include +#include +#include "nspplugin.h" +#include "nsptestconsoleapp.h" +#include "nsptestconsolestatemach.h" +#include "nsptestmanager.h" +#include "nsptest.h" + +_LIT( KMainTitle, " NSP Console " ); +_LIT( KLineBreak, "\n" ); +_LIT( KPrompt, "\\>" ); +_LIT( KOne, "1" ); +_LIT( KTwo, "2" ); +_LIT( KThree, "3" ); +_LIT( KFour, "4" ); + +const TInt KPluginUid = { 0x102832EF }; + +// ----------------------------------------------------------------------------- +// CNSPTestConsoleApp::NewLC +// ----------------------------------------------------------------------------- +// +CNSPTestConsoleApp* CNSPTestConsoleApp::NewLC() + { + CNSPTestConsoleApp* self = new ( ELeave ) CNSPTestConsoleApp; + CleanupStack::PushL( self ); + self->ConstructL(); + return self; + } + +// ----------------------------------------------------------------------------- +// CNSPTestConsoleApp::CNSPTestConsoleApp +// ----------------------------------------------------------------------------- +// +CNSPTestConsoleApp::CNSPTestConsoleApp() + : CActive( EPriorityStandard ) + { + CActiveScheduler::Add( this ); + } + +// ----------------------------------------------------------------------------- +// CNSPTestConsoleApp::ConstructL +// ----------------------------------------------------------------------------- +// +void CNSPTestConsoleApp::ConstructL() + { + iPlugin = CNSPPlugin::NewL( TUid::Uid( KPluginUid ) ); + iRepository = CRepository::NewL( KCRUidUNSAFProtocols ); + iTestManager = CNSPTestManager::NewL( *iPlugin, *iRepository ); + iStateMachine = CNSPTestConsoleStateMachine::NewL(); + iConsole = Console::NewL( KMainTitle, + TSize( KConsFullScreen, KConsFullScreen ) ); + } + +// ----------------------------------------------------------------------------- +// CNSPTestConsoleApp::CNSPTestConsoleApp +// ----------------------------------------------------------------------------- +// +CNSPTestConsoleApp::~CNSPTestConsoleApp() + { + Cancel(); + delete iConsole; + delete iStateMachine; + delete iTestManager; + delete iRepository; + delete iPlugin; + REComSession::FinalClose(); + } + +// ----------------------------------------------------------------------------- +// CNSPTestConsoleApp::CNSPTestConsoleApp +// ----------------------------------------------------------------------------- +// +void CNSPTestConsoleApp::StartTesting() + { + TNSPStateEvent event( *this, EKeyNull, KErrNone ); + iStateMachine->Start( event ); + } + +// ----------------------------------------------------------------------------- +// CNSPTestConsoleApp::RunL +// ----------------------------------------------------------------------------- +// +void CNSPTestConsoleApp::RunL() + { + TKeyCode keycode = iConsole->KeyCode(); + + switch ( keycode ) + { + case EKeyEscape: + { + iTestManager->CancelAll(); + CActiveScheduler::Stop(); + break; + } + + default: + { + TNSPStateEvent event( *this, keycode, KErrNone ); + iStateMachine->ProcessL( event ); + } + } + } + +// ----------------------------------------------------------------------------- +// CNSPTestConsoleApp::RunError +// ----------------------------------------------------------------------------- +// +TInt CNSPTestConsoleApp::RunError( TInt aError ) + { + TNSPStateEvent event( *this, EKeyNull, aError ); + TRAPD( err, iStateMachine->ProcessL( event ) ); + return err; + } + +// ----------------------------------------------------------------------------- +// CNSPTestConsoleApp::DoCancel +// ----------------------------------------------------------------------------- +// +void CNSPTestConsoleApp::DoCancel() + { + iConsole->ReadCancel(); + } + +// ----------------------------------------------------------------------------- +// CNSPTestConsoleApp::DisplayConsoleMenu +// ----------------------------------------------------------------------------- +// +void CNSPTestConsoleApp::DisplayMenu( const TDesC& aText, TInt aError ) + { + iConsole->ClearScreen(); + iConsole->Printf( KLineBreak() ); + iConsole->Write( aText ); + iConsole->Printf( KLineBreak() ); + + if ( KErrNone != aError ) + { + iConsole->Printf( _L("[error:%d]\n\n"), aError ); + } + else + { + iConsole->Printf( _L("[ESC to abort]\n\n") ); + } + } + +// ----------------------------------------------------------------------------- +// CNSPTestConsoleApp::DisplaySelection +// ----------------------------------------------------------------------------- +// +void CNSPTestConsoleApp::DisplaySelection( + TInt aPrefix, const TDesC& aText, TBool aAddPreLinebreak ) + { + if ( aAddPreLinebreak ) + { + iConsole->Printf( KLineBreak() ); + } + + iConsole->Printf( _L("%d."), aPrefix ); + iConsole->Write( aText ); + iConsole->Printf( KLineBreak() ); + } + +// ----------------------------------------------------------------------------- +// CNSPTestConsoleApp::DisplaySelection +// ----------------------------------------------------------------------------- +// +void CNSPTestConsoleApp::DisplaySelection( + TInt aPrefix, const TDesC& aText, const TDesC& aSelect, TBool aAddPreLinebreak ) + { + if ( aAddPreLinebreak ) + { + iConsole->Printf( KLineBreak() ); + } + + iConsole->Printf( _L("%d."), aPrefix ); + iConsole->Write( aText ); + iConsole->Printf( _L("[%S]\n"), &aSelect ); + } + +// ----------------------------------------------------------------------------- +// CNSPTestConsoleApp::DisplaySelection +// ----------------------------------------------------------------------------- +// +void CNSPTestConsoleApp::DisplaySelection( + TInt aPrefix, const TDesC& aText, TUint32 aSelect, TBool aAddPreLinebreak ) + { + if ( aAddPreLinebreak ) + { + iConsole->Printf( KLineBreak() ); + } + + iConsole->Printf( _L("%d."), aPrefix ); + iConsole->Write( aText ); + iConsole->Printf( _L("[%u]\n"), aSelect ); + } + +// ----------------------------------------------------------------------------- +// CNSPTestConsoleApp::DisplaySelection +// ----------------------------------------------------------------------------- +// +void CNSPTestConsoleApp::DisplaySelection( + TInt aPrefix, const TDesC& aText, TInt aSelect, TBool aAddPreLinebreak ) + { + if ( aAddPreLinebreak ) + { + iConsole->Printf( KLineBreak() ); + } + + iConsole->Printf( _L("%d."), aPrefix ); + iConsole->Write( aText ); + iConsole->Printf( _L("[%d]\n"), aSelect ); + } + +// ----------------------------------------------------------------------------- +// CNSPTestConsoleApp::DisplayPrompt +// ----------------------------------------------------------------------------- +// +void CNSPTestConsoleApp::DisplayPrompt( TBool aAddPreLinebreak ) + { + if ( aAddPreLinebreak ) + { + iConsole->Printf( KLineBreak() ); + } + + iConsole->Printf( KPrompt() ); + } + +// ----------------------------------------------------------------------------- +// CNSPTestConsoleApp::DisplayPrompt +// ----------------------------------------------------------------------------- +// +void CNSPTestConsoleApp::DisplayPrompt( const TDesC& aText, TBool aAddPreLinebreak ) + { + if ( aAddPreLinebreak ) + { + iConsole->Printf( KLineBreak() ); + } + + iConsole->Printf( KPrompt() ); + iConsole->Write( aText ); + } + +// ----------------------------------------------------------------------------- +// CNSPTestConsoleApp::DisplayOne +// ----------------------------------------------------------------------------- +// +void CNSPTestConsoleApp::DisplayOne( TBool aAddPreLinebreak ) + { + if ( aAddPreLinebreak ) + { + iConsole->Printf( KLineBreak() ); + } + + iConsole->Printf( KOne() ); + iConsole->Printf( KLineBreak() ); + } + +// ----------------------------------------------------------------------------- +// CNSPTestConsoleApp::DisplayTwo +// ----------------------------------------------------------------------------- +// +void CNSPTestConsoleApp::DisplayTwo( TBool aAddPreLinebreak ) + { + if ( aAddPreLinebreak ) + { + iConsole->Printf( KLineBreak() ); + } + + iConsole->Printf( KTwo() ); + iConsole->Printf( KLineBreak() ); + } + +// ----------------------------------------------------------------------------- +// CNSPTestConsoleApp::DisplayThree +// ----------------------------------------------------------------------------- +// +void CNSPTestConsoleApp::DisplayThree( TBool aAddPreLinebreak ) + { + if ( aAddPreLinebreak ) + { + iConsole->Printf( KLineBreak() ); + } + + iConsole->Printf( KThree() ); + iConsole->Printf( KLineBreak() ); + } + +// ----------------------------------------------------------------------------- +// CNSPTestConsoleApp::DisplayFour +// ----------------------------------------------------------------------------- +// +void CNSPTestConsoleApp::DisplayFour( TBool aAddPreLinebreak ) + { + if ( aAddPreLinebreak ) + { + iConsole->Printf( KLineBreak() ); + } + + iConsole->Printf( KFour() ); + iConsole->Printf( KLineBreak() ); + } + +// ----------------------------------------------------------------------------- +// CNSPTestConsoleApp::DoRead +// ----------------------------------------------------------------------------- +// +void CNSPTestConsoleApp::DoRead() + { + iConsole->Read( iStatus ); + + if ( !IsActive() ) + { + SetActive(); + } + } + +// ----------------------------------------------------------------------------- +// CNSPTestConsoleApp::GetStringFromConsole +// ----------------------------------------------------------------------------- +// +TKeyCode CNSPTestConsoleApp::GetStringFromConsoleL( TDes& aBuffer ) + { + TKeyCode input = EKeyNull; + const TInt startPos = iConsole->WhereX(); + iConsole->Write( aBuffer ); + + do { + input = iConsole->Getch(); + + if ( ( EKeyBackspace == input || EKeyDelete == input ) && + startPos < iConsole->WhereX() ) // Backspace & Delete + { + iConsole->SetPos( iConsole->WhereX() - 1 ); + iConsole->ClearToEndOfLine(); + + aBuffer.SetLength( 0 < aBuffer.Length() ? + aBuffer.Length() - 1 : + aBuffer.Length() ); + } + else{ + TChar chr( input ); + + if ( chr.IsPrint() ) + { + aBuffer.Append( chr ); + iConsole->Printf( _L("%c"), input ); + } + } + } + while ( EKeyEnter != input && EKeyEscape != input ); + + return input; + } + +// ----------------------------------------------------------------------------- +// CNSPTestConsoleApp::GetTUint32FromConsole +// ----------------------------------------------------------------------------- +// +TKeyCode CNSPTestConsoleApp::GetTUint32FromConsoleL( TUint32& aTUint32 ) + { + TBuf<255> buffer; + buffer.AppendNum( aTUint32, EDecimal ); + TKeyCode input = GetStringFromConsoleL( buffer ); + TLex lex( buffer ); + User::LeaveIfError( lex.Val( aTUint32, EDecimal ) ); + return input; + } + +// ----------------------------------------------------------------------------- +// CNSPTestConsoleApp::Cenrep +// ----------------------------------------------------------------------------- +// +CRepository& CNSPTestConsoleApp::Cenrep() + { + return *iRepository; + } + +// ----------------------------------------------------------------------------- +// CNSPTestConsoleApp::Manager +// ----------------------------------------------------------------------------- +// +CNSPTestManager& CNSPTestConsoleApp::Manager() + { + return *iTestManager; + } + +// ----------------------------------------------------------------------------- +// CNSPTestConsoleApp::Console +// ----------------------------------------------------------------------------- +// +CConsoleBase& CNSPTestConsoleApp::Console() + { + return *iConsole; + }