obex/obexprotocol/obex/test/testobexerrorcodes/TestObexErrorCodes.cpp
author Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Tue, 02 Feb 2010 01:11:40 +0200
changeset 0 d0791faffa3f
permissions -rw-r--r--
Revision: 201003 Kit: 201005

// Copyright (c) 2003-2009 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 <c32comm.h>
#include "TestObexErrorCodes.h"

#if defined (__WINS__)
#define PDD_NAME _L("ECDRV")
#define LDD_NAME _L("ECOMM")
#else  // __GCC32__
#define PDD_NAME _L("EUART2")
#define LDD_NAME _L("ECOMM")
#define FIR_PDD_NAME _L("DIFIR")	// Brutus FIR PDD
#define FIR_LDD_NAME _L("EFIR")		// Brutus FIR LDD
#endif



void Startup()
	{
	CActiveScheduler *pA=new CActiveScheduler;
	CActiveScheduler::Install(pA);

	CControllerTestMasterClass* bigBoss = CControllerTestMasterClass::NewL();
	
	CActiveScheduler::Start();
	delete bigBoss;
	bigBoss = NULL;
	delete pA;
	}


void CControllerTestMasterClass::ConstructL()
	{
	//make the initial active object everything
	iConsoleTest = CControllerConsoleTest::NewL(this);

	iConsoleTest->IssueRequest();

	}

CControllerTestMasterClass* CControllerTestMasterClass::NewL()
	{
	CControllerTestMasterClass* self = NewLC();
	CleanupStack::Pop();
	return self;
	}

CControllerTestMasterClass* CControllerTestMasterClass::NewLC()
	{
	CControllerTestMasterClass* self=new (ELeave) CControllerTestMasterClass;
	CleanupStack::PushL(self);
	self->ConstructL();
	return self;
	}



CControllerTestMasterClass::~CControllerTestMasterClass()
	{
	delete iConsoleTest;
	iConsoleTest = NULL;
	}
	


GLDEF_C TInt E32Main()
	{

	__UHEAP_MARK;
	CTrapCleanup* cleanup=CTrapCleanup::New(); // get clean-up stack

	
	// start scheduler 
	TRAPD(error, Startup() );
	__ASSERT_ALWAYS(!error,User::Panic(_L("Testing Registry"),error));


	delete cleanup; // destroy clean-up stack
	__UHEAP_MARKEND;
	return KErrNone;
	}



//
// CRegistryConsoleTest
//
CControllerConsoleTest::~CControllerConsoleTest()
	{
	Cancel();


	delete iTest;
	delete iConsole;
	iConsole = NULL;
	iOwner = NULL;  

	}


void CControllerConsoleTest::DoCancel()
	{
	iConsole->ReadCancel();
	}


void CControllerConsoleTest::Menu()
	{
	iConsole->Printf(_L("\nOBEX error code tests ..."));
	iConsole->Printf(_L("\nPress '1' to start Client Side Tests"));
	iConsole->Printf(_L("\nPress '2' to start Server Side Tests"));
	iConsole->Printf(_L("\nPress '3' to start"));
	iConsole->Printf(_L("\nPress '4' to stop"));
	iConsole->Printf(_L("\nAny other key to exit"));
	}

void CControllerConsoleTest::IssueRequest()
	{
	Menu();
	iConsole->Read(iStatus);
	SetActive();
	}
void CControllerConsoleTest::ConstructL(CControllerTestMasterClass* aOwner)
    {
 
	iOwner = aOwner;
	iConsole = Console::NewL(_L("Controller Test"),
					TSize(-1,-1));
	DoTest();	//set everything up, load everything


	CActiveScheduler::Add(this); 
    }

TInt CControllerConsoleTest::RunError(TInt)
	{
	IssueRequest();
	return KErrNone;
	}


void CControllerConsoleTest::StartTest()
	{
	iTest->Start();

	iStarted = ETrue;
	
	}

void CControllerConsoleTest::StopTest()
	{

	if ( iStarted )
		{
		iTest->Stop();

		iStarted = EFalse;
		}
	else
		{
		iConsole->Printf(_L("DOOH, can't stop a test which hasn't started\n"));
		}
	}

