networkprotocolmodules/suplprotocolmodule/SuplProtocol/test/src/suplgatewayobserver.h
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/networkprotocolmodules/suplprotocolmodule/SuplProtocol/test/src/suplgatewayobserver.h Tue Feb 02 01:50:39 2010 +0200
@@ -0,0 +1,331 @@
+// Copyright (c) 2008-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:
+// Protocol Module gateway observer class definition
+//
+//
+
+#ifndef __CSUPLGATEWAYOBSERVER_H__
+#define __CSUPLGATEWAYOBSERVER_H__
+
+#include <e32cmn.h>
+#include <ecom/ecom.h>
+#include <lbs/lbslocdatasourcegpsbase.h>
+#include <lbs/lbsnetcommon.h>
+#include <lbs/lbsnetprotocolbase.h>
+#include <lbs/lbsassistancedatabuilderset.h>
+#include "lbstimer.h"
+
+
+/** Gateway observer class definition.
+
+This class is used to capture calls made from the Protocol Module
+to the Network Gateway. The callback methods are all defined by the
+MLbsNetworkProtocolObserver interface.
+*/
+class CSuplGatewayObserver : public CBase , public MLbsNetworkProtocolObserver2,
+ public MLbsCallbackTimerObserver
+ {
+public:
+
+ /** Callback method result enumeration.
+ This is used to show which observer method was called.
+ */
+ enum TCallBackResult
+ {
+ ENone,
+ EProcessLocationRequest,
+ EProcessAssistanceData,
+ EProcessLocationUpdate,
+ EProcessPrivacyRequest,
+ EProcessSessionComplete,
+ ETimeout,
+ ETimerError
+ };
+
+public:
+
+ /** Static constructor
+ */
+ static CSuplGatewayObserver* NewL();
+
+ /** Destructor
+ */
+ ~CSuplGatewayObserver();
+
+ /** Reset the observer's called status
+ */
+ void ResetWasObserverCalled();
+
+ /** Wait for an observer callback
+ */
+ void WaitForCallBack();
+
+ /** Check if the observer was called
+ */
+ TBool WasObserverCalled() const;
+
+ /** Retrieve callback result
+ */
+ TInt CallBackResult() const;
+
+ /** Retrieve assistance data error
+ */
+ TInt AssistanceDataError() const;
+
+ /** Session ID
+ */
+ const TLbsNetSessionId& SessionIdValue() const;
+
+ /** Retrieve assistance data set mask
+ */
+ TLbsAsistanceDataGroup AssistanceDataSetMask() const;
+
+ /** Retrieve assistance data error mask
+ */
+ TLbsAsistanceDataGroup AssistanceDataErrorMask() const;
+
+ /** Retrieve provided data group mask
+ */
+ TLbsAsistanceDataGroup ProvidedDataSetMask() const;
+
+ /** Session close reason
+ */
+ TInt SessionCloseReason() const;
+
+ /** Is location request emergency related
+ */
+ TBool IsLocEmergency() const;
+
+ /** Location requestor type
+ */
+ const MLbsNetworkProtocolObserver::TLbsNetProtocolService& LocType() const;
+
+ /** Location request quality
+ */
+ const TLbsNetPosRequestQuality& LocQuality() const;
+
+ /** Reference location position
+ */
+ const TPosition& ReferencePos() const;
+
+ /** Has Reference Location been
+ reported?
+ */
+ TBool IsRefLocNotified();
+
+ /** Privacy notification type
+ */
+ const TLbsNetPosRequestPrivacy& PrivacyNotifType() const;
+
+ /** Retrieve privacy requestor info ID
+ */
+ void RequesterId(TDes8& aId) const;
+
+ /** Is privacy request emergency related
+ */
+ TBool IsPrivReqReceived();
+
+ /** Check if more observer activity takes place
+ */
+ TBool IsMoreObserverActivity();
+
+ /** Set the default set of positioning capabilities, as returned by
+ GetCurrentCapabilities()
+ */
+ void SetDefaultCapabilities();
+
+ /** Modify the set of positioning capabilities, as returned by
+ GetCurrentCapabilities()
+ */
+ void SetCurrentCapabilities(const TLbsNetPosCapabilities& aCapabilities);
+
+ // MLbsNetworkProtocolObserver methods
+
+ /** Get LBS capabilities
+ */
+ void GetCurrentCapabilities(TLbsNetPosCapabilities& aCapabilities) const;
+
+ /** Advise LBS of status update
+ */
+ void ProcessStatusUpdate(TLbsNetProtocolServiceMask aActiveServiceMask);
+
+ /** Ask the gateway to process a location request arriving from the network.
+
+ @param aSessionId The Id of the location session within the LBS sub-system.
+ @param aEmergency ETrue if this is an emergency request, EFalse otherwise.
+ @param aType The type of location request. The type is determined by preceding
+ requests and other context information that only the network
+ protocol module knows about. So it is the responsibility
+ of the network protocol module to set the type of each request.
+ @param aQuality The network-requested quality of service (QoS) of the
+ location calculation.
+ @param aMethod Location request means and method to be employed.
+ */
+ void ProcessLocationRequest(const TLbsNetSessionId& aSessionId, TBool aEmergency,
+ TLbsNetProtocolService aType,
+ const TLbsNetPosRequestQuality& aQuality,
+ const TLbsNetPosRequestMethod& aMethod);
+
+ /** Tell the gateway that the network has finished a location session.
+
+ @param aSessionId The Id of the session.
+ @param aReason Reason for the completion. KErrNone if the request is successfully
+ completed, or one of a range of error codes otherwise.
+ */
+ void ProcessSessionComplete(const TLbsNetSessionId& aSessionId, TInt aReason);
+
+ /** Inform the gateway of the arrival of new assistance data.
+
+ @param aDataMask The data group mask relevant for the delivered data.
+ @param aData A container that holds all of the GPS assistance data to be delivered.
+ @param aReason The nature of any error related to this assistance data.
+ */
+ void ProcessAssistanceData(TLbsAsistanceDataGroup aDataMask,
+ const RLbsAssistanceDataBuilderSet& aData, TInt aReason, const TLbsNetSessionIdArray& aSessionIdArray);
+
+ /** Inform the gateway of the arrival of the network-based location.
+
+ @param aSessionId The Id of the location session.
+ @param aLocation The network-based location, including any
+ relevant accuracy data.
+ */
+ void ProcessLocationUpdate(const TLbsNetSessionId& aSessionId,
+ const TPositionInfoBase& aLocation);
+
+ /** Tell the gateway to process a privacy request from the network.
+
+ @param aSessionId The Id of the location session within the LBS sub-system.
+ @param aEmergency ETrue if this is an emergency privacy request, EFalse
+ otherwise.
+ @param aNotification Type of user notification specified by the network.
+ @param aRequestInfo Data about the external requestor of this handsets location.
+ */
+ void ProcessPrivacyRequest(const TLbsNetSessionId& aSessionId, TBool aEmergency,
+ const TLbsNetPosRequestPrivacy& aPrivacy,
+ const TLbsExternalRequestInfo& aRequestInfo);
+
+
+ // MTestTimerObserver methods
+ void OnTimerEventL(TInt aTimerId);
+ TInt OnTimerError(TInt aTimerId, TInt aError);
+
+private:
+
+ /** Constructor
+ */
+ CSuplGatewayObserver();
+
+ /** Second phase Constructor
+ */
+ void ConstructL();
+
+ /** Signal that observer has received a callback
+ @param aResult Enumeration showing which observer method was called.
+ */
+ void SignalObserverCallBack(const TCallBackResult aResult);
+
+private:
+
+ /** Flag to show if observer has received a callback
+ */
+ TBool iWasObserverCalled;
+
+ /** Value relating to the observer method that was called.
+ */
+ TCallBackResult iCallBackResult;
+
+ /** Local (nested) active scheduler used to wait for callbacks
+ */
+ CActiveSchedulerWait* iScheduler;
+
+ /** Assistance data error
+ */
+ TInt iAssistanceDataError;
+
+ /** Assistance data set mask
+ This is the mask reported by the module when
+ the error is KErrNone (available assistance data)
+ */
+ TLbsAsistanceDataGroup iAssistanceDataSetMask;
+
+ /** Provided data set mask
+ This mask is derived from the actual provided data content
+ */
+ TLbsAsistanceDataGroup iProvidedDataSetMask;
+
+ /** Assistance Data Error Mask
+ This is the mask reported by the module to signal
+ that some requested assistance data types couldn't be
+ obtained from the network.
+ */
+ TLbsAsistanceDataGroup iAssistanceDataErrorMask;
+
+ /** Session ID
+ */
+ TLbsNetSessionId iSessionIdValue;
+
+ /** Session close reason
+ */
+ TInt iSessionCloseReason;
+
+ /** Flag to show if location request is emergency related
+ */
+ TBool iLocEmergency;
+
+ /** Location requestor type
+ */
+ TLbsNetProtocolService iLocReqType;
+
+ /** Location requestor quality
+ */
+ TLbsNetPosRequestQuality iLocQuality;
+
+ /** Reference Location position
+ */
+ TPosition iReferencePos;
+
+ /** True when reference position
+ has been notified from SUPL
+ */
+ TBool iRefLocNotified;
+
+ /** Privacy Notification Type
+ */
+ TLbsNetPosRequestPrivacy iPrivacyNotifType;
+
+ /** Location Request Method
+ */
+ TLbsNetPosRequestMethod iMethod;
+
+ /** Privacy Requestor Information
+ */
+ TLbsExternalRequestInfo iRequestInfo;
+
+ /** Flag to show if privacy request has been received
+ */
+ TBool iPrivReqReceived;
+
+ /** Positioning Capabilities
+ */
+ TLbsNetPosCapabilities iCapabilities;
+
+ /** Test timer
+ */
+ CLbsCallbackTimer* iTimer;
+
+ };
+
+
+#endif // __CSUPLGATEWAYOBSERVER_H__
+