datasourceadaptation/gpsdatasourceadaptation/common/inc/cadaptationpositioner.h
changeset 0 9cfd9a3ee49c
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/datasourceadaptation/gpsdatasourceadaptation/common/inc/cadaptationpositioner.h	Tue Feb 02 01:50:39 2010 +0200
@@ -0,0 +1,122 @@
+// Copyright (c) 2008-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
+ @InternalComponent
+*/
+
+#ifndef ADAPTATIONPOSITIONER_H
+#define ADAPTATIONPOSITIONER_H
+
+#include <lbs/epos_cpositioner.h>
+#include "cpositionerenvironment.h"
+#include "mpositioner.h"
+#include "lbstimer.h" // for MLbsCallbackTimerObserver & CLbsCallbackTimer
+
+class CRequestHandler;
+class TRequestParameters;
+
+class CAdaptationPositioner : public CPositioner,
+							  public MLbsCallbackTimerObserver,
+                       		  public MPositioner
+    {
+    public:
+        virtual ~CAdaptationPositioner();
+
+    public:
+        // From CPositioner.
+        virtual void NotifyPositionUpdate(TPositionInfoBase& aPosInfo, TRequestStatus& aStatus) = 0;
+        virtual void CancelNotifyPositionUpdate();
+        virtual void CancelNotifyPositionUpdate(TInt aError);
+        virtual TBool TrackingOverridden() const;
+        virtual void StartTrackingL(const TTimeIntervalMicroSeconds& aInterval);
+        virtual void StopTracking();
+
+        // From MPositioner
+        virtual void RequestCompleteNotify(const TPositionInfo& aPositionInfo, TInt aError, TTime& aActualTime);
+        virtual void ReportStatus(const TPositionModuleStatus& aStatus);
+		virtual TBool IsActive();
+		virtual void UpdateFailed(TInt aError);		
+		virtual TBool IsWarmingDown();
+		TUint InactivityTimeout();
+		
+    	// from MLbsCallbackTimerObserver
+		void OnTimerEventL(TInt aTimerId);
+		TInt OnTimerError(TInt aError, TInt aTimerId);
+
+		enum TEventId // timer event ID at request queue level
+			{
+			EMaxFixTimerEvent = 0,
+			EWarmDownTimerEvent
+			};
+
+    private:
+		void UpdateTrackingTime(TTime& aTimeNow);
+		void SetTrackingTime();
+        void MaxFixTimerEvent();
+        TInt MaxFixTimerError(TInt /*aError*/);
+        void WarmDownTimerEvent();
+        TInt WarmDownTimerError(TInt /*aError*/);
+        TBool IsAccurate(const TPositionInfo& aPositionInfo);
+    protected:
+        CAdaptationPositioner();
+        
+        virtual void SetModuleId(TPositionInfoBase* aPosInfo) = 0;
+        
+		void SetupTrackingRequestL();
+		TBool UseLastLocation(TPositionInfoBase& aPosInfo);
+        void StartMaxFixTimerL();
+        void StopMaxFixTimer();
+        void StartWarmDownTimerL();
+        void StopWarmDownTimer();
+ 		TBool IsTracking();
+        void ClearPositionInfo(TPositionInfoBase& aPosInfo);
+        TBool CompleteRequest(const TPositionInfo& aPositionInfo, TInt aError);
+       
+	protected:
+		enum TTrackingState
+			{
+			ERequestStatePreTracking	= 0x01,
+			ERequestStateTracking		= 0x02
+			};
+			
+		enum TRequestState
+			{
+			ERequestStateInitial		= 0x01,
+			ERequestStatePostInitial	= 0x02
+			};
+
+        TPositionInfoBase*			iPosInfo;
+        TRequestStatus*				iClientStatus;
+		CRequestHandler*			iRequestHandler;
+		CPositionerEnvironment*		iEnvironment;
+		
+		TBool						iActive;
+		TTimeIntervalMicroSeconds	iTrackingInterval;
+		TTime 						iTargetTime;
+		TTimeIntervalMicroSeconds	iTimeOutInterval;
+		TPositionCriteria			iCriteria;
+		TRequestState 				iState;
+		TUint						iInactivityTimeout;
+		
+    private:
+    	CLbsCallbackTimer* iMaxFixTimer;
+    	CLbsCallbackTimer* iWarmDownTimer;
+    };
+
+#endif
+
+// End of File