linklayerprotocols/pppnif/te_ppp/inc/TestMgr.h
author hgs
Wed, 25 Aug 2010 09:23:03 +0530
changeset 55 5eca823bbf17
parent 0 af10295192d8
permissions -rw-r--r--
201031_01

// Copyright (c) 2001-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:
//

#ifndef __TESTMGR_H__
#define __TESTMGR_H__
/**
*	Main  controller class (the engine)
*/
#include <c32comm.h>
#include <testexecuteserverbase.h>
#include <testexecutelog.h>
#include "TestSteps.h"

#include "common.h"

class CDummyNifAgentRef;
class CSerialListener;
class CSerialSender;

class CTestMgr : public CActive
{
public:
	~CTestMgr();
	static CTestMgr* NewL(CTestExecuteLogger& aLogger, CPPPANVL* aTestHarness);
	static CTestMgr* NewLC(CTestExecuteLogger& aLogger, CPPPANVL* aTestHarness);
	
	void StartEngineL();//main entry point. starts the state machine
	
	enum TEvent
	{	
		EReadComplete,   //ctrl link read complete
		EWriteComplete,  //ctrl link write complete 
		EStartTest,          //( EIdle -> ETestStarted  ) "start" command from the ANVL
		EStopTest,			 //( ETestStarted OR ETestClosed -> EIdle ) - "stop" command from the ANVL
		ETestFinished,		//( ETestStarted -> ETestClosed ) - PPP closed the connection
		EStartTerminate	  //( ETestStarted -> ETestClosed ) - "initiate terminate" command from the ANVL
	};
	//event notification
	void Notify(TEvent aEvent);
private:
	TInt aPortNo ;

	CTestMgr(CTestExecuteLogger& aLogger, CPPPANVL* aTestHarness);
	void ConstructL();		
	
	void RunL();
	void DoCancel();
	// configure control link
	void ConfigureSerialL();
	//state machine
	enum TState
	{
		EIdle,
		ETestStarted,
		ETestClosed //transitional to performe cleanup & buffered ops
	};
	//
	void HandleEvents_Idle();
	void HandleEvents_TestStarted();
	void HandleEvents_TestClosed();
	//utilities
	TInt ParseForCommands(const TBuffer& aRawData,TCommands& aCommands); //raw data from ctrl link -> cmds
	void UpdateIniFileL(const TCommands& aCommands);//gets appropriate chunk of cfg file and puts it into ppp.ini
	//attributes		
	RComm iCommPort;			
	RCommServ iCommServer;		
	CSerialListener* ipSerialRx;		// listening on the serial port
	CSerialSender* ipSerialTx;		// for sending on the serial port
	TEvent iEvent;					   //last event
	TState  iCurrentState;
	CDummyNifAgentRef*   ipDummyAgtRef;  
	CTestExecuteLogger iLogger;
	CPPPANVL* iTestHarness;
	const TUint KCmdIDIndex;
	const TUint KIniIdIndex;
	CCommonData iData;
	CConsoleBase* console ;		// personal display
};

#define LOG_INFO_PRINTF1(p1)							iLogger.LogExtra(((TText8*)__FILE__), __LINE__, ESevrInfo, (p1)) 
#define LOG_INFO_PRINTF2(p1, p2)						iLogger.LogExtra(((TText8*)__FILE__), __LINE__, ESevrInfo, (p1), (p2)) 
#define LOG_INFO_PRINTF3(p1, p2, p3)					iLogger.LogExtra(((TText8*)__FILE__), __LINE__, ESevrInfo, (p1), (p2), (p3)) 
#define LOG_INFO_PRINTF4(p1, p2, p3, p4)				iLogger.LogExtra(((TText8*)__FILE__), __LINE__, ESevrInfo, (p1), (p2), (p3), (p4))

#define LOG_ERR_PRINTF1(p1)								iLogger.LogExtra(((TText8*)__FILE__), __LINE__, ESevrErr, (p1)) 
#define LOG_ERR_PRINTF2(p1, p2)							iLogger.LogExtra(((TText8*)__FILE__), __LINE__, ESevrErr, (p1), (p2)) 
#define LOG_ERR_PRINTF3(p1, p2, p3)						iLogger.LogExtra(((TText8*)__FILE__), __LINE__, ESevrErr, (p1), (p2), (p3))
#define LOG_ERR_PRINTF4(p1, p2, p3, p4)					iLogger.LogExtra(((TText8*)__FILE__), __LINE__, ESevrErr, (p1), (p2), (p3), (p4))

// Check a boolean is true
#define MGR_TESTL(a) iTestHarness->testBooleanTrueL((a), (TText8*)__FILE__, __LINE__) 
#define MGR_TEST(a)  iTestHarness->testBooleanTrue((a), (TText8*)__FILE__, __LINE__) 

// Check a boolean is true if not return error code b
#define MGR_TESTE(a, b) iTestHarness->testBooleanTrueWithErrorCode((a), (b), (TText8*)__FILE__, __LINE__) 
#define MGR_TESTEL(a, b) iTestHarness->testBooleanTrueWithErrorCodeL((a), (b), (TText8*)__FILE__, __LINE__)  
#define MGR_TEST_CHECKL(p1, p2, p3) iTestHarness->TestCheckPointCompareL((p1), (p2), (p3), (TText8*)__FILE__, __LINE__)	

#endif //__TESTMGR_H__