diff -r 000000000000 -r 667063e416a2 supl/locationsuplfw/protocolhandlerapi/inc/epos_csuplprotocolmanagerbase.h --- /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 +#include "epos_msuplpacketreceiver.h" +#include + +//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