supl/locationomasuplprotocolhandler/protocolhandler/inc/epos_comasuplprotocolmanager.h
changeset 0 667063e416a2
child 19 02ba3f1733c6
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/supl/locationomasuplprotocolhandler/protocolhandler/inc/epos_comasuplprotocolmanager.h	Tue Feb 02 01:06:48 2010 +0200
@@ -0,0 +1,358 @@
+/*
+* Copyright (c) 2002-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:   Header file for COMASUPLProtocolManager implementation
+*
+*/
+
+
+#ifndef C_COMASUPLPROTOCOLMANAGER_H
+#define C_COMASUPLPROTOCOLMANAGER_H
+
+// Include Files
+#include <e32cmn.h> 
+#include <etel.h> 
+#include <etelmm.h> 
+
+#include "epos_csuplprotocolmanagerbase.h"   // interface
+#include "epos_comasuplinitilizeobserver.h"
+#include "epos_comasupldeinitializer.h"
+
+// Farward Declaration
+class COMASuplTrace;
+class CSuplCommunicationManager;
+class COMASuplCommonConfig;
+class TSuplTerminalQop;
+class COMASuplInitilizeRequestor;
+class COMASuplAsnHandlerBase;
+
+/**
+*  An implementation of the COMASUPLProtocolManagerBase definition. 
+*  @lib eposomasuplprotocolhandler.lib
+*  @since S60 v3.1
+*/ 
+class COMASUPLProtocolManager : public CSUPLProtocolManagerBase,
+								public MCompleteInitilization,
+								public MCompleteDeInitialization								
+    {    
+public:
+	/**
+	 * NewL, Create instance of concrete implementation. 
+	 * @since S60 v3.1u		
+	 * @param      None
+	 * @return    Instance of this class.
+	 */
+   	IMPORT_C static COMASUPLProtocolManager* NewL();
+
+	/**
+	 * ~COMASUPLProtocolManager
+	 * @since S60 v3.1u		
+	 * @param      None
+	 * @return     None
+	 */
+  	IMPORT_C  ~COMASUPLProtocolManager();
+
+	/**
+	 * CreateNewSessionL, Creates new SuplSession instance
+	 * @since S60 v3.1u
+	 * @param      aRequestType, used for differentiation between SET & NET cases
+	 * @return     Instance of CSuplSessionBase.
+	 */
+  	IMPORT_C virtual CSuplSessionBase* CreateNewSessionL( 
+						CSUPLProtocolManagerBase::TSuplReqType aRequestType, 
+						TInt aIpcSessionId,
+						RSuplTerminalSubSession::TSuplServiceType aSuplService);
+  
+	/**
+	 * RunSessionL, Starts the SUPL Sesssion for Terminal Initiated Location Request
+	 * @since S60 v3.1
+	 * @param       aSuplSession , session object on which processing will start
+	 * @param       aStatus, 	  On completion, sets status of the request
+	 * @param       aAllowedCapabilities , Allowed capabilities of SET
+	 * @Param:      aQop,  specifies the quality of position
+	 * @param       aRequestID , Request ID of Session
+	 * @return      None
+	 */
+  	IMPORT_C virtual void RunSessionL(
+  						CSuplSessionBase *const aSuplSession,
+  						TRequestStatus& aStatus,
+  						const TDesC& aHslpAddress,
+  						TBool aFallBack,
+  						TBool aFirstReq,
+  						TInt aAllowedCapabilities,
+  						TSuplTerminalQop& aQop,
+  						TInt aRequestID = 0);
+
+	/**
+	 * RunSessionL, Starts the SUPL Sesssion for Terminal Initiated Location Request
+	 * @since S60 v3.1
+	 * @param       aSuplSession , session object on which processing will start
+	 * @param       aStatus, 	  On completion, sets status of the request
+	 * @param       aAllowedCapabilities , Allowed capabilities of SET
+	 * @param       aRequestID , Request ID of Session
+	 * @return      None
+	 */
+  	IMPORT_C virtual void RunSessionL(
+  						CSuplSessionBase *const aSuplSession,
+  						TRequestStatus& aStatus,
+  						const TDesC& aHslpAddress,
+  						TBool aFallBack,
+  						TBool aFirstReq,
+  						TInt aAllowedCapabilities,
+  						TInt aRequestID = 0);
+	/**
+ 	 * HandleSuplMessage, Handles session in NET initiated case
+	 * @since S60 v3.1
+	 * @param       aSuplSession , session object on which processing will start
+	 * @param       aStatus, 	  On completion, sets status of the request
+	 * @param       aMessage,	message to be decoded.
+	 * @return      None
+	 */
+  	IMPORT_C virtual void HandleSuplMessageL(
+  						CSuplSessionBase *const aSuplSession,
+  						TRequestStatus& aStatus,
+  						HBufC8* aMessage);
+
+	/**
+	 * DestroySession, Destroys the specified Supl Session instance
+ 	 * @since S60 v3.1u
+	 * @param      aSuplSession , session object which has to delete
+	 * @return     TInt,returns KErrNone if deleted successfully else KErrArgument  
+	 */
+  	IMPORT_C TInt DestroySession(CSuplSessionBase* aSuplSession);	
+  
+	/**
+	 * InitializeL, Does the asynchonous initilization. 
+	 * @since S60 v3.1u
+	 * @param      aCommManager,Communication Manager
+	 * @param      aInitilizationRequestStatus, TRequestStatus for asynchronous initilization operation
+	 * @return     None
+	 */
+  	IMPORT_C void InitializeL(
+  						CSuplCommunicationManager* aCommManager,
+  						TRequestStatus& aInitilizationRequestStatus);
+  
+    /**
+     * Function:     CancelInitialize, 
+     * @Description: Does the cancellation of asynchonous initilization. 
+     * @Param:       None
+     * @Returns:     None
+     */
+  	IMPORT_C  void CancelInitialize();
+
+    /**
+     * Function:     DeInitialize, 
+     * @Description: Does the de-initilization. 
+     * @Param:       aDeInitRequestStatus,for asynchronous de-initilization of protocol manager
+     * @Returns:     None
+     */
+  	IMPORT_C void DeInitialize(TRequestStatus& aDeInitRequestStatus);
+
+    /**
+     * Function:     CancelDeInitialize, 
+     * @Description: Does the cancellation of asynchonous de-initilization. 
+     * @Param:       None
+     * @Returns:     None
+     */
+  	IMPORT_C void CancelDeInitialize();
+  
+	/**
+	 * HandleSuplPackets,Process Supl message which are comming from SLP
+	 * @since S60 v3.1u
+	 * @param       aPacket, message packet
+	 * @return      None
+	 */
+  	IMPORT_C void HandlePacket(const TDesC8& aPacket, TUint aPortNum);
+
+	/**
+	 * HandlePacketError,Process Supl message receiving Errors 
+	 * @since S60 v3.1u
+	 * @param      aError, the Error Code
+	 * @return     None
+	 */
+  	IMPORT_C virtual void HandlePacketError(TInt aError);
+  
+	/**
+	 * CancelRunSession,Cancels an in-progress Terminal Initiated Location Request
+	 * @param       aSession, The session on which the request has to be cancelled
+	 * @return      None
+	 */
+  	IMPORT_C void CancelRunSession(CSuplSessionBase* aSuplSession);
+  
+    /**
+     * Function:     RunSuplTriggerSessionL, 
+	 * @since S60 v5.2
+     * @Description: Starts processing on session
+     * @Param:       aSuplSession , session object on which processing will start
+     * @Param:       aStatus, On return, the status of the request
+     * @Param:       aAllowedCapabilities , Allowed capabilities of SET
+     * @Param:       aPTrigger , specifies the periodic trigger session
+     * @Param:       aRequestID , Request ID of Session
+     *
+     * @Returns:     None
+     */
+  	IMPORT_C virtual void  RunSuplTriggerSessionL(
+  					CSuplSessionBase *const aSuplSession,
+  					TRequestStatus& aStatus,
+  					TSuplTerminalPeriodicTrigger& aPTrigger,
+  					const TDesC& aHslpAddress, 
+  					TBool aFallBack,
+  					TInt aAllowedCapabilities,
+  					TInt aRequestID = 0);
+
+	/**
+	 * CancelPeriodicTriggerSession,Cancels an in-progress Terminal Initiated 
+	 * Periodic Trigger Session Location Request
+	 * @since S60 v5.2
+     * @Description: Cancels the Triggering Session
+	 * @param       aSession, The session on which the request has to be cancelled
+	 * @return      None
+	 */
+  	IMPORT_C virtual void CancelSuplTriggerSession(CSuplSessionBase* aSuplSession);
+  
+   	/**
+     * Function:     NotifyTriggerFired
+ 	 * @since S60 v5.2
+     * @Description: Starts listening for the trigger fired event
+     * @Param:       None
+     * @Returns:     None
+     *
+     */
+  	IMPORT_C virtual void NotifyTriggerFiredL(
+    				 CSuplSessionBase *const aSuplSession,
+  					 TRequestStatus& aStatus, 
+        			 TSuplTriggerFireInfo& aFireInfo);
+
+   	/**
+     * Function:     SetCommonConfig
+	 * @since S60 v5.2
+     * @Description: Sets the common configuration data
+     * @Param:       aCommmonConfig, common data structure 
+     * @Returns:     None
+     *
+     */
+  	IMPORT_C virtual void SetCommonConfig(COMASuplCommonConfig*& aCommmonConfig);
+
+   	/**
+     * Function:     GetSUPLMessageVersionL
+	 * @since S60 v5.2
+     * @Description: Gets the SUPL Message Version
+     * @Param:       aMajorVersion, Major Version Number
+     * @Param:       aReceivedMessage, Recived Message Data
+     * @Returns:     None
+     *
+     */
+	IMPORT_C virtual TInt GetSUPLMessageVersionL(TInt& aMajorVersion, const TDesC8& aReceivedMessage);
+	
+protected: // Construction
+	/**
+	 * COMASUPLProtocolManager,Perform the first phase of two phase construction
+	 * @since S60 v3.1u
+	 * @param       None
+	 * @return      None
+	 */
+	IMPORT_C COMASUPLProtocolManager();
+
+private: 
+	/**
+     * ConstructL,Perform the second phase construction of a COMASUPLProtocolManager object.
+     * @since S60 v3.1u
+     * @param       None
+     * @return      None
+     */
+    void ConstructL();
+
+private : //For internal use only       
+	/**
+	 * CompleteInitilization,Completes TRequestStatus used for initilization.
+	 * @since S60 v3.1u
+	 * @param       aError, error code by which we are going to complete TRequestStatus.
+	 * @return      None
+	 */
+	void CompleteInitilization(TInt aError);  														
+	
+	
+	void DeInitilizationCompletedL(TInt aError);
+	
+	/**
+	 * GetNetworkModeL,
+	 * @since 		S60 v5.2
+	 * @param      	None
+	 * @return     	TInt,returns KErrNone 
+	 */
+	TInt GetNetworkModeL();
+	
+	/**
+	 * LoadOMASUPLPluginsL, Loads supl protocolhandler plugins
+	 * @since 		S60 v5.2
+	 * @param      	None
+	 * @return     	None
+	 */
+	void LoadOMASUPLPluginsL();
+	
+	/**
+	 * GetSuplVersion, Gets Supl Version
+	 * @since 		S60 v5.2
+	 * @param      	None
+	 * @return     	None
+	 */
+	TInt GetSuplVersion(TInt& aMajor,const TPtrC8& aSuplAsnMessage );
+	
+    
+private:	//From MCompleteInitilization
+
+    /**
+     * InitilizationCompletedL, Gets called after initilization gets completed with error or without error.
+     * @since S60 v3.1u          
+     * @param      aError,Error code if any happen while initilization.
+     * @return     None.
+     */
+	void InitilizationCompletedL(TInt aError);
+	
+private: // Data Members
+
+	//Tracing utility
+	COMASuplTrace* iTrace;
+
+	// Asynchronous request status for Initilization
+	TRequestStatus* iInitilizationRequestStatus; 
+	TRequestStatus* iInitilizationRequestStatus2;
+	TRequestStatus* iDeInitRequestStatus; 
+
+    COMASuplInitilizeRequestor* iOMASuplInitilizeRequestor;
+	
+    CSUPLProtocolManagerBase* iOMASuplProtocolHandler1;
+
+    CSUPLProtocolManagerBase* iOMASuplProtocolHandler2;
+    
+    COMASuplCommonConfig*     iCommonConfig;
+    
+    //Communication Manager
+	CSuplCommunicationManager* iCommManager;
+	
+	COMASuplAsnHandlerBase* iOMASuplAsnHandlerBaseImpl; 
+	
+	COMASuplDeInitilizer* iOMASuplDeInitilizer;
+	
+    TInt iSuplService;
+    // Indicates if the Protocol Manager was initialized or not
+    TBool iIsInitilized;
+    
+    TBool isPH2Shared;
+    
+    TBool iIsPhDeinitialized1;
+    TBool iIsPhDeinitialized2;
+       
+	};
+
+#endif // C_COMASUPLPROTOCOLMANAGER_H