--- /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