lbstest/lbstestproduct/lbsconflict/inc/ctlbsconflictstep.h
changeset 0 9cfd9a3ee49c
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/lbstest/lbstestproduct/lbsconflict/inc/ctlbsconflictstep.h	Tue Feb 02 01:50:39 2010 +0200
@@ -0,0 +1,248 @@
+// Copyright (c) 2006-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:
+// @file ctlbsconflictstep.h
+// This contains the header file for LBS Conflict Test Step Base
+// 
+//
+
+#ifndef __CT_LBS_CONFLICT_STEP_H__
+#define __CT_LBS_CONFLICT_STEP_H__
+
+
+// EPOC includes.
+#include <test/testexecutestepbase.h>
+
+// LBS test includes.
+#include <lbs/test/lbsnetsimtest.h>
+#include <lbs/test/lbsnetsimtestobserver.h>
+
+#include "ctlbsconflictserver.h"
+#include <lbs/test/ctlbstimerutils.h>
+
+
+const TInt KLbsKeepAlivePeriod = 10000;
+const TUint KLbsAbortPeriod = 10000000;	// The test case should finish before 10 seconds, use different value if not in test step code.
+
+const TInt KKeepAliveTimerId = 0;
+const TInt KAbortTimerId = 1;
+
+// X3P helper items.
+_LIT(KTransmitPushDestination, 	"02");
+_LIT(KTransmitMenuDestination, 	"08");
+_LIT(KTransmitTimerDestination, "10");
+
+_LIT(KTransmitPush2Destination, 	"02");
+_LIT(KTransmitMenu2Destination, 	"08");
+
+const TUint KTransmitPushPriority 	= 0x02;
+const TUint KTransmitMenuPriority 	= 0x08;
+const TUint KTransmitTimerPriority 	= 0x10;
+
+const TUint KTransmitPush2Priority 	= 0x02;
+const TUint KTransmitMenu2Priority 	= 0x08;
+
+const TInt KLbsConflictX3PPushId 	= 0x02;
+const TInt KLbsConflictX3PMenuId 	= 0x08;
+const TInt KLbsConflictX3PTimerId 	= 0x10;
+
+const TInt KLbsConflictX3PPush2Id 	= 0x022;
+const TInt KLbsConflictX3PMenu2Id 	= 0x088;
+
+
+class CT_LbsConflictStep :
+							public CTestStep,
+							public MT_LbsTimerUtilsObserver,
+							public MLbsNetSimTestObserver
+{
+
+public:
+	virtual ~CT_LbsConflictStep();
+
+	virtual TVerdict doTestStepPreambleL();
+	virtual TVerdict doTestStepPostambleL();
+
+	// From MLbsNetSimTestObserver.	
+	virtual void Connected();
+	virtual void Disconnected();
+	virtual void NotifyRegisterLcsMoLr(const TDesC& aData);
+	virtual void NotifyReleaseLcsMoLr(TInt aReason);
+	virtual void NotifyMeasurementControlLocation(const TPositionInfo& aPosition, const RLbsAssistanceDataBuilderSet& aData, const TLbsNetPosRequestQuality& aQuality);
+	virtual void NotifyReleaseLcsLocationNotification(const CLbsNetworkProtocolBase::TLbsPrivacyResponse& aResult);
+	virtual void NotifyFacilityLcsMoLrResult(TInt aReason, const TPositionInfo& aPosition);
+	virtual void NotifyMeasurementReportLocation(const TPositionInfo& aPosition);
+	virtual void NotifyMeasurementReportRequestMoreAssistanceData(const TLbsAssistanceDataGroup& aFilter);
+	virtual void NotifyMeasurementReportControlFailure(TInt aReason);
+	virtual void NotifyError(MLbsNetSimTestObserver::EFunction aFunction, int aError);
+	virtual void ProcessMeasurementControlLocationError(TInt aError);
+
+protected:
+	CT_LbsConflictStep(CT_LbsConflictServer& aParent);
+
+	void ConstructL();
+
+	TInt OpenNetSim(MLbsNetSimTestObserver* aObserver);
+	void CloseNetSim();
+
+	void EnterEmergencyState();
+	void ExitEmergencyState();
+	void StartNetworkPrivacyRequest();
+	void SetVerifySeqEvent(TInt aSeqEventId);
+	void SetVerifyAdhocEvent(TInt aAdhocEventId);
+	void SetCurrentSeqEvent(TInt aSeqEventId);
+	TBool VerifySeqEvents();
+
+
+	// From MT_LbsTimerUtilsObserver - keep alive timer to ensure we recvice all callbacks.
+	virtual void HandleTimerL(TInt aTimerId, const TTime& aTargetTime);
+
+enum {
+		// Self Locate.
+		ESelf_MOLR_NetSim_Got_NotifyRegisterLcsMoLr = 0x0010,					// --> TO NET
+		ESelf_MOLR_NetSim_Got_NotifyReleaseLcsMoLr,								// <-- FROM NET
+		ESelf_MOLR_NetSim_Got_NotifyMeasurementControlLocation,					// <-- FROM NET
+		ESelf_MOLR_NetSim_Got_NotifyReleaseLcsLocationNotification,				// ??				consider removing
+		ESelf_MOLR_NetSim_Got_NotifyFacilityLcsMoLrResult,						// <-- FROM NET
+		ESelf_MOLR_NetSim_Got_NotifyMeasurementReportLocation,					// --> TO NET
+		ESelf_MOLR_NetSim_Got_NotifyMeasurementReportRequestMoreAssistanceData,	// --> TO NET
+		ESelf_MOLR_NetSim_Got_NotifyMeasurementReportControlFailure,
+		ESelf_MOLR_NetSim_Got_NotifyError,
+		ESelf_MOLR_NetSim_Got_ProcessMeasurementControlLocationError,
+		EClient_Got_PosUpdate_Complete,
+	
+		// X3P MENU.
+		EX3P_MENU_MOLR_NetSim_Got_NotifyRegisterLcsMoLr = 0x0020,
+		EX3P_MENU_MOLR_NetSim_Got_NotifyReleaseLcsMoLr,
+		EX3P_MENU_MOLR_NetSim_Got_NotifyMeasurementControlLocation,
+		EX3P_MENU_MOLR_NetSim_Got_NotifyFacilityLcsMoLrResult,
+		EX3P_MENU_MOLR_NetSim_Got_NotifyMeasurementReportLocation,
+		EX3P_MENU_MOLR_NetSim_Got_NotifyMeasurementReportRequestMoreAssistanceData,
+		EX3P_MENU_MOLR_NetSim_Got_NotifyMeasurementReportControlFailure,
+		EX3P_MENU_MOLR_NetSim_Got_NotifyError,
+		EX3P_MENU_MOLR_NetSim_Got_ProcessMeasurementControlLocationError,
+
+		// X3P TIMER.
+		EX3P_TIMER_MOLR_NetSim_Got_NotifyRegisterLcsMoLr = 0x0030,
+		EX3P_TIMER_MOLR_NetSim_Got_NotifyReleaseLcsMoLr,
+		EX3P_TIMER_MOLR_NetSim_Got_NotifyMeasurementControlLocation,
+		EX3P_TIMER_MOLR_NetSim_Got_NotifyFacilityLcsMoLrResult,
+		EX3P_TIMER_MOLR_NetSim_Got_NotifyMeasurementReportLocation,
+		EX3P_TIMER_MOLR_NetSim_Got_NotifyMeasurementReportRequestMoreAssistanceData,
+		EX3P_TIMER_MOLR_NetSim_Got_NotifyMeasurementReportControlFailure,
+		EX3P_TIMER_MOLR_NetSim_Got_NotifyError,
+		EX3P_TIMER_MOLR_NetSim_Got_ProcessMeasurementControlLocationError,
+
+		// X3P PUSH.
+		EX3P_PUSH_MOLR_NetSim_Got_NotifyRegisterLcsMoLr = 0x0040,
+		EX3P_PUSH_MOLR_NetSim_Got_NotifyReleaseLcsMoLr,
+		EX3P_PUSH_MOLR_NetSim_Got_NotifyMeasurementControlLocation,
+		EX3P_PUSH_MOLR_NetSim_Got_NotifyFacilityLcsMoLrResult,
+		EX3P_PUSH_MOLR_NetSim_Got_NotifyMeasurementReportLocation,
+		EX3P_PUSH_MOLR_NetSim_Got_NotifyMeasurementReportRequestMoreAssistanceData,
+		EX3P_PUSH_MOLR_NetSim_Got_NotifyMeasurementReportControlFailure,
+		EX3P_PUSH_MOLR_NetSim_Got_NotifyError,
+		EX3P_PUSH_MOLR_NetSim_Got_ProcessMeasurementControlLocationError,
+
+		EClient_Got_X3P_Complete,
+
+		// MTLR.
+		EMTLR_NetSim_Got_NotifyReleaseLcsLocationNotification = 0x0050,		// --> TO NET ?
+		EMTLR_NetSim_Got_NotifyMeasurementControlLocation,					// <-- FROM NET
+		EMTLR_NetSim_Got_NotifyMeasurementReportLocation,					// --> TO NET
+
+		EMTLR_NetSim_Got_NotifyMeasurementReportRequestMoreAssistanceData,
+
+		EMTLR_NetSim_Got_NotifyMeasurementReportControlFailure,
+		EMTLR_NetSim_Got_NotifyError,
+		EMTLR_NetSim_Got_ProcessMeasurementControlLocationError,
+
+		EClient_Priv_Got_ProcessNetworkLocationRequest,
+		EClient_Priv_Got_ProcessNetworkPositionUpdate,
+		EClient_Priv_Got_ProcessRequestComplete,
+		
+		//X3P MENU2 (SECOND REQ)
+		EX3P_MENU2_MOLR_NetSim_Got_NotifyRegisterLcsMoLr = 0x0060,
+		EX3P_MENU2_MOLR_NetSim_Got_NotifyReleaseLcsMoLr,
+		EX3P_MENU2_MOLR_NetSim_Got_NotifyMeasurementControlLocation,
+		EX3P_MENU2_MOLR_NetSim_Got_NotifyFacilityLcsMoLrResult,
+		EX3P_MENU2_MOLR_NetSim_Got_NotifyMeasurementReportLocation,
+		EX3P_MENU2_MOLR_NetSim_Got_NotifyMeasurementReportRequestMoreAssistanceData,
+		EX3P_MENU2_MOLR_NetSim_Got_NotifyMeasurementReportControlFailure,
+		EX3P_MENU2_MOLR_NetSim_Got_NotifyError,
+		EX3P_MENU2_MOLR_NetSim_Got_ProcessMeasurementControlLocationError,
+
+		//X3P PUSH2 (SECOND REQ)
+		EX3P_PUSH2_MOLR_NetSim_Got_NotifyRegisterLcsMoLr = 0x0070,
+		EX3P_PUSH2_MOLR_NetSim_Got_NotifyReleaseLcsMoLr,
+		EX3P_PUSH2_MOLR_NetSim_Got_NotifyMeasurementControlLocation,
+		EX3P_PUSH2_MOLR_NetSim_Got_NotifyFacilityLcsMoLrResult,
+		EX3P_PUSH2_MOLR_NetSim_Got_NotifyMeasurementReportLocation,
+		EX3P_PUSH2_MOLR_NetSim_Got_NotifyMeasurementReportRequestMoreAssistanceData,
+		EX3P_PUSH2_MOLR_NetSim_Got_NotifyMeasurementReportControlFailure,
+		EX3P_PUSH2_MOLR_NetSim_Got_NotifyError,
+		EX3P_PUSH2_MOLR_NetSim_Got_ProcessMeasurementControlLocationError
+	};
+
+	
+	enum  {		EConnecting = 0,	/** Waiting for the Net Sim to connect to the protocol module. */
+				EWaiting,			/** Waiting for all the callbacks to be fired. */
+				EAborted,			/** Abort timer has fired before all callbacks fired */
+				EDone,				/** All the correct callbacks have been fired (and extended timer, if any, has fired), the test can end. */
+				ELast};				/** Used to allow extension of enums in derived classes - do not use! */
+
+
+
+	/** Network Simulator, to allow MT-LRs and to monitor network messages.
+	*/
+	RLbsNetSimTest iNetSim;
+
+	/** State machine variable for the test step.
+	*/
+	TInt iState;
+
+
+	/** Verify sequence array of expected events (callbacks) for a test.
+	*/
+	RArray<TInt> iVerifySeqArr;
+	
+	/** Verify adhoc array of expected events (callbacks) for a test.
+	*/
+	RArray<TInt> iVerifyAdhocArr;
+	
+	/** Current sequence array of actual events which were generated during the test.
+	*/
+	RArray<TInt> iCurrentSeqArr;
+
+
+	/** Reference position used to setup Net sim and later verification. */
+	TPosition iRefPos;
+
+
+	/** Timer used to ensure the test step keeps processing until all the required callbacks
+		have been called. Otherwise we would execute the test step calls and return from the
+		doTestStepL function and miss the callbacks being fired.
+	*/
+	CT_LbsTimerUtils* iKeepAliveTimer;
+
+	/** Timer used to abort the test step if all callbacks have not fired. Individual test
+		cases can start this time with appropriate time.
+	*/
+	CT_LbsTimerUtils* iAbortTimer;
+
+
+	/** Gives access to server member variables.
+	*/	
+	CT_LbsConflictServer& iParent;
+};
+
+#endif // __CT_LBS_CONFLICT_STEP_H__