lbs/lbstestutils/inc/tlbsutils.h
branchSymbian2
changeset 1 8758140453c0
child 6 c108117318cb
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/lbs/lbstestutils/inc/tlbsutils.h	Thu Jan 21 12:53:44 2010 +0000
@@ -0,0 +1,404 @@
+// 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 the License "Symbian Foundation License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// @file tlbsutils.h
+// This is the header file which contains the common utility functions
+// 
+//
+
+
+
+/**
+ @file
+ @internalTechnology
+ @test
+*/
+
+#ifndef __T_LBS_UTILS_H__
+#define __T_LBS_UTILS_H__
+
+
+// Epoc includes
+#include <e32cmn.h>
+
+// LBS includes
+#include <lbs.h>
+#include <lbscommon.h>
+#include <lbspositioninfo.h>
+#include <lbs/lbsassistancereferencetime.h>
+#include <lbsclasstypes.h>
+#include <lbs/lbsadmin.h>
+#include <lbssatellite.h>
+#include <lbs/lbsgpsmeasurement.h>
+#include <lbs/lbslocdatasourcegpsbase.h>
+
+// Forward Declaration
+
+// Includes for Log Comparison
+#include <lbs/lbslogevent.h>
+#include <lbs/lbsselflocatelogevent.h>
+#include <lbs/lbsexternallocatelogevent.h>
+#include <lbs/lbstransmitlocationlogevent.h>
+#include <lbs/lbsnetworklocatelogevent.h>
+#include <lbs/lbsassistancedatalogevent.h>
+
+
+
+
+// Property Keys
+enum TLbsTestPropertyKeys
+	{
+	ELbsTestAGpsModuleIn = 1301,
+	ELbsTestAGpsModuleOut = 2301,
+	ELbsTestClockPluginOut = 3301,
+	ELbsTestAGpsModuleModeChanges = 4301,
+	ELbsTestAGpsModuleResetAssistanceDataFlag = 5301
+	};
+
+enum KLbsTestAGpsModuleResetAssistanceDataStates
+	{
+	ELbsTestAGpsResetAssistanceDataNotReceived,
+	ELbsTestAGpsResetAssistanceDataReceived
+	};
+
+
+const TInt KMaxModuleDataBusIniFileName = 100;
+
+// assistance data providers:
+const TInt KSimpleAssistanceDataProviderPluginUidValue = 0x10281D77;
+const TInt KSuplAssistanceDataProviderPluginUidValue = 0x1028225B;
+
+
+/** Update structure to hold both measurement and position (location) information.
+*/
+class TLbsModuleUpdateItem
+	{
+public:
+	IMPORT_C TLbsModuleUpdateItem();
+	
+	IMPORT_C const TPositionSatelliteInfo& Position() const;
+	IMPORT_C const TPositionGpsMeasurementInfo& Measurement() const;
+	IMPORT_C TInt Error() const;
+	IMPORT_C TInt Delay() const;
+	
+	IMPORT_C void SetPosition(const TPositionSatelliteInfo& aReport);
+	IMPORT_C void SetMeasurement(const TPositionGpsMeasurementInfo& aMeasurement);
+	IMPORT_C void SetError(TInt aError);
+	IMPORT_C void SetDelay(TInt aDelay);
+	
+
+protected:	
+	TPositionSatelliteInfo		iPosition;
+	TPositionGpsMeasurementInfo	iMeasurement;
+	TInt						iError;
+	TInt						iDelay;
+	};
+
+
+
+// Passing data to test module.
+class TModuleDataIn
+	{
+public:
+	/** Supported request types. */
+	enum TModuleRequestType
+		{
+		EModuleRequestConfig,
+		EModuleRequestEventKickOff,
+		EModuleRequestTestMode,
+		EModuleRequestTimeOut,
+		EModuleRequestError,
+		EModuleRequestTimeStampOffset,
+		EModuleRequestOptionsChangeReportMode
+		};
+	TModuleRequestType iRequestType;
+
+	
+	/** Config request data. */
+	TBuf<KMaxModuleDataBusIniFileName>	iConfigFileName;
+	TBuf<40>							iConfigSection;	// bug if you make it bigger, more data we add, we get a -9 buf overflow on the property read
+
+	
+	/** Event kick off request data. */
+	enum _TKickOffEventType
+		{
+		EKickOffEventTypeDevice=0x01, 
+		EKickOffEventTypeDataQuality=0x02
+		};	
+	typedef TUint TKickOffEventType;
+	TKickOffEventType iKickOffEventType;
+
+	
+	/** Assistance event data. */
+	enum TAssDataEventType
+		{	
+		EAssDataEventExpectSingle,
+		EAssDataEventExpectMultiple
+		};
+	TAssDataEventType iAssDataEventType;	
+
+
+	/** Module test mode. */
+	enum TTestMode	
+		{
+		EModuleTestModeAssDataOff,
+		EModuleTestModeAssDataOn,
+		EModuleTestModeAssDataOn_TimeStamp,
+		EModuleTestModeAssDataOn_Cancel_Stage1,
+		EModuleTestModeAssDataOn_Cancel_Stage2,
+		EModuleTestModeAssDataOn_Unsolicited,
+		EModuleTestModeAssDataOn_NoNetwork,
+		EModuleTestModeAssDataOn_DataNotAvailable,
+		EModuleTestModeAssDataOn_SomeDataNotAvailable,
+		EModuleTestModeAssDataOn_InvalidDataRequest,
+		EModuleTestModeAssDataOn_InvalidDataGet,
+		EModuleTestModeAssDataOn_EarlyPosUpdates
+		};
+	TTestMode iAssDataTestMode;
+
+	enum TGpsOptionsChangeReportMode
+		{
+		EGpsModuleDoReportOptionsChange,
+		EGpsModuleDoNotReportOptionsChange,
+		};
+	TGpsOptionsChangeReportMode iOptionsChangeReportMode;
+
+	/** Module time out. */
+	TTimeIntervalMicroSeconds iTimeOut;
+	
+	/** Module Error Code */
+	TInt iError;
+
+	/** Used to alter the time stamp of the posinfo. */
+	TTimeIntervalMicroSeconds iTimeStampOffset;
+	};
+
+
+// Retriving data from the test module.
+class TModuleDataOut 
+	{
+public:
+	
+	enum TModuleRequestType
+		{
+		EModuleResponse,
+		EModuleGpsMode,
+		};
+	TModuleRequestType iRequestType;
+
+    enum TModuleResponseType
+		{
+		EModuleResponseOk,
+		EModuleAssDataRequestedOk,
+		EModuleAssDataOk,
+		EModuleAssDataCancelledOk, // may not be possible to verify from within module, hence may remove
+		EModuleStartupOk,
+		EModuleShutdownOk,
+		EModuleErr	/** Set if any of the above failed. */
+		};
+
+	TModuleResponseType iResponse;
+    CLbsAdmin::TGpsMode iGpsMode; /** Used to retrive GPS mode from the module. */
+	};	
+
+
+// Retriving data from the test clock plugin.
+class TClockPluginDataOut
+	{
+public:
+	enum TClockPluginResponseType
+		{
+		EClockPluginResponseOk,
+		EClockPluginErr	/** Set if any of the above failed. */
+		};
+
+	TClockPluginResponseType iResponse;
+	};
+
+
+
+// Assistance Data Simple Provider Default values.
+const TUint KAssistanceData_RefTime_Week = 12;
+const TUint KAssistanceData_RefTime_Tow1MSec = 567;
+
+// Module Info values
+/*
+ * the A-GPS value are from testproduct\agpsmodule\group\xtestmodule.ini
+ * most the AGPS module module info are the same as the LbsLocDataSourcePlugins\sirf\group\sirfdatasource.ini
+ * except "Module name", "Version", "ClassesSupported", "DataSourceId"
+ */
+//Module ID
+#define APGS_MODINFO_MODULE_ID      			271064388
+#define NETWORK_MODINFO_MODULE_ID   			271064387 
+//Module name   
+#define AGPS_MODINFO_MOD_NAME                  	_L("TEST_Loc_AGPS_Module")
+#define NETWORK_MODINFO_MOD_NAME               	_L("NetLocManager")
+//
+#define AGPS_MODINFO_IS_AVAILABLE			    (ETrue)
+#define NETWORK_MODINFO_IS_AVAILABLE			(ETrue)
+//Technology type
+#define AGPS_MODINFO_TECHNOLOGY_TYPE            (TPositionModuleInfo::TTechnologyType(TPositionModuleInfo::ETechnologyTerminal | \
+																					  TPositionModuleInfo::ETechnologyAssisted))
+#define NETWORK_MODINFO_TECHNOLOGY_TYPE         (TPositionModuleInfo::TTechnologyType(TPositionModuleInfo::ETechnologyNetwork))
+//version
+#define AGPS_MODINFO_VERSION                    (TVersion(1,2,3))
+#define NETWORK_MODINFO_VERSION                 (TVersion(0,1,1))
+//device location
+#define AGPS_MODINFO_DEVICE_LOCATION            (TPositionModuleInfo::TDeviceLocation(TPositionModuleInfo::EDeviceInternal))
+#define NETWORK_MODINFO_DEVICE_LOCATION         (TPositionModuleInfo::TDeviceLocation(TPositionModuleInfo::EDeviceExternal))
+//capabilities
+#define AGPS_MODINFO_CAPABILITIES 				(TPositionModuleInfo::TCapabilities(TPositionModuleInfo::ECapabilityHorizontal | \
+																					TPositionModuleInfo::ECapabilityVertical | \
+																					TPositionModuleInfo::ECapabilitySpeed | \
+																					TPositionModuleInfo::ECapabilityDirection | \
+																					TPositionModuleInfo::ECapabilitySatellite))
+#define NETWORK_MODINFO_CAPABILITIES			(TPositionModuleInfo::TCapabilities(TPositionModuleInfo::ECapabilityHorizontal| \
+																					TPositionModuleInfo::ECapabilityVertical | \
+																					TPositionModuleInfo::ECapabilitySpeed | \
+																					TPositionModuleInfo::ECapabilityDirection))
+//classes supported
+#define AGPS_MODINFO_CLASSES_SUPPORTED_POSITION_FAMILY 		(EPositionInfoClass|EPositionGenericInfoClass| \
+															 EPositionCourseInfoClass|EPositionSatelliteInfoClass)
+#define NETWORK_MODINFO_CLASSES_SUPPORTED_POSITION_FAMILY 	(EPositionInfoClass|EPositionGenericInfoClass| \
+															 EPositionCourseInfoClass|EPositionSatelliteInfoClass)
+//time to first fix
+#define AGPS_MODINFO_TIME_TO_FIRST_FIX         (TTimeIntervalMicroSeconds(90000000))
+#define NETWORK_MODINFO_TIME_TO_FIRST_FIX      (TTimeIntervalMicroSeconds(20000000))
+//time to next fix
+#define AGPS_MODINFO_TIME_TO_NEXT_FIX          (TTimeIntervalMicroSeconds(1000000))
+#define NETWORK_MODINFO_TIME_TO_NEXT_FIX       (TTimeIntervalMicroSeconds(20000000))
+//horizontal accuracy
+#define AGPS_MODINFO_HORIZONTAL_ACCURACY       5.4f
+#define NETWORK_MODINFO_HORIZONTAL_ACCURACY    100.0f
+//vertical accuracy
+#define AGPS_MODINFO_VERTICAL_ACCURACY         5.4f
+#define NETWORK_MODINFO_VERTICAL_ACCURACY      100.0f
+//cost indication
+#define AGPS_MODINFO_COST_INDICATOR            (TPositionQuality::ECostPossible)
+#define NETWORK_MODINFO_COST_INDICATOR         (TPositionQuality::ECostCharge)
+//power consumption
+#define AGPS_MODINFO_POWER_CONSUMPTION         (TPositionQuality::EPowerLow)
+#define NETWORK_MODINFO_POWER_CONSUMPTION      (TPositionQuality::EPowerLow)
+
+/**
+ Current LBS system has two positioning module: A-GPS and Network Loc manager
+ This value might be changed if more positioning modules are added in the future
+*/
+#define MAX_POSITIONING_MODULES					2
+
+class TCTClientDetails
+	{
+public:
+	inline TCTClientDetails()
+	: iSessionIdDelay(0), iSessionStepDelay(0), iCancelRequest(EFalse), iSessionIdCancel(0), iSessionStepCancel(0), iNumberOfNPUDs(1), iUpdateOptions(0)
+	{}
+public:
+	TInt iSessionIdDelay;
+	TInt iSessionStepDelay;
+	TBool iCancelRequest;
+	TInt iSessionIdCancel;
+	TInt iSessionStepCancel;	
+	TInt iNumberOfNPUDs;
+	TPositionUpdateOptions iUpdateOptions;
+	};
+
+// Implements a class to contain the utility functions.
+class T_LbsUtils
+	{	
+public:
+	enum TComparisonAccuracyType
+		{
+		ERoughAccuracy, EExactAccuracy
+		};
+
+	IMPORT_C T_LbsUtils();
+	IMPORT_C ~T_LbsUtils();
+
+	IMPORT_C void CreateTestPropertiesL();
+	// 
+	IMPORT_C void GetConfigured_ModuleInfoL(const TDesC& aConfigFileName, const TDesC& aConfigSection, TPositionModuleInfo& aModInfo);
+
+	IMPORT_C void GetConfigured_PosInfosL(const TDesC& aConfigFileName, const TDesC& aConfigSection, RPointerArray<TAny>& aPosInfoArr);
+	IMPORT_C void GetConfigured_UpdateArrayL(const TDesC& aConfigFileName, const TDesC& aConfigSection, RPointerArray<TLbsModuleUpdateItem>& aUpdateArr);
+	IMPORT_C void GetConfigured_ModuleStatusL(const TDesC& aConfigFileName, const TDesC& aConfigSection, TPositionModuleStatus& aModuleStatus);
+	IMPORT_C void GetConfigured_ModuleUpdateOptionsL(const TDesC& aConfigFileName, const TDesC& aConfigSection, TPositionUpdateOptions& aUpdateOpts);
+	IMPORT_C void GetConfigured_ClientDetailsL(const TDesC& aConfigFileName, const TDesC& aConfigSection, 
+									RArray<TCTClientDetails>& aClientDetailsArray);
+
+	IMPORT_C void GetExpected_ModuleModes(const TDesC& aConfigFileName, const TDesC& aConfigSection, RPointerArray<TLbsGpsOptions>& aModuleModes);
+
+	IMPORT_C void NotifyModuleOfConfigChangeL(const TModuleDataIn& aModuleDataIn);
+	IMPORT_C void WaitForModuleToRequestAssistanceDataL();
+
+	IMPORT_C TBool Compare_PosInfo(const TPositionInfoBase& aPosInfoSideA, const TPositionInfoBase& aPosInfoSideB);
+	IMPORT_C TBool Compare_PosInfo(const TPositionInfoBase& aPosInfoSideA, const TPositionInfoBase& aPosInfoSideB, TComparisonAccuracyType aCmpAccuracy);
+	 
+	IMPORT_C TBool Compare_PosInfoArr(RPointerArray<TAny>& aPosInfoArrSideA, RPointerArray<TAny>& aPosInfoArrSideB);
+	IMPORT_C TBool Compare_PosInfoArr(RPointerArray<TAny>& aPosInfoArrSideA, RPointerArray<TAny>& aPosInfoArrSideB, TComparisonAccuracyType aCmpAccuracy);
+
+	IMPORT_C void ResetAndDestroy_PosInfoArr(RPointerArray<TAny>& aPosInfoArr);
+	
+	IMPORT_C TPositionModuleId GetNetworkModuleIdL(RPositionServer& aServer);
+	IMPORT_C TPositionModuleId GetAGpsModuleIdL(RPositionServer& aServer);
+	IMPORT_C TPositionModuleId GetBadModuleId();
+	
+	IMPORT_C TBool Compare_ModuleInfo(TPositionModuleInfo& aModInfoSideA, TPositionModuleInfo& aModInfoSideB);
+	IMPORT_C TBool Compare_PositionQuality(TPositionQuality& aQualitySideA, TPositionQuality& aQualitySideB);
+	IMPORT_C TBool Compare_ModuleStatus(TPositionModuleStatus& aModStatusSideA, TPositionModuleStatus& aModStatusSideB);
+	IMPORT_C TBool Compare_ModuleUpdateOptions(TPositionUpdateOptions& aModUpdateOptsSideA, TPositionUpdateOptions& aModUpdateOptsSideB);
+	IMPORT_C TBool Verify_PositionIsValid(TPositionInfo& aPosInfo);
+
+	// Assistance data functions
+	// IMPORT_C void CreateSimpleAssistanceData(/*TLbsAssistanceDataGroup aDataMask, RDataReaderRootBase& aGpsRefTimeReader*/);
+	IMPORT_C TBool VerifySimpleAssistanceData(RUEPositioningGpsReferenceTimeReader& aGpsRefTimeReader);
+    IMPORT_C void  Create_ModuleInfoL(TPositionModuleId aModuleId, TPositionModuleInfo& aModInfo);
+
+
+	IMPORT_C TBool Compare_LogBase(const CLbsLogEvent& aLogEventSideA, const CLbsLogEvent& aLogEventSideB);
+	IMPORT_C TBool Compare_SelfLocateLog(const CLbsSelfLocateLogEvent& aSelfLocateLogSideA, const CLbsSelfLocateLogEvent& aSelfLocateLogB);
+	IMPORT_C TBool Compare_NetworkLocateLog(const CLbsNetworkLocateLogEvent& aNetworkLocateLogSideA, const CLbsNetworkLocateLogEvent& aNetworkLocateLogB);
+	IMPORT_C TBool Compare_ExternalLocateLog(const CLbsExternalLocateLogEvent& aExternalLocateLogSideA, const CLbsExternalLocateLogEvent& aExternalLocateLogSideB);
+	IMPORT_C TBool Compare_TransmitLocationLog(const CLbsTransmitLocationLogEvent& aX3PLogSideA, const CLbsTransmitLocationLogEvent& aX3PLogSideB);
+	IMPORT_C TBool Compare_AssistanceDataLog(const CLbsAssistanceDataLogEvent& aAssistanceDataLogSideA, const CLbsAssistanceDataLogEvent& aAssistanceDataLogSideB);
+	
+	// Needed to compare destinations within TransmitLocation Logs
+	TBool Compare_Destinations(TDesC16& aDestinationFromRealLog, TDesC16& aDestinationFromExpectedLog);
+	
+
+	IMPORT_C TInt SupportedType(const TUint32& aType, const TInt& aSize);
+	IMPORT_C TInt CopyPositionTypes(TPositionInfoBase& aTo, const TPositionInfoBase& aFrom);
+
+private:
+	TInt GetModIdByTechnology(RPositionServer& aServer, TPositionModuleInfo::TTechnologyType aTechnologyType, TPositionModuleId& aModuleId);
+	// Needed to compare external locate logs.
+	TBool Compare_ExternalRequestPrivacyRequestParams(const TLbsLoggingPrivacyRequestParams& aLogPrivacyRequestParamsSideA, const TLbsLoggingPrivacyRequestParams& aLogPrivacyRequestParamsSideB);
+	TBool Compare_ExternalRequestPrivacyResponseParams(const TLbsLoggingPrivacyResponseParams& aExternalRequestPrivacyResponseSideA, const TLbsLoggingPrivacyResponseParams& aExternalRequestPrivacyResponseSideB);
+	TBool Compare_ExternalRequestInfo(const TLbsExternalRequestInfo& aExternalRequestInfoSideA, const TLbsExternalRequestInfo& aExternalRequestInfoSideB);
+	TBool Compare_ExternalRequestPrivacy(const TLbsNetPosRequestPrivacy& aExternalRequestPrivacySideA, const TLbsNetPosRequestPrivacy& aExternalRequestPrivacySideB);
+	};
+
+
+/** Possible set of Module options. 
+	Held by AGps Hybrid module as bits in a 32 bitmap.
+*/
+enum TLbsHybridModuleOptions
+{
+	EHybridModuleOptions_ClearAll = 0x0000,
+	ELbsHybridModuleOptions_AssistanceDataOn = 0x0001,
+	ELbsHybridModuleOptions_MultiUpdatesOn = 0x0002,
+	ELbsHybridModuleOptions_DisableReqAssistData = 0x0004,
+	ELbsHybridModuleOptions_DynamicAssistanceData = 0x008,	//Assistance Data delivery variant used in SUPL tests
+	ELbsHybridModuleOptions_SetAll = 0x000F
+};
+
+#endif //__T_LBS_UTILS_H__