locationrequestmgmt/locationserver/inc/EPos_CPosSubSession.h
changeset 0 9cfd9a3ee49c
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/locationrequestmgmt/locationserver/inc/EPos_CPosSubSession.h	Tue Feb 02 01:50:39 2010 +0200
@@ -0,0 +1,135 @@
+/*
+* Copyright (c) 2005-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 CPOSSUBSESSION_H
+#define CPOSSUBSESSION_H
+
+// INCLUDES
+#include <e32base.h>
+#include <lbs.h>
+#include <lbs/lbsadmin.h>
+#include "EPos_MPosParameterObserver.h"
+#include "lbsnetinternalapi.h" // for RLbsNetworkRegistrationStatus
+#include "lbsnetregstatusint.h" // for RLbsNetworkRegistrationStatus
+
+// CONSTANTS
+
+// FORWARD DECLARATIONS
+struct TPosModulesEvent;
+class CPosModuleSettings;
+class CPositioner;
+class CPositionRequest;
+class MPosStatusObserver;
+class MPosModuleStatusManager;
+class CPosLocMonitorReqHandlerHub;
+// TODO Verify
+class CPosLastPositionAreaRequest;
+// TODO to be removed - included to compile code before completion of 
+// location monitor
+
+
+// CLASS DECLARATION
+
+/**
+* This class provides functionality common to all EPos subsessions.
+*/
+class CPosSubSession : public CObject, public MPosParameterObserver
+    {
+	public:  // Constructor & Destructor
+        static CPosSubSession* NewLC(
+        			CPosModuleSettings& aModuleSettings,
+        			CPosLocMonitorReqHandlerHub& aLocMonitorReqHandlerHub,
+        			TUid aImplementationUid,
+        			TBool aIsProxy,
+        			MPosStatusObserver* aStatusObserver,
+        			MPosModuleStatusManager* aModuleStatusManager);
+		virtual ~CPosSubSession();
+
+	public:		// New functions
+        void ServiceL(const RMessage2& aMessage);
+        void HandleSettingsChangeL(TPosModulesEvent aEvent);
+        void NotifyServerShutdown();
+
+    protected:  // Functions from MPosParameterObserver
+        TInt GetRequiredPositionQuality(TPositionQuality& aPositionQuality) const;
+        void GetMaxAge(TTime& aMaxAge) const;
+        TBool IsPartialUpdateAllowed() const;
+        
+        virtual void GetUpdateTimeOut(TTimeIntervalMicroSeconds& aUpdateTimeOut) const;
+        virtual void SetPsyDefaultUpdateTimeOut(const TTimeIntervalMicroSeconds& aUpdateTimeOut);
+        virtual void ExtendUpdateTimeOut(const TTimeIntervalMicroSeconds& aAdditionalTime);
+        
+    private:
+        CPosSubSession();
+
+        void ConstructL(
+            CPosModuleSettings& aModuleSettings,
+            CPosLocMonitorReqHandlerHub& aLocMonitorReqHandlerHub,
+            TPositionModuleId aImplementationUid,
+            MPosStatusObserver* aStatusObserver,
+            MPosModuleStatusManager* aModuleStatusManager,
+            TBool aIsProxy);
+
+        CPosSubSession( const CPosSubSession& );
+        CPosSubSession& operator= ( const CPosSubSession& );
+
+        void HandleSetRequestorL(const RMessage2& aMessage);
+        void HandleSetRequestorStackL(const RMessage2& aMessage);
+		void HandleSetUpdateOptionsL(const RMessage2& aMessage);
+		void HandleGetUpdateOptionsL(const RMessage2& aMessage);
+		void HandleGetLastKnownPositionL(const RMessage2& aMessage);
+		void HandleNotifyPositionUpdateL(const RMessage2& aMessage);
+		void HandleGetLastKnownPositionAreaL(const RMessage2& aMessage);   		// TODO Verify
+        void HandleNotifyPositionUpdateCancelL(const RMessage2& aMessage);
+        void HandleGetLastKnownPositionCancelL(const RMessage2& aMessage);
+        void HandleGetLastKnownPositionAreaCancelL(const RMessage2& aMessage); 	// TODO Verify
+        void HandleCancelAsyncRequestL(const RMessage2& aMessage);
+        
+        void ReadModuleInfoL();        
+
+        void ValidateRequestorL(CRequestor* aRequestor);
+
+        void RequestComplete(const RMessage2& aMessage, TInt aCompleteCode);
+
+        TBool IsSelfLocateEnabled();
+        
+    private:    // Data	
+    	RRequestorStack             iRequestors;
+        CPositionRequest*           iPositionRequest;        
+        TBool                       iWaitingForFirstTrackingRequest;
+        TTimeIntervalMicroSeconds   iMaxUpdateAge;
+        TUid                        iImplementationUid;
+        TUint32                     iClassesSupported;
+        TBool                       iAcceptPartialUpdates;
+        TBool                       iTracking;
+        CPosLocMonitorReqHandlerHub*    iLocMonitorReqHandlerHub;
+
+        TTimeIntervalMicroSeconds	iUpdateTimeOut;
+        TTimeIntervalMicroSeconds	iPsyDefaultUpdateTimeOut;
+        TBool 						iLocationManagementSupported;    
+        CLbsAdmin*                  iAdmin;
+    	/** internal interface used to broadcast the network registration (roaming) status */
+    	RLbsNetworkRegistrationStatus	iNetRegStatus;        
+    };
+
+
+#endif  // CPOSSUBSESSION_H
+
+// End of File