networkprotocolmodules/networkprotocolmodule/LbsNetSim/inc/lbsnetsimgatewayhandler.h
changeset 36 b47902b73a93
parent 0 9cfd9a3ee49c
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/networkprotocolmodules/networkprotocolmodule/LbsNetSim/inc/lbsnetsimgatewayhandler.h	Fri Jun 04 10:34:15 2010 +0100
@@ -0,0 +1,185 @@
+// Copyright (c) 2006-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:
+//
+
+/**
+ @file
+ @internalComponent
+ @test
+*/
+
+
+#ifndef LBSNETSIMGATEWAYHANDLER_H
+#define LBSNETSIMGATEWAYHANDLER_H
+#include "lbsnetsim.h"
+#include "lbsnetsimsessionhandler.h"
+#include "lbsnetsimassistancedataproviderobserver.h"
+#include <lbs/lbsassistancedatabuilderset.h>
+
+class CLbsNetSimTestHandler;
+class CLbsNetSimAssistanceDataProvider;
+
+class CLbsNetSimGatewayHandler : 
+	public CTimer,
+	public MLbsNetSimSessionHandler,
+	public MLbsNetSimAssistanceDataProviderObserver
+	{
+	public:
+		// Construction
+		static CLbsNetSimGatewayHandler* NewL(CLbsNetSimAssistanceDataProvider& aAssitanceDataProvider);
+		void SetTestHandler(CLbsNetSimTestHandler* aTestHandler);
+		~CLbsNetSimGatewayHandler();
+		
+		// MLbsNetSimSessionHandler
+		void ServiceL(const RMessage2& aMessage);
+		void Connected();
+		void Disconnected();
+		
+		// MLbsNetSimAssistanceDataProviderObserver
+		void ProcessAssistanceDataL(TInt aError,
+									RLbsAssistanceDataBuilderSet& aAssistanceData,
+								    TPositionInfo& aPosition, 
+									TLbsNetPosRequestQuality& aQuality);
+									
+		// CTimer calls
+		void RunL();
+		
+		// Calls from the test handler
+		void SetResponseTime(TInt32 aTime, TBool aSticky);
+		void SetResponseError(TInt32 aError, TBool aSticky);
+		void SetAssistanceDataMask(TLbsAssistanceDataGroup& aMask);
+		void SetMoreAssistanceDataMask(TLbsAssistanceDataGroup& aMask);
+		void ClearAssistanceDataMasks();
+		void SetStepMode(TBool aStepMode);
+		void StartNetworkPrivacyRequestL(TLbsNetPosRequestPrivacy& aType, TLbsExternalRequestInfo& aRequestInfo);
+		void CancelNetworkPrivacyRequestL();
+		void StartNetworkLocationRequestL();
+		void CancelNetworkLocationRequestL();
+		void SendResetAssistanceData(TLbsAssistanceDataGroup aMask);
+		
+	private:
+		CLbsNetSimGatewayHandler(CLbsNetSimAssistanceDataProvider& aAssistanceDataProvider);
+		void ConstructL();
+		
+		// ServiceL handlers
+		void HandleRegisterLcsMoLrL(const RMessage2& aMessage);
+		void HandleMeasurementReportLocationL(const RMessage2& aMessage);
+		void HandleReleaseLcsMoLrL(const RMessage2& aMessage);
+		void HandleMeasurementControlFailureL(const RMessage2& aMessage);
+		void HandleRequestMoreAssistanceDataL(const RMessage2& aMessage);
+		void HandleReleaseLcsLocationNotifcationL(const RMessage2& aMessage);
+		
+		// Others 
+		TBool CheckDestinationValidity(TPtrC aDestination);
+	private:
+		enum NextMessage
+			{
+			ENone, // If we are in this state then there has been an issue!
+			EContinueRegisterLcsMoLr1,
+			EContinueRegisterLcsMoLr2,
+			EContinueMeasurementReportLocation,
+			EContinueReleaseLcsMoLr,
+			EContinueRequestMoreAssistanceData,
+			EContinueMtLr,
+			EContinueMeasurementControlFailure,
+			};
+		CArrayFixFlat<NextMessage>				iMessages;
+		void AddMessageL(NextMessage aNextMessage);
+		
+		enum MessageState
+			{
+			ENothing,
+			EMoLr,
+			EMtLr,
+			EMtLr_E,
+			EPrivacy,
+			EPrivacy_E,
+			EX3P,
+			};
+		MessageState						iState;
+		
+		enum MessageSubState // Needs to be known to cancel for MtLr
+			{
+			EPreMrl, // MoLr, X3P: MeasurementReportLocation
+			EPostMrl, 
+			};
+		MessageSubState						iSubState;
+	private:
+		// Others
+		void Cancel(MessageState aToStart);
+		void FinishL();
+		void ResetInternals();
+	private:
+		static TLbsAssistanceDataGroup		iDefaultAssistanceDataMask;
+	
+		CLbsNetSimAssistanceDataProvider&	iAssistanceDataProvider;
+		CLbsNetSimTestHandler*				iTestHandler;
+		
+		//
+		TLbsAssistanceDataGroup				iAssistanceDataMask;
+		TLbsAssistanceDataGroup				iMoreAssistanceDataMask;
+		
+		// 
+		TInt32								iWaitTime;
+		TBool								iWaitTimeSticky;
+		TInt32								iError;
+		TBool								iErrorSticky;
+		
+		// Cancelling
+		TBool								iMtLrOverrides;
+		TBool								iRequestCancelled;
+		MessageState						iStartOnComplete;
+		TLbsNetPosRequestPrivacy			iPrivacyType;
+		TLbsExternalRequestInfo				iPrivacyRequest;
+		
+		// Message handling: AssistanceData
+		TInt								iAssistanceDataError;
+		TBool								iGotAssistanceData; 
+		RLbsAssistanceDataBuilderSet		iAssistanceData;
+		RMessage2							iAssistanceDataToFill;
+		
+		// Message handling: RegisterLcsMoLr
+		HBufC*								iRegisterLcsMoLrData;
+		
+
+		// Message handling: ReleaseLcsMoLr
+		TInt								iReleaseLcsMoLrReason;
+		RMessage2							iMessageReleaseLcsMoLr;
+
+		// Message handling: MeasurementControlFailure
+		TInt								iMeasurementControlFailureReason;
+
+		// Message handling: MeasurementReportLocation
+		TInt								iMeasurementReportLocationStatus;
+		TPositionInfo						iMeasurementReportLocationPosition;
+		RMessage2							iMessageMeasurementReportLocation;
+
+		// Message handling: MeasurementControlLocation
+		RLbsAssistanceDataBuilderSet		iMeasurementControlLocationAssistanceData;
+		TPositionInfo						iMeasurementControlLocationPosition;
+		TLbsNetPosRequestQuality			iMeasurementControlLocationQuality;
+		
+		// Message Handlers
+		RMessage2							iMessageMeasurementControlFailure;
+		
+		// Notifications
+		RMessage2							iNotificationMeasurementControlLocation;
+		RMessage2							iNotificationRegisterLcsLocation;
+		RMessage2							iNotificationCancelPrivacyRequest;
+		RMessage2							iNotificationNetworkGone;
+		RMessage2							iNotificationResetAssistanceData;
+	};
+
+
+#endif // LBSNETSIMGATEWAYHANDLER_H