diff -r a2efdd544abf -r b47902b73a93 datasourcemodules/locationapesuplpsy/inc/suplpsyrequestmanager.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/datasourcemodules/locationapesuplpsy/inc/suplpsyrequestmanager.h Fri Jun 04 10:34:15 2010 +0100 @@ -0,0 +1,200 @@ +/* +* Copyright (c) 2005 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: SUPL PSY singleton class. +* +*/ + + + +#ifndef SUPLPSYREQUESTMANAGER_H +#define SUPLPSYREQUESTMANAGER_H + +// INCLUDES +#include "suplpsycellidhandler.h" +// FORWARD DECLARATIONS + +// CLASS DECLARATION +class MSuplPsyRequestCompleteListener; +class CSuplPsyRequestor; +class CEnvironmentChangeNotifier; +class CSuplPsyInfoStoreManager; + +/** +* This class implements singleton class of SUPL PSY +* +* This class provides function to instance a singleton object of SUPL PSY. +* All client connections and location requests are managed by this class. +* +* @lib nlaSsuplpsy.dll +* @since S60 3.1 +*/ +class CSuplPsyRequestManager : public CBase, public MBasicCellIDListener + { + public: // Constructors and destructor + + /** + * Register the positioner and get singleton instance of the object. + * @param aPositioner The reference to the positioner object that + * will register to request manager. + */ + static CSuplPsyRequestManager* RegisterL( + MSuplPsyRequestCompleteListener& aPositioner ); + + /** + * Unregister the positioner. The singleton object will be self - destructed + * if not positioner is registered + * @param aPositioner reference to the positioner that unregister to + * request manager. + */ + void Unregister( + MSuplPsyRequestCompleteListener& aPositioner ); + /** + * Recieves max age set by client + * @param aMaxAge Max age value + * + */ + void RecieveMaxAge( TTime aMaxAge ); + + + public: // Functions from base classes + + /** + * Make location request to request manager + * @param aPositioner The requestor that makes location request + * @since S60 3.1 + */ + void NotifyPositionUpdate( + MSuplPsyRequestCompleteListener& aPositioner ); + + + /** + * Cancel location request from request manager + * @param aPositioner Reference to the requestor that will cancel the on - going + * location request. + * @since S60 3.1 + */ + void CancelNotifyPositionUpdate( + MSuplPsyRequestCompleteListener& aPositioner ); + + /** + * Check if the last position is still valid + * @param aMaxAge The max age + * @return ETrue if last position valid. Otherwise, return EFalse + */ + TBool IsLastPostionValid( TTime aMaxAge ) const; + + /** + * Get position info + * @return Position info. The value is valid only if there has been location + * received + */ + const HPositionGenericInfo& GetPosition(); + /** Callback for completion of cell id request + * + * @return Position info. The value is valid only if there has been location + * received + */ + void BasicCellIDRequestCompletedL(TInt aErrorCode); + + + private: + + /** + * C++default constructor. + */ + CSuplPsyRequestManager(); + + /** + * Destructor. + */ + ~CSuplPsyRequestManager(); + + /** + * By default Symbian 2nd phase constructor is private. + */ + void ConstructL(); + + /** + * Register a positioner + */ + void RegisterPositionerL( + MSuplPsyRequestCompleteListener& aPositioner ); + + /** + * Find the index of positioner + */ + TInt FindPositioner( + MSuplPsyRequestCompleteListener& aPositioner ) const; + + /** + * Check if there is location request on going + */ + TBool IsActiveLocationRequest() const; + + /** + * Location request complete call back function + */ + void LocationRequestComplete(); + + /** + * Location request complete static call back + */ + static TInt LocationRequestCompleteStatic( TAny* aAny ); + + /** + * Callback function for environment change notifier. + */ + static TInt NotifierCallBack( TAny* aPtr ); + + /** + * This function is called whenever environment change notifier + * reports that something has changed. The only change we are + * interested of is the system time change. + */ + void HandleEnvironmentChange(); + + private: + //TPositioner connection + struct TPositionerStatus + { + //Reference to connected positioner + MSuplPsyRequestCompleteListener* iPositioner; + + //Positioner has active location request + TBool iRequested; + }; + + private: + //Positioner array + RArray < TPositionerStatus > iPositionerArray; + + //Position requestor + CSuplPsyRequestor* iRequestor; + + //Environment change notifier + CEnvironmentChangeNotifier* iEnvChangeNotifier; + + // Returns Cell info + CSuplPsyCellIdHandler* iSuplPsyCellIdHandler; + + CSuplPsyInfoStoreManager* iSuplPsyInfoStoreManager; + //Cell Id info + TCellIdInfo iCellIdInfo; + + TTime iMaxAge; + }; + +#endif // SUPLPSYREQUESTMANAGER_H + +// End of File