lbstest/lbstestproduct/lbshybridmolr/inc/ctlbsmolrtracking.h
changeset 36 b47902b73a93
child 49 5f20f71a57a3
child 60 9a7e3d5f461a
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/lbstest/lbstestproduct/lbshybridmolr/inc/ctlbsmolrtracking.h	Fri Jun 04 10:34:15 2010 +0100
@@ -0,0 +1,144 @@
+// Copyright (c) 2007-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:
+// This contains the header file for Location Data Source Tests
+// 
+//
+
+#ifndef __CT_LBS_MOLR_TRACKING_H__
+#define __CT_LBS_MOLR_TRACKING_H__
+
+// LBS includes.
+#include <lbs.h>
+#include <lbscommon.h>
+#include <lbs/lbsprivacycontroller.h>
+#include <lbs/lbsadmin.h>
+
+// LBS test includes.
+#include "ctlbshybridmolrstep.h"
+#include <lbs/test/lbsnetprotocolproxy.h>
+#include <lbs/test/posserverwatch.h>
+#include "ctlbstestactivemanager.h"
+#include "ctlbsnetprotocol.h"
+#include "lbs/lbspositioningstatus.h"
+
+// Literals used
+_LIT(KLbsMolrTracking, "LbsMolrTracking");
+
+class CT_LbsMolrTracking :	public	CT_LbsHybridMOLRStep, public MTestFlowObserver, public MLbsPositioningStatusObserver
+	{
+private:
+	class CT_ClientData : public CBase
+		{
+	public:
+		CT_ClientData(TInt aSessionIdDelay, TInt aSessionStepDelay, TBool aCancelRequest,TInt aSessionIdCancel, TInt aSessionStepCancel, TInt aTrackingLoops, TPositionUpdateOptions aUpdateOptions, TInt aPsyUid, TInt aExpectedError)
+			: iSessionIdDelay(aSessionIdDelay), iSessionStepDelay(aSessionStepDelay), 
+			 	iCancelRequest(aCancelRequest), iSessionIdCancel(aSessionIdCancel), iSessionStepCancel(aSessionStepCancel), iPsyUid(aPsyUid), iExpectedError(aExpectedError),
+				iInitialStep(ETrue), iNumberOfNPUDs(aTrackingLoops), iPositionsReceived(0), 
+				iUpdateOptions(aUpdateOptions),iRequestCancelled(EFalse)
+			{}
+		~CT_ClientData()
+			{
+			delete iWatcher;
+			iWatcher = NULL;
+			iPositioner.Close();
+			iServer.Close();
+			}
+	public:
+		// After what session should this client start
+		TInt iSessionIdDelay;
+		// After which step in the session should this client start
+		TInt iSessionStepDelay;
+		// whether an NPUD should be cancelled
+		TBool iCancelRequest;
+		// After what session should this client's last NPUD be cancelled
+		TInt iSessionIdCancel;
+		// After which step in the session should this client's last NPUD be cancelled
+		TInt iSessionStepCancel;		
+		// Specifies if the initial NPUD has been sent out or not
+		TBool iInitialStep;		
+		RPositionServer iServer;
+		RPositioner iPositioner;
+		// The number of NPUDs it needs to send out
+		TInt iNumberOfNPUDs;
+		// The number of positions received so far
+		TInt iPositionsReceived;
+		CPosServerWatcher* iWatcher;
+		
+		TTime iTimeOfInitialPosition;
+		TPositionUpdateOptions iUpdateOptions;
+		// whether the clients last NPUD was cancelled 
+		TBool iRequestCancelled;
+		// The time when the last calculated position was received (for MaxAge checking)
+		TTime iTimeOfLastPosition;
+		// The time when the previous position was received (for calculating the right window for variant2 behaviour)
+		TTime iTimeOfPreviousPosition;
+		// Uid of the positioner to be used
+		TInt iPsyUid;
+		TBool iAutonomousPsy;	// whether the client has opened a session to the (autonomous) gps psy
+		
+		TInt  iExpectedError;	// error code that the client expects when it issues an NPUD
+		};
+public:
+	~CT_LbsMolrTracking();
+
+	static CT_LbsMolrTracking* New(CT_LbsHybridMOLRServer& aParent);
+	virtual TVerdict doTestStepPreambleL();
+	virtual TVerdict doTestStepPostambleL();
+	virtual TVerdict doTestStepL();
+
+	// MTestFlowObserver
+	void OnReadyL(TInt aObjectId);
+	void OnTimedOutL(TInt aObjectId);
+	void OnGetLastKnownPositionL(TInt aObjectId, TInt32 aErr, const TPositionInfoBase& aPosInfo);
+	void OnNotifyPositionUpdateL(TInt aObjectId, TInt32 aErr, const TPositionInfoBase& aPosInfo);
+	void StopTest();
+	void OnSignalNetworkStep(TInt aSessionId, TInt aSessionStep);
+	
+    //MLbsPositioningStatusObserver
+    void OnPositioningStatusUpdate(const CLbsPositioningStatus::TLbsPositioningStatus& aPositioningStatus);
+
+protected:
+	CT_LbsMolrTracking(CT_LbsHybridMOLRServer& aParent);
+	void ConstructL();
+
+private:
+	void DoClientStepL(TInt aIndex);
+	void EnablePsy(TInt aPsyUid);
+private:
+	
+	/** Used so the test checks the right request is sent to the network */
+	CLbsAdmin::TGpsMode iAdminGpsMode;
+
+	/** Used so the network proxy knows what to expect*/
+	TBool iGPSModeNotSupported;
+	
+	CT_LbsNetProtocol* iNetworkProtocol;
+	RPointerArray<CT_LbsTestActiveManager> iClientTestManagers;
+
+	/** The information of the clients of LBS */
+	RPointerArray<CT_ClientData> iClients;
+	
+	// used for "one off" tests
+	// =1 - LastKnownPosition test
+	// =2 - MaxAge test
+	// =3 - EarlyComplete test 
+	TInt iSpecialTestMode;
+	TInt  iPositioningIndicatorCount;
+    TInt  iPosStatusCount;
+    CLbsPositioningStatus* iLbsPositioningStatus;
+    CLbsPositioningStatus::TLbsPositioningStatus iPositioningStatus;
+	};
+
+#endif //__CT_LBS_MOLR_TRACKING_H__
+