void CControllerConsoleTest::DoTest()
	{
	iStarted = EFalse;
	iConsole->Printf(_L("\n Loading tests"));



	TInt ret;
#ifdef __EPOC32__
	iConsole->Printf(_L("Loading C32...\n"));
	ret=StartC32();
	if (ret!=KErrNone && ret!=KErrAlreadyExists)
		iConsole->Printf(_L("	Failed %d\n"), ret);
	else
		iConsole->Printf(_L("	Success\n"));
#endif

// load up the drivers
	iConsole->Printf(_L("Loading SIR PDD...\n"));
	ret=User::LoadPhysicalDevice(PDD_NAME);
	if (ret!=KErrNone && ret!=KErrAlreadyExists)
		iConsole->Printf(_L("	Failed %d\n"), ret);
	else
		iConsole->Printf(_L("	Success\n"));

	iConsole->Printf(_L("Loading SIR LDD...\n"));
    ret=User::LoadLogicalDevice(LDD_NAME);
	if (ret!=KErrNone && ret!=KErrAlreadyExists)
		iConsole->Printf(_L("	Failed %d\n"), ret);
	else
		iConsole->Printf(_L("	Success\n"));
#ifdef __EPOC32__
	iConsole->Printf(_L("Loading Fast IR PDD\n"));

	ret=User::LoadPhysicalDevice(FIR_PDD_NAME);
	if (ret!=KErrNone && ret!=KErrAlreadyExists)
		iConsole->Printf(_L("	Failed %d\n"), ret);
	else
		iConsole->Printf(_L("	Success\n"));

	iConsole->Printf(_L("Loading Fast IR LDD\n"));
	ret=User::LoadLogicalDevice(FIR_LDD_NAME);
	if (ret!=KErrNone && ret!=KErrAlreadyExists)
		iConsole->Printf(_L("	Failed %d\n"), ret);
	else
		iConsole->Printf(_L("	Success\n"));
#endif	


	}


void CControllerConsoleTest::RunL()
	{

	TInt key = iConsole->KeyCode();
	switch (key)
		{
		case '1':
			{
			iTest = CTestObexErrorCodesClient::NewL(this);
			IssueRequest(); //back to main menu
			}
			break;
		case '2':
			{
			iTest = CTestObexErrorCodesServer::NewL(this);
			IssueRequest(); //back to main menu
			}
			break;
		case '3':
			{
			if ( !iStarted )
				StartTest();
			else 
				iConsole->Printf(_L("Already Started\n"));

			IssueRequest(); //back to main menu

			}
			break;
		case '4':
			{
			if ( iStarted )
				StopTest();
			else 
				iConsole->Printf(_L("Not started yet\n"));

			IssueRequest(); //back to main menu
			}
			break;
		default:
			CActiveScheduler::Stop();
			break;
		}

	}


CControllerConsoleTest* CControllerConsoleTest::NewL(CControllerTestMasterClass* aOwner)
	{
	CControllerConsoleTest* self = NewLC(aOwner);
	CleanupStack::Pop();
	return self;
	}

CControllerConsoleTest* CControllerConsoleTest::NewLC(CControllerTestMasterClass* aOwner)
	{
	CControllerConsoleTest* self=new (ELeave) CControllerConsoleTest;
	CleanupStack::PushL(self);
	self->ConstructL(aOwner);
	return self;

	}

CControllerConsoleTest::CControllerConsoleTest()
			: CActive(CActive::EPriorityStandard)
	{
	}





CBaseErrorCodeTest* CBaseErrorCodeTest::NewL(CControllerConsoleTest* aOwner)
	{
	CBaseErrorCodeTest* self = new(ELeave) CBaseErrorCodeTest;
	CleanupStack::PushL(self);
	self->ConstructL(aOwner);
	CleanupStack::Pop( self );
	return self;
	}

CBaseErrorCodeTest::~CBaseErrorCodeTest()
	{
	delete iObject;
    delete iBuf;
    iLibrary.Close();
	}


CBaseErrorCodeTest::CBaseErrorCodeTest()
	{
	}

void CBaseErrorCodeTest::ConstructL(CControllerConsoleTest* aOwner)
	{
	iOwner = aOwner;

	iOwner->iConsole->Printf(_L("About to load the IRObex DLL...\n"));

    
    TRAPD(ret,LoadObexL());	// Load Protocol
    if (ret!=KErrNone)
		iOwner->iConsole->Printf(_L("Error %d on loading IrObex DLL\r\n"),ret);
    else
		iOwner->iConsole->Printf(_L("Successfully loaded IrObex DLL\r\n"));
	}

void CBaseErrorCodeTest::LoadObexL()
	{
	User::LeaveIfError(iLibrary.Load(_L("IROBEX.DLL")));
	}

void CBaseErrorCodeTest::Start()
	{
	}

void CBaseErrorCodeTest::Stop()
	{
	}