--- /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__