diff -r e8c1ea2c6496 -r 8758140453c0 lbs/lbstestutils/inc/tlbsutils.h --- /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 + +// LBS includes +#include +#include +#include +#include +#include +#include +#include +#include +#include + +// Forward Declaration + +// Includes for Log Comparison +#include +#include +#include +#include +#include +#include + + + + +// 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 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& aPosInfoArr); + IMPORT_C void GetConfigured_UpdateArrayL(const TDesC& aConfigFileName, const TDesC& aConfigSection, RPointerArray& 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& aClientDetailsArray); + + IMPORT_C void GetExpected_ModuleModes(const TDesC& aConfigFileName, const TDesC& aConfigSection, RPointerArray& 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& aPosInfoArrSideA, RPointerArray& aPosInfoArrSideB); + IMPORT_C TBool Compare_PosInfoArr(RPointerArray& aPosInfoArrSideA, RPointerArray& aPosInfoArrSideB, TComparisonAccuracyType aCmpAccuracy); + + IMPORT_C void ResetAndDestroy_PosInfoArr(RPointerArray& 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__