diff -r a2efdd544abf -r b47902b73a93 networkprotocolmodules/networkprotocolmodule/LbsNetSim/inc/lbsnetsimgatewayhandler.h --- /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 + +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 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