diff -r 000000000000 -r 9cfd9a3ee49c datasourcemodules/bluetoothgpspositioningmodule/btgpspsy/inc/RequestHandler/BTGPSRequestHandler.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/datasourcemodules/bluetoothgpspositioningmodule/btgpspsy/inc/RequestHandler/BTGPSRequestHandler.h Tue Feb 02 01:50:39 2010 +0200 @@ -0,0 +1,246 @@ +/* +* Copyright (c) 2005-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: +* +*/ + + + + +#ifndef BTGPSREQUESTHANDLER_H +#define BTGPSREQUESTHANDLER_H + +// INCLUDES + +#include +#include +#include +#include "BTGPSLocationFixListener.h" +#include "BTGPSDeviceListener.h" + +// FORWARD DECLARATIONS + +class CBTGPSConstantsManager; +class CBTGPSConnectManager; +class CBTGPSInitManager; +class CBTGPSRequestManager; +class CBTGPSSettingManager; +class CBTGPSDeviceManager; +class CBTGPSPsyConnectionManager; +class MBTGPSPositionerExt; +class CBTGPSFix; +class CBTGPSNokDeviceHandler; +class CBTGPSModuleStatusHandler; +class CBTGPSEnvChangeHandler; +class CBTGPSPowerManager; +class CBTGPSDeviceListManager; + +// CLASS DECLARATION + +/** +* Singleton CBTGPSRequestHandler controls the operation of the PSY. +* The request handler is the singleton object of PSY and it owns other manager +* objects. +* +* +*/ +class CBTGPSRequestHandler : + public CBase, + private MBTGPSLocationFixListener, + private MBTGPSDeviceListener + { + public: // Constructors and destructor + + /** + * Singleton can be only created through GetInstanceL. + */ + static CBTGPSRequestHandler* GetInstanceL(); + + public: // New functions + + /** + * Return reference of singleton. This funciton will panic if + * singleton has not been constructed. + * @return Reference to request handler singleton objects. + */ + static CBTGPSRequestHandler& Instance(); + + /** + * Get reference to Constants Manager + * @return Reference to contants manager. + */ + static CBTGPSConstantsManager& ConstantsManager(); + + /** + * Starts the location retrieval from GPS device + * @param aPSY Reference to the CBTGPSPositioner + */ + void AcquireLocation(MBTGPSPositionerExt* aPSY); + + /** + * Cancels the location retrieval + * @param aPSY Reference to the CBTGPSPositioner + */ + void CancelAcquireLocation(MBTGPSPositionerExt* aPSY); + + /** + * Registeres the PSY instance to the request handler + * @param aPSY Reference to the CBTGPSPositioner + */ + void RegisterPSYL(MBTGPSPositionerExt* aPSY); + + /** + * Unregisteres the PSY instance to the request handler + * @param aPSY Reference to the CBTGPSPositioner + */ + void UnregisterPSY(MBTGPSPositionerExt* aPSY); + + /** + * Starts the tracking session + * @param aPSY Reference to the CBTGPSPositioner starting the session + * @param aInterval The location retrieval interval. + */ + void TrackingSessionStartL(MBTGPSPositionerExt* aPSY, + const TTimeIntervalMicroSeconds& aInterval); + + /** + * Stops the tracking session + * @param aPSY Reference to the CBTGPSPositioner stopping the session + */ + void TrackingSessionStop(MBTGPSPositionerExt* aPSY); + + /** + * Returns the fix that fulfills the requirements aAcceptPartial + * and aStatus. + * @param aFix A reference to the pointer to fix + * @param aMaxAge The criteria for maximum age for the fix + * @param aAcceptPartial The criteria for partial update + * @return KErrNone if the fix fulfills the requirements, + * otherwise KErrNotFound. + */ + TInt LastLocation( + const CBTGPSFix*& aFix, + const TTime& aMaxAge, + const TBool aAcceptPartial); + + private: // New functions + /** + * Acquire location(leave function) + */ + void AcquireLocationL(MBTGPSPositionerExt* aPSY); + + /** + * Complete request + */ + void CompleteRequest( + MBTGPSPositionerExt& aPSY, + TInt aErr); + + /** + * Completes all pending requests. + * @param aStatus The status to complete with. + */ + void CompleteAllRequests(TInt aErr); + + /** + * Reports the device status to the MLFW + * @param aStatus The device status + */ + void DeviceStatus(TInt aStatus); + + /** + * Returns the device status + * @return The device status + */ + TInt GetDeviceStatus(); + + /** + * From MBTGPSLocationFixListener + */ + void HandleLocationFixUpdate(const CBTGPSFix& aFix); + + /** + * From MBTGPSDeviceListener + */ + virtual void BTDeviceStatusChanged( + TInt aConnectStatus, + TInt aDeviceType, + TInt aErr=KErrNone); + + private: // Construction and destruction + + /** + * Two-phased constructor. + */ + static CBTGPSRequestHandler* NewL(); + + /** + * C++ default constructor. + */ + CBTGPSRequestHandler(); + + /** + * By default Symbian 2nd phase constructor is private. + */ + void ConstructL(); + + /** + * Destructor. + */ + virtual ~CBTGPSRequestHandler(); + + + private: // Data + + //Constants manager + CBTGPSConstantsManager* iConstantsManager; + + //Setting manager + CBTGPSSettingManager* iSettingManager; + + //BT Device Manager + CBTGPSDeviceManager* iDeviceManager; + + //BT GPS connection manager + CBTGPSConnectManager* iConnectManager; + + //BT GPS init manager + CBTGPSInitManager* iInitManager; + + //PSY connection manager + CBTGPSPsyConnectionManager* iPsyConnectionManager; + + //Location Request Manager + CBTGPSRequestManager* iRequestManager; + + //Nok device handler + CBTGPSNokDeviceHandler* iNokDeviceHandler; + + //Module status handler + CBTGPSModuleStatusHandler* iModuleStatusHandler; + + //Power manager + CBTGPSPowerManager* iPowerManager; + + //Enviornment change handler + CBTGPSEnvChangeHandler* iEnvChangeHandler; + + //Device List Manager + CBTGPSDeviceListManager* iDeviceListManager; + + }; + +#endif // BTGPSREQUESTHANDLER_H + +// End of File