supl/locationsuplfw/protocolhandlerapi/inc/epos_csuplprotocolmanagerbase.h
changeset 0 667063e416a2
child 19 02ba3f1733c6
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/supl/locationsuplfw/protocolhandlerapi/inc/epos_csuplprotocolmanagerbase.h	Tue Feb 02 01:06:48 2010 +0200
@@ -0,0 +1,466 @@
+/*
+* 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:   Provides the interface between SUPL Gateway and SUPL Protocol Handler. 
+*				 This class provides the functionality of loading and unloading 
+*				 the Protocol handler ECom plug-in.
+*
+*/
+
+
+#ifndef C_CSUPLPROTOCOLMANAGERBASE_H
+#define C_CSUPLPROTOCOLMANAGERBASE_H
+
+
+#include <e32base.h>
+#include "epos_msuplpacketreceiver.h"
+#include <epos_suplterminal.h>
+
+//Forword Declarations
+class CSuplSessionBase;
+class CSuplCommunicationManager;
+
+
+/**
+ * Constant:    KProtocolManagerInterfaceDefinitionUid
+ *
+ * Description: UID of this ECOM interface. 
+ *
+ */
+const TUid KProtocolManagerInterfaceDefinitionUid = {0x102073CB};
+ 
+
+/**
+ * Class:       CSUPLProtocolManagerBase
+ *
+ * Description: Custom ECOM interface definition. This interface is used by
+ *              clients to find specific instance and implementation of 
+ *				protocol handler Plugin.
+ */
+ 
+ 
+class CSUPLProtocolManagerBase : public CBase, public MSuplPacketReceiver
+    {
+
+public :
+
+	/**
+	 * For diffentiating request between Terminal & NET initiation 
+	 *
+	 */
+	enum TSuplReqType
+	    {
+	    ETerminal = 0,
+	    ENetwork
+	    }; 
+   
+public: // Constructors and destructor  
+
+    /**
+     * Function:     NewL, Two Phase Construction
+     *
+     * @Description: Wraps ECom object instantitation. Will search for
+     *               interface implementation, which matches to given
+     *               aOperationName.
+     *
+     * @Param:       aOperationName, name of requested implementation.
+     *
+     * @return 		 instance of implementation		
+     *
+     */     
+ 	IMPORT_C static CSUPLProtocolManagerBase* NewL(const TDesC8& aOperationName);
+
+    /**
+     * Function:     NewL, Two Phase Construction
+     *
+     * @Description: Wraps ECom object instantitation. Will search for
+     *               interface implementation, which matches to given
+     *               UID.
+     *
+     * @Param:       aImplementationUid, UID of requested implementation.
+     *
+     * @return 		 instance of implementation		
+     *
+     */     
+ 	IMPORT_C static CSUPLProtocolManagerBase* NewL(const TUid &aImplementationUid);
+ 
+    /**
+     * Function:     CSUPLProtocolManagerBase 
+     *
+     * @Description: Default constructor
+     *
+     * @Param:       None
+     *
+     * @Returns:     None
+     *
+     */
+   	IMPORT_C CSUPLProtocolManagerBase();
+   
+      /**
+     * Function:     SetImplementationUid
+     *
+     * @Description: Sets Uid of implementation 
+     *
+     * @Param:       UID of implementation.
+     *
+     * @Returns:     None
+     *
+     */
+	IMPORT_C virtual void ConstructL(const TUid& aUid); 
+
+    /**
+     * Function:     ~CSUPLProtocolManagerBase  
+     *
+     * @Description: Wraps ECom object destruction. Notifies the ECOM
+     *               framework that specific instance is being destroyed.
+     */
+    IMPORT_C  ~CSUPLProtocolManagerBase();
+
+    /**
+     * Function:     ImplementationUid, 
+     *
+     * @Description: Gives implementation UID
+     *
+     * @Param:       None.
+     *
+     * @return 		 Returns implementation UID 		
+     *
+     */     
+  	IMPORT_C TUid ImplementationUid() const;
+ 
+    /**
+     * Function:   	 Version 
+     *
+     * @Description: Gives version of implementation
+     *
+     * @Param:       None.
+     *
+     * @return 		 Returns TInt, containing version of implementation 
+     *
+     */     
+  	IMPORT_C TInt Version() const;
+
+public:
+
+    /**
+     * Function:     InitializeL, 
+     *
+     * @Description: Does the asynchonous initilization. 
+     *
+     * @Param:       aCommManager,Communication Manager
+     * @Param:       aInitilizationRequestStatus,for asynchronous initilization of protocol manager
+     *
+     * @Returns:     None
+     *
+     */
+  	virtual void InitializeL(
+  					 CSuplCommunicationManager* aCommManager,
+  					 TRequestStatus& aInitilizationRequestStatus) = 0;
+
+    /**
+     * Function:     CancelInitialize, 
+     *
+     * @Description: Does the cancellation of asynchronous initilization. 
+     *
+     * @Param:       None
+     *
+     * @Returns:     None
+     *
+     */
+  	virtual void CancelInitialize() = 0;
+
+    /**
+     * Function:     DeInitialize, 
+     *
+     * @Description: Does the de-initilization. 
+     *
+     * @Param:       aDeInitRequestStatus,for asynchronous de-initilization of protocol manager
+     *
+     * @Returns:     None
+     *
+     */
+  	virtual void DeInitialize(TRequestStatus& aDeInitRequestStatus) = 0;
+
+    /**
+     * Function:     CancelDeInitialize, 
+     *
+     * @Description: Does the cancellation of asynchronous de-initilization. 
+     *
+     * @Param:       None
+     *
+     * @Returns:     None
+     *
+     */
+  	virtual void CancelDeInitialize() = 0;
+
+    /**
+     * Function:     HandleSuplMessageL, 
+     *
+     * @Description: Handles packet which come from SLP in NET initiated case
+     *
+     * @Param:       aSuplSession , session object on which processing will start
+     * @Param:       aStatus, 			On return, the status of the request
+     *
+     * @Returns:     None
+     *
+     */ 		
+  	virtual void HandleSuplMessageL(
+  					 CSuplSessionBase *const aSuplSession,
+  					 TRequestStatus& aStatus,
+  					 HBufC8* aMessage) = 0;
+  					 
+public: 
+
+    /**
+     * Function:     CreateNewSession
+     *
+     * @Description: Creates new SuplSession instance
+     *
+     * @Param:       None
+     *
+     * @Returns:     Instance of CSuplSessionBase.
+     *
+     */
+   	virtual CSuplSessionBase* CreateNewSessionL(
+   					 TSuplReqType aRequestType, 
+   					 TInt aIpcSessionId,
+   					 RSuplTerminalSubSession::TSuplServiceType aSuplService) = 0;
+   
+   	/**
+     * Function:     DestroySession
+     *
+     * @Description: Destoys SuplSession instance
+     *
+     * @Param:       None
+     *
+     * @Returns:     TInt, if session is invalid, then returns KErrArgument
+     *
+     */
+   	virtual TInt DestroySession(CSuplSessionBase* aSuplSession ) = 0;
+   
+    /**
+     * Function:     RunSessionL, 
+     *
+     * @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:       aRequestID , Request ID of Session
+     *
+     * @Returns:     None
+     */ 		
+  	virtual void RunSessionL(
+  					 CSuplSessionBase *const aSuplSession,
+  					 TRequestStatus& aStatus,
+  					 const TDesC& aHslpAddress, 
+  					 TBool aFallBack, 
+  					 TBool aFirstReq, 
+  					 TInt aAllowedCapabilities, 
+  					 TInt aRequestID = 0) = 0;
+
+    /**
+     * Function:     RunSessionL, 
+     *
+     * @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:       aQop , specifies the quality of position
+     * @Param:       aRequestID , Request ID of Session
+     *
+     * @Returns:     None
+     *
+     */
+  	virtual void RunSessionL(
+  					 CSuplSessionBase *const aSuplSession,
+  					 TRequestStatus& aStatus,
+  					 const TDesC& aHslpAddress, 
+  					 TBool aFallBack, 
+  					 TBool aFirstReq, 
+  					 TInt aAllowedCapabilities,
+  					 TSuplTerminalQop& aQop, 
+  					 TInt aRequestID = 0) = 0;
+
+   	/**
+     * Function:     CancelRunSession
+     *
+     * @Description: Cancels the Run Session Request
+     *
+     * @Param:       Session Object
+     *
+     * @Returns:     None
+     *
+     */
+   	virtual void CancelRunSession(CSuplSessionBase* aSuplSession) = 0;
+    
+    /**
+     * Function:     RunSuplTriggerSessionL, 
+     *
+     * @Description: Starts processing on session
+     *
+     * @Param:       aSuplSession, session object on which processing will start
+     * @Param:       aStatus, On return, the status of the request
+     * @Param:       aPTrigger, specifies the periodic trigger session
+     * @Param:       aHslpAddress, specifies HSLP Server Address to be used 
+     *				  	to get position from it
+     * @Param:       aFallBack, enables/diables Multiple-SLP Fallback mechanism
+     * @Param:       aAllowedCapabilities, Allowed capabilities of SET
+     * @Param:       aRequestID, Request ID of Session     
+     *
+     * @Returns:     None
+     *
+     */
+   	virtual void RunSuplTriggerSessionL(
+  					 CSuplSessionBase *const aSuplSession,
+  					 TRequestStatus& aStatus,
+  					 TSuplTerminalPeriodicTrigger& aPTrigger,
+  					 const TDesC& aHslpAddress, 
+  					 TBool aFallBack, 
+  					 TInt aAllowedCapabilities,
+  					 TInt aRequestID = 0) = 0;
+
+   	/**
+     * Function:     CancelSuplTriggerSession
+     *
+     * @Description: Cancels an in-progress Terminal Initiated 
+	 * 				 Periodic Trigger Session Location Request
+     *
+     * @Param:       Session Object
+     *
+     * @Returns:     None
+     *
+     */
+   	virtual void CancelSuplTriggerSession(CSuplSessionBase* aSuplSession) = 0;
+
+   	/**
+     * Function:     NotifyTriggerFired
+     *
+     * @Description: Starts listening for the trigger fired event
+     *
+     * @Param:       None
+     *
+     * @Returns:     None
+     *
+     */
+    virtual void NotifyTriggerFiredL(
+    				 CSuplSessionBase *const aSuplSession,
+  					 TRequestStatus& aStatus, 
+        			 TSuplTriggerFireInfo& aFireInfo) = 0;
+
+    
+    /**
+     * Function:     GetSUPLMessageVersionL
+     *
+     * @Description: Cancels listening for the trigger fired event
+     *
+     * @Param:       aMajorVersion,return parameter which will hold version after decoding of message.
+     *
+     * @Param:       aReceivedMessage,message to be used to get version number.
+     *
+     * @Returns:     returns KErrNone if recceived message gets decoded successfuly otherwise KErrGeneral.
+     *
+     */
+    virtual TInt GetSUPLMessageVersionL(TInt& aMajorVersion, const TDesC8& aReceivedMessage);
+    
+    
+
+				 
+public: // from MSuplPacketReceiver
+
+   	/**
+     * Function:     HandleSuplPackets
+     *
+     * @Description: Process Supl message which are comming from SLP
+     *
+     * @Param:       aPacket, message packet
+     *
+     * @Returns:     None
+     *
+     */
+   	virtual void HandlePacket(const TDesC8& aPacket, TUint aPortNum) = 0;
+
+   	/**
+     * Function:     HandlePacketError
+     *
+     * @Description: Handles error if any while reading from communication manager
+     *
+     * @Param:       aError, error code occured while reading from communication manager
+     *
+     * @Returns:     None
+     *
+     */
+   	virtual void HandlePacketError(TInt aError) = 0;
+    
+private:
+
+ 	/**
+     *	By default,  prohibit copy constructor
+	 */         
+    CSUPLProtocolManagerBase( const CSUPLProtocolManagerBase& );
+    
+   	/**
+     *	By default,  Prohibit assigment operator
+     *
+	 */
+    CSUPLProtocolManagerBase& operator= ( const CSUPLProtocolManagerBase& );
+	
+    /**
+     * Function:     GetVersionL 
+     *
+     * @Description: Gives version of implementation 
+     *
+     * @Param:       None
+     *
+     * @Returns:     TInt , containing version of implementation 
+     *
+     */
+	TInt GetVersionL() const;	
+	
+   	/**
+     * Function:     SetImplementationUid
+     *
+     * @Description: Sets Uid of implementation 
+     *
+     * @Param:       UID of implementation.
+     *
+     * @Returns:     None
+     *
+     */
+	 //void SetImplementationUid(const TUid& aUid); 
+
+private:
+
+    /** 
+     * iDtor_ID_Key  Instance identifier key. When instance of an
+     *               implementation is created by ECOM framework, the
+     *               framework will assign UID for it. The UID is used in
+     *               destructor to notify framework that this instance is
+     *               being destroyed and resources can be released.
+     *
+     */     
+    TUid iDtor_ID_Key;
+    
+    /**
+     * Uid of Implementation    
+     *
+     */
+    TUid iImplementationUid;
+    
+    };
+
+
+#endif // C_CSUPLPROTOCOLMANAGERBASE_H
+
+// End of File