--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/locationrequestmgmt/locationserver/inc/EPos_CPosModulesStatus.h Tue Feb 02 01:50:39 2010 +0200
@@ -0,0 +1,112 @@
+/*
+* 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 CPOSMODULESSTATUS_H
+#define CPOSMODULESSTATUS_H
+
+// INCLUDES
+#include <lbs.h>
+#include "EPos_MPosStatusObserver.h"
+#include <lbs/epos_mposmodulesobserver.h>
+#include "epos_mposmodulestatusmanager.h"
+
+// FORWARD DECLARATIONS
+class CPosModules;
+
+// CLASS DECLARATION
+
+/**
+* Holds the status of all installed modules.
+* Used to get current module status and to get notification of
+* module status changes.
+*/
+class CPosModulesStatus : public CBase,
+ public MPosStatusObserver,
+ public MPosModuleStatusManager
+ {
+ public: // Data types
+
+ struct TPosSubscriber
+ {
+ TAny* iClient;
+ TInt iClientTimeStamp;
+ TBool iToBeRemoved;
+ TBool iHasRequest;
+ RMessage2 iMsg;
+ TPositionModuleId iModuleId;
+ TPositionModuleStatusEvent iEvent;
+ };
+
+ struct TPosModule
+ {
+ TPositionModuleId iModuleId;
+ TPositionModuleStatus iStatus;
+ TInt iDeviceTimeStamp;
+ TInt iDataQualityTimeStamp;
+ };
+
+ public: // Constructors and destructor
+ static CPosModulesStatus* NewL(CPosModules& aModules);
+ static CPosModulesStatus* NewL(CPosModules& aModules,const TTimeIntervalMicroSeconds32& aTimerInterval);
+ virtual ~CPosModulesStatus();
+
+ public: //From base class
+ virtual void AddListenerL(MPosModuleStatusListener& aListener);
+ virtual void RemoveListener(MPosModuleStatusListener& aListener);
+ virtual TInt GetModuleStatus(const TPositionModuleId& aModuleId,TPositionModuleStatusBase& aStatus ) const;
+
+ public: // New functions
+ void NotifyModuleStatusEventL(const RMessage2& aMessage, TAny* aClient);
+ void CancelNotifyModuleStatusEventL(TAny* aClient);
+ void NotifySessionClosed(TAny* aClient);
+ void HandleSettingsChangeL(TPosModulesEvent aEvent);
+
+ protected: // Functions from base classes
+ void ReportStatus(const TPositionModuleId& aImplementationUid, const TPositionModuleStatus& aStatus);
+
+ private:
+ CPosModulesStatus(CPosModules& aModules, const TTimeIntervalMicroSeconds32& aTimerInterval);
+ void ConstructL();
+ CPosModulesStatus( const CPosModulesStatus& );
+ CPosModulesStatus& operator= ( const CPosModulesStatus& );
+
+
+ void ValidateRequestL(const RMessage2& aMessage, TPositionModuleId& aId, TPositionModuleStatusEvent& aEvent);
+ TBool HasValidEventsQueued(TPosSubscriber& aSubscriber);
+ void NotifySubscribers(TPositionModuleStatusEvent& aOccurredEvent);
+ void NotifyListeners(TPositionModuleStatusEvent& aOccurredEvent);
+ static TInt TimerCallback(TAny* aModulesStatus);
+ TInt DoTimerCallback();
+ void RequestComplete(const RMessage2& aMessage, TInt aCompleteCode);
+ void NotifyEventToSubscriber(TPositionModuleStatusEvent& aOccurredEvent, const CPosModulesStatus::TPosSubscriber& aSubscriber);
+
+ private: // Data
+ CPosModules& iModules;
+ RPointerArray< MPosModuleStatusListener > iListenerArray;
+ RArray<TPosModule> iModuleStatusArray;
+ RArray<TPosSubscriber> iSubscribers;
+ TInt iSequenceNo;
+ CPeriodic* iTimer;
+ TTimeIntervalMicroSeconds32 iTimerInterval;
+
+ };
+
+#endif // CPOSMODULESSTATUS_H
+
+// End of File