--- a/common/tools/ats/smoketest/Group/bld.inf Tue Nov 10 11:33:04 2009 +0000
+++ b/common/tools/ats/smoketest/Group/bld.inf Tue Nov 10 13:50:58 2009 +0000
@@ -26,3 +26,4 @@
#include "../profiles/group/Bld.inf"
#include "../notepad/group/bld.inf"
#include "../appinstall/group/Bld.inf"
+#include "../lbs/group/bld.inf"
--- a/common/tools/ats/smoketest/Group/smoketest.pl Tue Nov 10 11:33:04 2009 +0000
+++ b/common/tools/ats/smoketest/Group/smoketest.pl Tue Nov 10 13:50:58 2009 +0000
@@ -30,6 +30,8 @@
copy($epoc . "data/z/smoketest/smoketest_timew.script", "temp/smoketest/general/smoketest_timew.script");
copy($epoc . "data/z/smoketest/smoketest_email.ini", "temp/smoketest/general/smoketest_email.ini");
copy($epoc . "data/z/smoketest/smoketest_email.script", "temp/smoketest/general/smoketest_email.script");
+copy($epoc . "data/z/smoketest/smoketest_lbs.ini", "temp/smoketest/general/smoketest_lbs.ini");
+copy($epoc . "data/z/smoketest/smoketest_lbs.script", "temp/smoketest/general/smoketest_lbs.script");
copy($epoc . "data/z/smoketest/sms/message1.txt", "temp/smoketest/sms/general/message1.txt");
copy($epoc . "data/z/smoketest/MachineName.txt", "temp/smoketest/general/MachineName.txt");
copy($epoc . "data/z/smoketest/emailmessage/20KBody.txt", "temp/smoketest/emailmessage/general/20KBody.txt");
@@ -46,6 +48,12 @@
copy($epoc . "release/winscw/udeb/t_msgutilityserver.dll", "temp/smoketest/winscw_udeb/t_msgutilityserver.dll");
copy($epoc . "release/winscw/udeb/t_msgpopserver.exe", "temp/smoketest/winscw_udeb/t_msgpopserver.exe");
copy($epoc . "release/winscw/udeb/t_msgsmtpserver.exe", "temp/smoketest/winscw_udeb/t_msgsmtpserver.exe");
+copy($epoc . "release/winscw/udeb/lbstestutils.dll", "temp/smoketest/winscw_udeb/lbstestutils.dll");
+copy($epoc . "release/winscw/udeb/lbstestclient.dll", "temp/smoketest/winscw_udeb/lbstestclient.dll");
+copy($epoc . "release/winscw/udeb/lbstestchannel.dll", "temp/smoketest/winscw_udeb/lbstestchannel.dll");
+copy($epoc . "release/winscw/udeb/lbstestserver.exe", "temp/smoketest/winscw_udeb/lbstestserver.exe");
+copy($epoc . "release/winscw/udeb/ctlbsexeclient.exe", "temp/smoketest/winscw_udeb/ctlbsexeclient.exe");
+copy($epoc . "release/winscw/udeb/lbsclienttestserver.exe", "temp/smoketest/winscw_udeb/lbsclienttestserver.exe");
copy($epoc . "release/winscw/udeb/ProfileSmokeTestModule.dll", "temp/smoketest/winscw_udeb/ProfileSmokeTestModule.dll");
copy($epoc . "winscw/c/smoketest/ProfileSmokeTestModule.cfg", "temp/smoketest/general/ProfileSmokeTestModule.cfg");
--- a/common/tools/ats/smoketest/Group/smoketest.xml Tue Nov 10 11:33:04 2009 +0000
+++ b/common/tools/ats/smoketest/Group/smoketest.xml Tue Nov 10 13:50:58 2009 +0000
@@ -176,6 +176,60 @@
<param component-path="smoketest" />
</params>
</step>
+ <step id="" name="Test Step 1 (install)" harness="GENERIC" enabled="true" passrate="100" significant="false">
+ <command>install</command>
+ <params>
+ <param type="binary"/>
+ <param src="lbstestutils.dll"/>
+ <param dst="c:\sys\bin\lbstestutils.dll"/>
+ <param component-path="smoketest" />
+ </params>
+ </step>
+ <step id="" name="Test Step 1 (install)" harness="GENERIC" enabled="true" passrate="100" significant="false">
+ <command>install</command>
+ <params>
+ <param type="binary"/>
+ <param src="lbstestclient.dll"/>
+ <param dst="c:\sys\bin\lbstestclient.dll"/>
+ <param component-path="smoketest" />
+ </params>
+ </step>
+ <step id="" name="Test Step 1 (install)" harness="GENERIC" enabled="true" passrate="100" significant="false">
+ <command>install</command>
+ <params>
+ <param type="binary"/>
+ <param src="lbstestchannel.dll"/>
+ <param dst="c:\sys\bin\lbstestchannel.dll"/>
+ <param component-path="smoketest" />
+ </params>
+ </step>
+ <step id="" name="Test Step 1 (install)" harness="GENERIC" enabled="true" passrate="100" significant="false">
+ <command>install</command>
+ <params>
+ <param type="binary"/>
+ <param src="lbstestserver.exe"/>
+ <param dst="c:\sys\bin\lbstestserver.exe"/>
+ <param component-path="smoketest" />
+ </params>
+ </step>
+ <step id="" name="Test Step 1 (install)" harness="GENERIC" enabled="true" passrate="100" significant="false">
+ <command>install</command>
+ <params>
+ <param type="binary"/>
+ <param src="ctlbsexeclient.exe"/>
+ <param dst="c:\sys\bin\ctlbsexeclient.exe"/>
+ <param component-path="smoketest" />
+ </params>
+ </step>
+ <step id="" name="Test Step 1 (install)" harness="GENERIC" enabled="true" passrate="100" significant="false">
+ <command>install</command>
+ <params>
+ <param type="binary"/>
+ <param src="lbsclienttestserver.exe"/>
+ <param dst="c:\sys\bin\lbsclienttestserver.exe"/>
+ <param component-path="smoketest" />
+ </params>
+ </step>
<step id="" name="Test Step 2 (execute)" harness="GENERIC" enabled="true" passrate="100" significant="true">
<command>execute</command>
<params>
@@ -242,6 +296,17 @@
<param leave-old-result="true"/>
</params>
</step>
+ <step id="" name="Test Step 2 (execute)" harness="GENERIC" enabled="true" passrate="100" significant="true">
+ <command>execute</command>
+ <params>
+ <param file="testexecute.exe"/>
+ <param parameters="c:\smoketest\smoketest_lbs.script"/>
+ <param result-file="c:\logs\testexecute\smoketest_lbs.htm"/>
+ <param timeout="600"/>
+ <param parser="TEFTestResultParser"/>
+ <param leave-old-result="true"/>
+ </params>
+ </step>
</case>
</set>
<set id="" name="ATSINTERFACE smoke tests" harness="ATSINTERFACE" enabled="true" passrate="100">
@@ -363,6 +428,8 @@
<file>smoketest/general/smoketest_timew.script</file>
<file>smoketest/general/smoketest_email.ini</file>
<file>smoketest/general/smoketest_email.script</file>
+ <file>smoketest/general/smoketest_lbs.ini</file>
+ <file>smoketest/general/smoketest_lbs.script</file>
<file>smoketest/sms/general/message1.txt</file>
<file>smoketest/general/MachineName.txt</file>
<file>smoketest/emailmessage/general/20KBody.txt</file>
@@ -379,6 +446,12 @@
<file>smoketest/winscw_udeb/t_msgutilityserver.dll</file>
<file>smoketest/winscw_udeb/t_msgpopserver.exe</file>
<file>smoketest/winscw_udeb/t_msgsmtpserver.exe</file>
+ <file>smoketest/winscw_udeb/lbstestutils.dll</file>
+ <file>smoketest/winscw_udeb/lbstestclient.dll</file>
+ <file>smoketest/winscw_udeb/lbstestchannel.dll</file>
+ <file>smoketest/winscw_udeb/lbstestserver.exe</file>
+ <file>smoketest/winscw_udeb/ctlbsexeclient.exe</file>
+ <file>smoketest/winscw_udeb/lbsclienttestserver.exe</file>
<file>smoketest/winscw_udeb/ProfileSmokeTestModule.dll</file>
<file>smoketest/general/ProfileSmokeTestModule.cfg</file>
<file>smoketest/winscw_udeb/TestNpdApi.dll</file>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/common/group/ctlbscommon.mmp Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,81 @@
+// Copyright (c) 2007-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 ctlbscommon.mmp
+//
+//
+
+SYSTEMINCLUDE /epoc32/include
+SYSTEMINCLUDE /epoc32/include/test
+SYSTEMINCLUDE /epoc32/include/lbs
+SYSTEMINCLUDE /epoc32/include/lbs/test
+
+USERINCLUDE ../inc
+//USERINCLUDE ../../../../locationmgmt/locationcore/LbsLogging/inc
+// Common framework code.
+SOURCEPATH ../src
+SOURCE ctlbsserver.cpp
+SOURCE ctlbsshareddata.cpp
+SOURCE ctlbsstep.cpp
+SOURCE ctlbsnetsimstep.cpp
+
+// Common test step code.
+SOURCE ctlbsstepinstallscheduler.cpp
+SOURCE ctlbsstepcreateverifymoduledata.cpp
+SOURCE ctlbsstepcreateverifyposinfos.cpp
+SOURCE ctlbsstepverifymodinfo.cpp
+SOURCE ctlbsstepverifyposinfos.cpp
+SOURCE ctlbsstepverifyroughposinfos.cpp
+SOURCE ctlbsstepverifyloginfo.cpp
+SOURCE ctlbsstepverifymodstatus.cpp
+SOURCE ctlbsstepstartlbs.cpp
+SOURCE ctlbsstepstoplbs.cpp
+SOURCE ctlbsstepsetautonomousmode.cpp
+SOURCE ctlbsstepresetdefaultadmin.cpp
+SOURCE ctlbsdoposupdate.cpp
+SOURCE ctlbsstepcreateverifymodinfo.cpp
+SOURCE ctlbsstepsetprivhandler.cpp
+SOURCE ctlbsstepsetupprotocolstub.cpp
+SOURCE ctlbsstepsetuproamselflocate.cpp
+SOURCE ctlbsstepclearlog.cpp
+SOURCE ctlbsstepconfighybridmodule.cpp
+SOURCE ctlbsactiveyield.cpp
+SOURCE ctlbsstepsetupstandaloneprivacymode.cpp
+SOURCE ctlbsstepsetupstandaloneprivacyandsimplectlr.cpp
+SOURCE ctlbsstepsetupstandaloneprivacywithnoctlr.cpp
+SOURCE ctlbsportedstepbase.cpp
+SOURCE ctlbsrequester.cpp
+SOURCE ctlbsposclient.cpp
+SOURCE ctlbsposclientholder.cpp
+SOURCE ctlbsclientrequestor.cpp
+SOURCE ctlbsclientlog.cpp
+SOURCE ctlbsstepsetbehaviourmodeoriginal.cpp
+SOURCE ctlbsstepsetptamode.cpp
+SOURCE ctlbsstepsetatamode.cpp
+SOURCE ctlbsstepsetptbmode.cpp
+
+// EPOC + Test Execute libraries.
+LIBRARY euser.lib
+LIBRARY testexecuteutils.lib
+LIBRARY testexecutelogclient.lib
+
+// For logging
+LIBRARY logcli.lib
+LIBRARY logwrap.lib
+LIBRARY lbsloggerapi.lib
+LIBRARY efsrv.lib
+LIBRARY centralrepository.lib
+LIBRARY bafl.lib // BaflUtils
+
+// Lbs Libraries
+LIBRARY eposmodset.lib
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/common/inc/LbsAssistanceDataLogEvent.h Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,64 @@
+/**
+* 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
+ @publishedPartner
+ @released
+*/
+
+#ifndef LBS_ASSISTANCE_DATA_LOG_EVENT_H
+#define LBS_ASSISTANCE_DATA_LOG_EVENT_H
+
+#include <lbs/lbslogevent.h>
+
+/** log event object for assistance data request */
+
+class CLbsAssistanceDataLogEvent : public CLbsLogEvent
+ {
+public:
+ IMPORT_C static CLbsAssistanceDataLogEvent* NewL(const TUint32 aRequestType, const TUint32 aReceiveType);
+ ~CLbsAssistanceDataLogEvent();
+ // for assistance data
+ IMPORT_C void SetRequestAssistanceDataType(const TUint32 aMask);
+ IMPORT_C TUint32 RequestAssistanceDataType() const;
+ IMPORT_C void SetReceiveAssistanceDataType(const TUint32 aMask);
+ IMPORT_C TUint32 ReceiveAssistanceDataType() const;
+
+protected:
+ void DoExternalizeL(RWriteStream& aWriteStream) const;
+ void DoInternalizeL(RReadStream& aReadStream);
+ void DoUpdateL(const CLbsLogEvent& aSourceLogEvent);
+ void DoCopyL(CLbsLogEvent*& aTargetLogEvent) const;
+ TInt DataSize() const;
+private:
+ CLbsAssistanceDataLogEvent();
+ void ConstructL(const TUint32 aRequestType, const TUint32 aReceiveType);
+private:
+ /** requested assistance data type from application */
+ TUint32 iRequestAssistanceDataType;
+ /** received assistance data type from network */
+ TUint32 iReceiveAssistanceDataType;
+
+ }; // class CLbsAssistanceDataLogEvent
+
+
+#endif // LBS_ASSISTANCE_LOG_EVENT_H
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/common/inc/LbsExternalLocateLogEvent.h Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,103 @@
+/**
+* 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
+ @publishedPartner
+ @released
+*/
+
+#ifndef LBS_EXTERNAL_LOCATE_LOG_EVENT_H
+#define LBS_EXTERNAL_LOCATE_LOG_EVENT_H
+
+#include <lbs/lbslogevent.h>
+#include <lbs/lbsnetprotocolbase.h>
+
+#include <lbs/lbsloccommon.h> // For TLbsExternalRequestInfo
+#include "lbsnetcommon.h" // For TLbsNetSessionId
+
+/**
+the privacy request parameter structure
+*/
+class TLbsLoggingPrivacyRequestParams
+ {
+public:
+ TLbsNetSessionId iSessionId;
+ TLbsExternalRequestInfo iRequestInfo;
+ TLbsNetPosRequestPrivacy iRequestPrivacy;
+ };
+
+/**
+the privacy response parameter structure
+*/
+class TLbsLoggingPrivacyResponseParams
+ {
+public:
+ TLbsNetSessionId iSessionId;
+ /** verification result to the privacy request */
+ CLbsNetworkProtocolBase::TLbsPrivacyResponse iResult;
+ } ;
+
+/** log event object for external locate request */
+class CLbsExternalLocateLogEvent : public CLbsLogEvent
+ {
+public:
+ IMPORT_C static CLbsExternalLocateLogEvent* NewL(TUid aRequestOriginator,TPositionInfoBase* aRefPosInfo, TPositionInfoBase* aPosInfo);
+ IMPORT_C void SetPrivacyRequestParams(const TLbsLoggingPrivacyRequestParams& aParams);
+ IMPORT_C void SetPrivacyResponseParams(const TLbsLoggingPrivacyResponseParams& aParams);
+ IMPORT_C void SetReferenceLocation(TPositionInfoBase* aPosInfo);
+ ~CLbsExternalLocateLogEvent();
+
+ // for external locate
+ IMPORT_C TPositionInfoBase* ReferenceLocation() const;
+ IMPORT_C void SetRequestOriginator(TUid aRequestor);
+ IMPORT_C TUid RequestOriginator() const;
+ IMPORT_C TLbsLoggingPrivacyRequestParams PrivacyRequestParams() const;
+ IMPORT_C TLbsLoggingPrivacyResponseParams PrivacyResponseParams() const;
+
+protected:
+ void DoExternalizeL(RWriteStream& aWriteStream) const;
+ void DoInternalizeL(RReadStream& aReadStream);
+ void DoUpdateL(const CLbsLogEvent& aSourceLogEvent);
+ void DoCopyL(CLbsLogEvent*& aTargetLogEvent) const;
+ TInt DataSize() const;
+private:
+ CLbsExternalLocateLogEvent();
+ void ConstructL(TUid aRequestOriginator, TPositionInfoBase* aRefPosInfo, TPositionInfoBase* aPosInfo);
+ void CopyPrivacyRequestParams(TLbsLoggingPrivacyRequestParams& aTargetPrivacyInfo,
+ const TLbsLoggingPrivacyRequestParams& aSourcePrivacyInfo);
+ void CopyPrivacyResponseParams(TLbsLoggingPrivacyResponseParams& aTargetPrivacyInfo,
+ const TLbsLoggingPrivacyResponseParams& aSourcePrivacyInfo);
+private:
+ /** Descriptor of the request originator */
+ TUid iRequestOriginator;
+ /** Privacy request/response info */
+ TLbsLoggingPrivacyRequestParams iPrivacyReqInfo;
+ /** Indicate whether the MT-LR access is granted or not */
+ TLbsLoggingPrivacyResponseParams iPrivacyResInfo;
+ /** The calculation method indicates MS-Based or Autonomous GPS is withint TPositionInfoBase */
+ /** The positioning mode used to calculate this location fix. */
+ // TPositionModuleInfo::TTechnologyType iPositionMode;
+ /** The returned reference location information if the request is completed successfully */
+ TPositionInfo* iRefPosInfo;
+ }; // class CLbsExternalLocateLogEvent
+
+#endif // LBS_EXTERNAL_LOCATE_LOG_EVENT_H
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/common/inc/LbsLogEvent.h Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,127 @@
+/**
+* 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
+ @publishedPartner
+ @released
+*/
+
+#ifndef LBS_LOG_EVENT_H
+#define LBS_LOG_EVENT_H
+
+#include <e32base.h>
+#include <e32err.h>
+#include <logwrap.h>
+#include <logcli.h>
+#include <lbs/lbsloggerdefs.h>
+
+#include <lbspositioninfo.h>
+#include <lbssatellite.h>
+/**
+ class for the privacy request information
+*/
+class TPrivacyRequestParams;
+
+/**
+ class for the privacy response information
+*/
+class TPrivacyResponseParams;
+
+enum TLbsRequestOutcome
+/**
+ enum for the request outcomes
+*/
+ {
+ ELbsRequestOutcomeInconclusive =0,
+ ELbsRequestOutcomeSuccess,
+ ELbsRequestOutcomeFail,
+ ELbsRequestOutcomeCancel,
+ };
+
+class CLbsLogEvent : public CBase
+/**
+ Base class for the classes representing LBS events to be logged. It provides the common
+ functionality (internalising, externalising, updating this class from another one and creating
+ a copy of this class).
+
+ @prototype
+*/
+ {
+public:
+ IMPORT_C static CLbsLogEvent* NewL(const CLogEvent& aLogEvent);
+ IMPORT_C CLogEvent* ExternalizeL() const;
+ IMPORT_C void SetPositionInfo(TPositionInfoBase* aPosInfo);
+
+ virtual ~CLbsLogEvent();
+ void UpdateL(const CLbsLogEvent& aLogEvent);
+ void UpdateRootEvent(CLogEvent* aTargetEvent);
+ CLbsLogEvent* CopyL() const;
+
+ // Inline functions
+ IMPORT_C void SetDirection(TBool aDirection);
+ IMPORT_C TBool Direction() const;
+ IMPORT_C TUid EventType() const;
+ IMPORT_C void SetEventType(TUid aId);
+ IMPORT_C void SetRequestOutcome(TLbsRequestOutcome aRequestOutcome);
+ IMPORT_C TLbsRequestOutcome RequestOutcome() const;
+ IMPORT_C TBool IsCostInformationAvailable() const;
+ IMPORT_C void SetCostInformation(TUint aCostInformation);
+ IMPORT_C TUint CostInformation() const;
+ IMPORT_C TPositionInfoBase* PositionInfo() const;
+
+protected:
+ CLbsLogEvent();
+ void InternalizeL(const CLogEvent& aLogEvent);
+ TPositionInfo* CopyPosInfoToEvent(const TPositionInfoBase* aSrcosInfo);
+ void WritePosInfo(RWriteStream& aWriteStream, const TPositionInfo* aPosInfo) const;
+ void ReadPosInfo(RReadStream& aReadStream, TPositionInfo*& aPosInfo);
+ // for BC consideration, possible handling TAny* data member
+ // called by derived 3rd party classes
+ void BaseConstructL();
+ virtual void DoExternalizeL(RWriteStream& aReadStream) const = 0;
+ virtual void DoInternalizeL(RReadStream& aReadStream) = 0;
+ virtual void DoUpdateL(const CLbsLogEvent& aSourceLogEvent) = 0;
+ virtual void DoCopyL(CLbsLogEvent*& aTargetLogEvent) const = 0;
+ virtual TInt DataSize() const = 0;
+protected:
+ /** The size of the data from a TPositionInfo that is written to disk */
+ const TInt iPosInfoWriteSize;
+ /** The Location Request Event Type */
+ TUid iEventType;
+ /** The returned location information if the request is completed successfully */
+ TPositionInfo* iPosInfo;
+ /** Data for BC consideration, and inherited by derived CLbsLog classes */
+ TAny* iReservedData;
+
+private:
+ /** MO-LR (True) to R_LOG_DIR_OUT and MT-LR to R_LOG_DIR_IN */
+ TBool iDirection;
+ /** The outcome of the request */
+ TLbsRequestOutcome iRequestOutcome;
+ /** Flag which specifies if the cost information is available or not */
+ TBool iCostInformationAvailable;
+ /** The cost information */
+ TUint iCostInformation;
+ }; // class CLbsLogEvent
+
+
+#endif // LBS_LOG_EVENT_H
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/common/inc/LbsLogWriterEngine.h Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,122 @@
+/**
+* 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
+ @internalTechnology
+ @released
+*/
+
+#ifndef LBS_LOG_WRITER_ENGINE_H
+#define LBS_LOG_WRITER_ENGINE_H
+
+#include <e32base.h>
+#include <lbslogevent.h>
+
+enum TLbsLogEventType
+/**
+ enum for type of LbsLogging event handled by Lbs Logging Engine
+*/
+ {
+ ELbsLogNoEvent = 0,
+ ELbsLogAddEvent,
+ ELbsLogUpdateEvent
+ };
+
+
+typedef TUint32 TLbsLogWriterEventTypeGroup;
+
+enum TLbsLogWriterEventTypes
+ {
+ ELbsNoEventType = 0x00000000,
+ ELbsSelfLocateEventType = 0x00000001,
+ ELbsExternalLocateEventType = 0x00000002,
+ ELbsTransmitLocationEventType = 0x00000004,
+ ELbsNetworkLocateEventType = 0x00000008,
+ ELbsAssistanceDataEventType = 0x00000010
+ };
+
+class CLbsLogWriterEngine : public CActive
+/**
+ Active class which does the logging of LBS events. When it receives a new event,
+ if it isn't processing anything it starts logging that event, otherwise it elaves it
+ on a waiting queue.
+
+*/
+ {
+public:
+ static CLbsLogWriterEngine* NewL(TUint aMaxBufferSize);
+ ~CLbsLogWriterEngine();
+
+ TInt AddEventL(CLbsLogEvent& aLogEvent);
+ TInt UpdateEventL(CLbsLogEvent& aLogEvent);
+ // Start to log the event request asyn
+ TInt StartAddingEventType(CLogEventType& aType);
+
+private:
+ CLbsLogWriterEngine(TUint aMaxBufferSize);
+ void ConstructL();
+
+ // Start to log the event request asyn
+ void StartLoggingEventL(CLbsLogEvent& aLogEvent);
+ void InitialiseLogEventTypeL(CLbsLogEvent& aLogEvent);
+ void AddLogEventToQueueL(CLbsLogEvent& aLogEvent);
+
+private: // from CActive
+ void RunL();
+ void DoCancel();
+ TInt RunError(TInt aError);
+
+private:
+ /** The maximum numer of events that can be queued */
+ TUint iMaxBufferSize;
+ /** Flag indicating if there is an ID available of the last logged event */
+ TBool iLastLogIdAvailable;
+ /** The ID of the last logged event */
+ TLogId iLastLogId;
+ /** The array with the queued events */
+ RPointerArray<CLbsLogEvent> iLogEvents;
+ /** The array with the queued event types */
+ RArray<TLbsLogEventType> iLogEventTypes;
+ /** Current processing event type */
+ TLbsLogEventType iLastLogEventType;
+ /** Bitmask listing which event types have already been added */
+ TLbsLogWriterEventTypeGroup iInitLogEventTypes;
+ /** The event type currently being logged */
+ CLogEventType* iEventTypeBeingLogged;
+ /** Flag indicating if an event type is currently being added */
+ TBool iLogEventTypeInit;
+ /** The event that is being logged now */
+ CLogEvent* iEventBeingLogged;
+
+ /***/
+ TBool iLoggingType;
+ /** Handle to the db file file sesstion */
+ RFs iFs;
+ /** CLogClient handler */
+ CLogClient* iClient;
+
+
+
+__DECLARE_TEST; // Declaration for the invariant
+ }; // class CLbsLogWriterEngine
+
+#endif // LBS_LOG_WRITER_ENGINE_H
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/common/inc/LbsLogger.h Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,75 @@
+/**
+* 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
+*/
+
+#ifndef LBS_LOGGER_H
+#define LBS_LOGGER_H
+
+#include <lbslogevent.h>
+#include <e32base.h>
+
+class CLbsLogWriterEngine;
+
+class RLbsLogger
+/**
+ Class the provides the APIs for adding and updating LBS events into the LogEng.
+ In order to add (or update) any event, a handle must have been opened for this class
+ (so OpenL() must have been called, without calling Close() meanwhile on the class).
+
+ Internally, the engine, queues the add and update requests until they can be processed. The
+ queue has a maximum size, so if too many items will get on the queue the AddEventL() method
+ can return an error.
+
+ When the client finishes sending all the add and update requests, Close() should be
+ called on the class. This will ensure that the internal engine logs all the events it
+ queued into the LogEng. When calling Close() it will wait for LogEng to finish
+ logging all the events.
+
+ @internalTechnology
+ @released
+*/
+ {
+public:
+ IMPORT_C RLbsLogger();
+ IMPORT_C ~RLbsLogger();
+
+ IMPORT_C TInt Open(TUint aMaxBufferSize);
+ IMPORT_C TInt AddEvent(CLbsLogEvent& aLogEvent);
+ IMPORT_C TInt UpdateEvent(CLbsLogEvent& aLogEvent);
+ IMPORT_C TInt Close();
+ // for BC consideration
+ virtual void ExtensionInterfaceL(TUid aInterface, void*& aObject);
+
+private:
+ void CheckLoggingAdminSettings();
+
+private:
+ /** Pointer to the active object which does the logging */
+ CLbsLogWriterEngine* iLogWriterEngine;
+
+ /** Flag to indicate if logging is currently On or Off, determined from the admin db setting. */
+ TBool iLoggingOn;
+ }; // class RLbsLogger
+
+#endif // LBS_LOGGER_H
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/common/inc/LbsLoggerDefs.h Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,40 @@
+/**
+* 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
+ @publishedPartner
+ @released
+*/
+
+#ifndef LBS_LOGGER_DEFS_H
+#define LBS_LOGGER_DEFS_H
+
+_LIT(KLbsLoggerPanic, "LBS Logger:");
+_LIT(KLbsLogSelfLocateDes, "Location Requested from On Board Application");
+_LIT(KLbsLogExternalLocateDes, "Location Requested by Remote Party");
+_LIT(KLbsLogX3PLocateDes, "Location Sent to Remote Party");
+_LIT(KLbsLogNetworkLocateDes, "Location Determined by Network");
+_LIT(KLbsLogAssistanceDataDes, "Location Data Obtained from Network");
+_LIT(KLbsLogMOLR, "R_LOG_DIR_OUT_MOLR");
+_LIT(KLbsLogMTLR, "R_LOG_DIR_IN_MTLR");
+
+#endif // LBS_LOGGER_DEFS_H
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/common/inc/LbsNetworkLocateLogEvent.h Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,61 @@
+/**
+* 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
+ @publishedPartner
+ @released
+*/
+
+#ifndef LBS_NETWORK_LOCATE_LOG_EVENT_H
+#define LBS_NETWORK_LOCATE_LOG_EVENT_H
+
+#include <lbs/lbslogevent.h>
+
+/** log event object for network locate request */
+
+class CLbsNetworkLocateLogEvent : public CLbsLogEvent
+ {
+public:
+ IMPORT_C static CLbsNetworkLocateLogEvent* NewL(TUid aUid, TPositionInfoBase* aPosInfo);
+ ~CLbsNetworkLocateLogEvent();
+ // for self locate
+ IMPORT_C TUid LocalApp() const;
+ IMPORT_C void SetLocalApp(TUid aUid);
+
+protected:
+ void DoExternalizeL(RWriteStream& aWriteStream) const;
+ void DoInternalizeL(RReadStream& aReadStream);
+ void DoUpdateL(const CLbsLogEvent& aSourceLogEvent);
+ void DoCopyL(CLbsLogEvent*& aTargetLogEvent) const;
+ TInt DataSize() const;
+private:
+ CLbsNetworkLocateLogEvent();
+ void ConstructL(TUid aUid, TPositionInfoBase* aPosInfo);
+
+private:
+ /** The UID of local application request for the location information */
+ TUid iLocalApp;
+
+ }; // class CLbsNetworkLocateLogEvent
+
+
+#endif // LBS_NETWORK_LOCATE_LOG_EVENT_H
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/common/inc/LbsSelfLocateLogEvent.h Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,60 @@
+/**
+* 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
+ @publishedPartner
+ @released
+*/
+
+#ifndef LBS_SELF_LOCATE_LOG_EVENT_H
+#define LBS_SELF_LOCATE_LOG_EVENT_H
+
+#include <lbs/lbslogevent.h>
+
+/** log event object for self locate request */
+
+class CLbsSelfLocateLogEvent : public CLbsLogEvent
+ {
+public:
+ IMPORT_C static CLbsSelfLocateLogEvent* NewL(TUid aUid, TPositionInfoBase* aPosInfo);
+ ~CLbsSelfLocateLogEvent();
+ // for self locate
+ IMPORT_C TUid LocalApp() const;
+ IMPORT_C void SetLocalApp(TUid aUid);
+
+protected:
+ void DoExternalizeL(RWriteStream& aWriteStream) const;
+ void DoInternalizeL(RReadStream& aReadStream);
+ void DoUpdateL(const CLbsLogEvent& aSourceLogEvent);
+ void DoCopyL(CLbsLogEvent*& aTargetLogEvent) const;
+ TInt DataSize() const;
+
+private:
+ CLbsSelfLocateLogEvent();
+ void ConstructL(TUid aUid, TPositionInfoBase* aPosInfo);
+
+private:
+ /** The UID of local application request for the location information */
+ TUid iLocalApp;
+ }; // class CLbsSelfLocateLogEvent
+
+#endif // LBS_SELF_LOCATE_LOG_EVENT_H
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/common/inc/LbsTransmitLocationLogEvent.h Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,63 @@
+/**
+* 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
+ @publishedPartner
+ @released
+*/
+
+#ifndef LBS_TRANSMIT_LOCATION_LOG_EVENT_H
+#define LBS_TRANSMIT_LOCATION_LOG_EVENT_H
+
+#include <lbs/lbslogevent.h>
+
+/** log event object for transmit to 3rd party locate request */
+
+class CLbsTransmitLocationLogEvent : public CLbsLogEvent
+ {
+public:
+ IMPORT_C static CLbsTransmitLocationLogEvent* NewL(TUid aUid, TPositionInfoBase* aPosInfo, TDesC& aDestination);
+ ~CLbsTransmitLocationLogEvent();
+ // for X3P
+ IMPORT_C TUid X3PApp() const;
+ IMPORT_C void SetX3PApp(TUid aUid);
+ IMPORT_C void SetDestination(TDesC& aDestination);
+ IMPORT_C TDesC& Destination() const;
+
+protected:
+ void DoExternalizeL(RWriteStream& aWriteStream) const;
+ void DoInternalizeL(RReadStream& aReadStream);
+ void DoUpdateL(const CLbsLogEvent& aSourceLogEvent);
+ void DoCopyL(CLbsLogEvent*& aTargetLogEvent) const;
+ TInt DataSize() const;
+private:
+ CLbsTransmitLocationLogEvent();
+ void ConstructL(TUid aUid, TPositionInfoBase* aPosInfo, TDesC& aDestination);
+
+private:
+ /** The UID of 3rd party application request for the location information */
+ TUid iX3PApp;
+ /** Descriptor of the destination application */
+ TBuf<64> iDestination;
+ }; // class CLbsTransmitLocationLogEvent
+
+#endif // LBS_TRANSMIT_LOCATION_LOG_EVENT_H
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/common/inc/argutils.h Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,548 @@
+/**
+* Copyright (c) 2007-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 argutils.h
+*/
+
+#ifndef __ARG_UTILS_H__
+#define __ARG_UTILS_H__
+
+// LBS includes.
+#include <lbs.h>
+#include <lbscommon.h>
+#include <lbsprivacycontroller.h>
+#include <lbsnetcommon.h>
+//-------------------------------------------------------------------------------------------------
+
+/**
+Static utility functions to populate and instantiate arguments for function calls
+
+@internalComponent
+@test
+*/
+
+const TInt KAlpha2Timeout = 12*1000*1000;
+const TInt KTTimeout = 8*1000*1000;
+const TInt KMOLRFixTime = 240*1000*1000;
+const TInt KMinHorizontalAcc = 50.0;
+const TInt KMinVerticalAcc = 1000.0;
+const TInt KDefaultMaxFixTime = 130*1000*1000;
+
+
+class ArgUtils
+ {
+public:
+ inline static void PopulateLC(RLbsAssistanceDataBuilderSet& aData)
+ {
+ aData.OpenL();
+ CleanupClosePushL(aData);
+
+ // Access the Gps Reference Time which is the only data we support in this simple provider.
+ RUEPositioningGpsReferenceTimeBuilder* refTimeBuilder = NULL;
+
+ aData.GetDataBuilder(refTimeBuilder);
+ if (refTimeBuilder)
+ {
+ const TUint KAssistanceData_RefTime_Week = 12;
+ const TUint KAssistanceData_RefTime_Tow1MSec = 567;
+ // Fill out the reference time items we support - note the builder set is already open.
+ refTimeBuilder->SetField(TUEPositioningGpsReferenceTime::EGpsWeek, KAssistanceData_RefTime_Week);
+ refTimeBuilder->SetField(TUEPositioningGpsReferenceTime::EGpsTow1Msec, KAssistanceData_RefTime_Tow1MSec);
+
+ // Time stamp the data.
+ TTime timeStamp;
+ timeStamp.UniversalTime();
+
+ refTimeBuilder->SetTimeStamp(timeStamp);
+ }
+ }
+
+ inline static TLbsNetPosRequestPrivacy Privacy()
+ {
+ TLbsNetPosRequestPrivacy privacy;
+ privacy.SetRequestAdvice(TLbsNetPosRequestPrivacy::ERequestAdviceNotify);
+ privacy.SetRequestAction(TLbsNetPosRequestPrivacy::ERequestActionAllow);
+ return privacy;
+ }
+
+ inline static TLbsExternalRequestInfo RequestInfo()
+ {
+ TLbsExternalRequestInfo requestInfo;
+ requestInfo.SetRequesterId(_L8("+441234567891"));
+ requestInfo.SetClientName(_L8("THybridNWClient"));
+ requestInfo.SetClientExternalId(_L8("+441234567891"));
+ return requestInfo;
+ }
+
+ inline static TPositionInfo PositionInfo()
+ {
+ TCoordinate coordinate(3.14159265359, 2.71828183);
+ TLocality locality(coordinate, 99.99, 99.99);
+ TTime time(101010101);
+ TPosition position(locality, time);
+ TPositionInfo positionInfo;
+ positionInfo.SetPosition(position);
+ return positionInfo;
+ }
+
+ inline static TPositionInfo ReferencePositionInfo()
+ {
+ // General case: This will be less accurate than the GPS Position and the Hybrid Position.
+ TCoordinate coordinate(51.5,-0.096, 2.0);
+ TLocality locality(coordinate, 1000.0, 1000.0);
+
+ // Setting time to current time
+ TTime time;
+ time.UniversalTime();
+ TPosition position(locality, time);
+
+ TPositionInfo positionInfo;
+ positionInfo.SetPosition(position);
+ positionInfo.SetUpdateType(EPositionUpdateGeneral);
+ positionInfo.SetPositionMode(TPositionModuleInfo::ETechnologyNetwork);
+ positionInfo.SetPositionModeReason(EPositionModeReasonNone);
+ return positionInfo;
+ }
+
+
+ inline static TPositionInfo MolrReferencePositionInfo()
+ {
+ // General case: This will be less accurate than the Reference Position and the Hybrid Position.
+ TCoordinate coordinate(3.14159265359, 2.71828183, 10.0);
+ TLocality locality(coordinate, 1000.0, 1000.0);
+
+ // Setting time to current time
+ TTime time;
+ time.UniversalTime();
+ TPosition position(locality, time);
+
+ TPositionInfo positionInfo;
+ positionInfo.SetPosition(position);
+ positionInfo.SetUpdateType(EPositionUpdateGeneral);
+ positionInfo.SetPositionMode(TPositionModuleInfo::ETechnologyNetwork);
+ positionInfo.SetPositionModeReason(EPositionModeReasonNone);
+ return positionInfo;
+ }
+
+
+ inline static TPositionInfo HybridPositionInfo()
+ {
+ // General case: This will be more accurate than ReferencePosition
+ // but less accurate than the GPS position
+ TCoordinate coordinate(51.502,-0.1055, 1.0);
+ TLocality locality(coordinate, 200.0, 200.0);
+
+ // Setting time to current time
+ TTime time;
+ time.UniversalTime();
+ TPosition position(locality, time);
+
+ TPositionInfo positionInfo;
+ positionInfo.SetPosition(position);
+ positionInfo.SetUpdateType(EPositionUpdateGeneral);
+ positionInfo.SetPositionMode(TPositionModuleInfo::ETechnologyNetwork | TPositionModuleInfo::ETechnologyAssisted);
+ positionInfo.SetPositionModeReason(EPositionModeReasonNone);
+ return positionInfo;
+ }
+
+
+ inline static TPositionInfo MolrHybridPositionInfo()
+ {
+ // General case: This will be more accurate than ReferencePosition
+ // but less accurate than the GPS position
+ TCoordinate coordinate(3.14159265359, 2.71828183);
+ TLocality locality(coordinate, 200.0, 200.0);
+
+ // Setting time to current time
+ TTime time;
+ time.UniversalTime();
+ TPosition position(locality, time);
+
+ TPositionInfo positionInfo;
+ positionInfo.SetPosition(position);
+ positionInfo.SetUpdateType(EPositionUpdateGeneral);
+ positionInfo.SetPositionMode(TPositionModuleInfo::ETechnologyNetwork | TPositionModuleInfo::ETechnologyAssisted);
+ positionInfo.SetPositionModeReason(EPositionModeReasonNone);
+ return positionInfo;
+ }
+
+
+ inline static TPositionInfo NetworkPositionInfo()
+ {
+ // General case: This will be more accurate than ReferencePosition
+ // but less accurate than the GPS position
+ TCoordinate coordinate(51.502,-0.1055, 1.0);
+ TLocality locality(coordinate, 100.0, 100.0);
+
+ // Setting time to current time
+ TTime time;
+ time.UniversalTime();
+ TPosition position(locality, time);
+
+ TPositionInfo positionInfo;
+ positionInfo.SetPosition(position);
+ positionInfo.SetUpdateType(EPositionUpdateGeneral);
+ positionInfo.SetPositionMode(TPositionModuleInfo::ETechnologyNetwork | TPositionModuleInfo::ETechnologyAssisted);
+ positionInfo.SetPositionModeReason(EPositionModeReasonNone);
+ return positionInfo;
+ }
+
+ inline static TPositionInfo AccurateNetworkPositionInfo()
+ {
+ // General case: This will be more accurate than ReferencePosition
+ // but less accurate than the GPS position
+ TCoordinate coordinate(51.502,-0.1055, 1.0);
+ TLocality locality(coordinate, 10.0, 10.0);
+
+ // Setting time to current time
+ TTime time;
+ time.UniversalTime();
+ TPosition position(locality, time);
+
+ TPositionInfo positionInfo;
+ positionInfo.SetPosition(position);
+ positionInfo.SetUpdateType(EPositionUpdateGeneral);
+ positionInfo.SetPositionMode(TPositionModuleInfo::ETechnologyNetwork | TPositionModuleInfo::ETechnologyAssisted);
+ positionInfo.SetPositionModeReason(EPositionModeReasonNone);
+ return positionInfo;
+ }
+
+ inline static TPositionInfo MolrNetworkPositionInfo()
+ {
+ // General case: This will be more accurate than ReferencePosition
+ // but less accurate than the GPS position
+ TCoordinate coordinate(3.14159265359, 2.71828183);
+ TLocality locality(coordinate, 100.0, 100.0);
+
+ // Setting time to current time
+ TTime time;
+ time.UniversalTime();
+ TPosition position(locality, time);
+
+ TPositionInfo positionInfo;
+ positionInfo.SetPosition(position);
+ positionInfo.SetUpdateType(EPositionUpdateGeneral);
+ positionInfo.SetPositionMode(TPositionModuleInfo::ETechnologyNetwork | TPositionModuleInfo::ETechnologyAssisted);
+ positionInfo.SetPositionModeReason(EPositionModeReasonNone);
+ return positionInfo;
+ }
+
+
+ inline static TLbsNetPosRequestQuality Quality()
+ {
+ TLbsNetPosRequestQuality quality;
+ quality.SetMaxFixTime(KTTimeout);
+ quality.SetMaxFixAge(0);
+ TRealX nan;
+ nan.SetNaN();
+ quality.SetMinHorizontalAccuracy(nan);
+ quality.SetMinVerticalAccuracy(nan);
+ return quality;
+ }
+
+ inline static TLbsNetPosRequestQuality QualityAlpha2()
+ {
+ TLbsNetPosRequestQuality quality;
+ quality.SetMaxFixTime(KAlpha2Timeout);
+ quality.SetMaxFixAge(0);
+ TRealX nan;
+ nan.SetNaN();
+ quality.SetMinHorizontalAccuracy(nan);
+ quality.SetMinVerticalAccuracy(nan);
+ return quality;
+ }
+
+ inline static TLbsNetPosRequestMethod RequestMethod()
+ {
+ TLbsNetPosRequestMethod method;
+ TLbsNetPosMethod method1;
+ TLbsNetPosMethod method2;
+ method1.SetPosMethod(KLbsPositioningMeansGps, TPositionModuleInfo::ETechnologyTerminal | TPositionModuleInfo::ETechnologyAssisted);
+ const TLbsNetPosMethod posMethods [] =
+ {
+ method1,method2
+ };
+ method.SetPosMethods(posMethods, 2);
+ return method;
+ }
+
+ inline static TLbsNetPosRequestMethod RequestTerminalBasedMethod()
+ {
+ TLbsNetPosRequestMethod method;
+ TLbsNetPosMethod method1;
+ method1.SetPosMethod(KLbsPositioningMeansGps, TPositionModuleInfo::ETechnologyTerminal | TPositionModuleInfo::ETechnologyAssisted);
+
+ const TLbsNetPosMethod posMethods [] =
+ {
+ method1
+ };
+ method.SetPosMethods(posMethods, 1);
+ return method;
+ }
+
+ inline static TLbsNetPosRequestMethod RequestAutonomousMethod()
+ {
+ TLbsNetPosRequestMethod method;
+ TLbsNetPosMethod method1;
+ method1.SetPosMethod(KLbsPositioningMeansGps, TPositionModuleInfo::ETechnologyTerminal);
+
+ const TLbsNetPosMethod posMethods [] =
+ {
+ method1
+ };
+ method.SetPosMethods(posMethods, 1);
+ return method;
+ }
+
+ inline static TLbsNetPosRequestMethod RequestHybridMethod()
+ {
+ TLbsNetPosRequestMethod method;
+ TLbsNetPosMethod method1;
+ TLbsNetPosMethod method2;
+ method1.SetPosMethod(KLbsPositioningMeansGps, TPositionModuleInfo::ETechnologyTerminal | TPositionModuleInfo::ETechnologyAssisted);
+ method2.SetPosMethod(KLbsPositioningMeansGps, TPositionModuleInfo::ETechnologyNetwork | TPositionModuleInfo::ETechnologyAssisted);
+
+ const TLbsNetPosMethod posMethods [] =
+ {
+ method1,method2
+ };
+ method.SetPosMethods(posMethods, 2);
+ return method;
+ }
+
+
+ inline static TLbsNetPosRequestMethod RequestTAPMethod()
+ {
+ TLbsNetPosRequestMethod method;
+ TLbsNetPosMethod method1;
+ method1.SetPosMethod(KLbsPositioningMeansGps, TPositionModuleInfo::ETechnologyNetwork | TPositionModuleInfo::ETechnologyAssisted);
+
+ const TLbsNetPosMethod posMethods [] =
+ {
+ method1
+ };
+ method.SetPosMethods(posMethods, 1);
+ return method;
+ }
+
+ inline static TLbsNetPosRequestMethod RequestTerminalAssistedAndTerminalBasedMethod()
+ {
+ TLbsNetPosRequestMethod method;
+ TLbsNetPosMethod method1;
+ TLbsNetPosMethod method2;
+ method1.SetPosMethod(KLbsPositioningMeansGps, TPositionModuleInfo::ETechnologyNetwork | TPositionModuleInfo::ETechnologyAssisted);
+ method2.SetPosMethod(KLbsPositioningMeansGps, TPositionModuleInfo::ETechnologyTerminal | TPositionModuleInfo::ETechnologyAssisted);
+
+ const TLbsNetPosMethod posMethods [] =
+ {
+ method1,method2
+ };
+ method.SetPosMethods(posMethods, 2);
+ return method;
+ }
+
+ inline static TLbsNetPosRequestMethod RequestUnspecifiedMethod()
+ {
+ TLbsNetPosRequestMethod method;
+ TLbsNetPosMethod method1;
+ method1.SetPosMethod(KLbsPositioningMeansGps, TPositionModuleInfo::ETechnologyUnknown);
+
+ const TLbsNetPosMethod posMethods [] =
+ {
+ method1
+ };
+ method.SetPosMethods(posMethods, 1);
+ return method;
+ }
+
+ inline static TInt Alpha2()
+ {
+ return KAlpha2Timeout;
+ }
+
+ inline static TBool CompareQuality(TLbsNetPosRequestOptionsAssistance* aOpts,
+ TBool aIsclientConnected,
+ TInt aHorizontalAccuracy,
+ TInt aVerticalAccuracy,
+ TInt aMaxFixTime,
+ TInt aMaxFixAge,
+ TLbsAssistanceDataItem aDataMask,
+ TPositionModuleInfo::TTechnologyType aTechnologyType
+ )
+ {
+ TLbsNetPosRequestQuality quality;
+ aOpts->GetRequestQuality(quality);
+
+ if(aIsclientConnected != aOpts->NewClientConnected())
+ {
+ return EFalse;
+ }
+
+ if(quality.MinHorizontalAccuracy() != aHorizontalAccuracy)
+ {
+ return EFalse;
+ }
+
+ if(quality.MinVerticalAccuracy() != aVerticalAccuracy)
+ {
+ return EFalse;
+ }
+
+ if(quality.MaxFixTime() != aMaxFixTime)
+ {
+ return EFalse;
+ }
+
+ if(quality.MaxFixAge() != aMaxFixAge)
+ {
+ return EFalse;
+ }
+
+ if(aOpts->DataRequestMask() != aDataMask)
+ {
+ return EFalse;
+ }
+
+ if(aOpts->PosMode() != aTechnologyType)
+ {
+ return EFalse;
+ }
+
+ return ETrue;
+ }
+
+
+ inline static TBool ComparePositionInfoToReference(const TPositionInfo aPosInfoA)
+ {
+ TPositionInfo refPosInfo = ReferencePositionInfo();
+
+ TPosition posA;
+ TPosition posR;
+ aPosInfoA.GetPosition(posA);
+ refPosInfo.GetPosition(posR);
+
+ if(posA.HorizontalAccuracy() != posR.HorizontalAccuracy())
+ {
+ return EFalse;
+ }
+
+ if(posA.VerticalAccuracy() != posR.VerticalAccuracy())
+ {
+ return EFalse;
+ }
+
+ if(posA.Latitude() != posR.Latitude())
+ {
+ return EFalse;
+ }
+
+ if(posA.Longitude() != posR.Longitude())
+ {
+ return EFalse;
+ }
+
+ if(posA.Altitude() != posR.Altitude())
+ {
+ return EFalse;
+ }
+
+ return ETrue;
+ }
+
+
+
+ inline static TBool ComparePositionInfoToMolrRefPos(const TPositionInfo aPosInfoA)
+ {
+ TPositionInfo refPosInfo = MolrReferencePositionInfo();
+
+ TPosition posA;
+ TPosition posR;
+ aPosInfoA.GetPosition(posA);
+ refPosInfo.GetPosition(posR);
+
+ if(posA.HorizontalAccuracy() != posR.HorizontalAccuracy())
+ {
+ return EFalse;
+ }
+
+ if(posA.VerticalAccuracy() != posR.VerticalAccuracy())
+ {
+ return EFalse;
+ }
+
+ if(posA.Latitude() != posR.Latitude())
+ {
+ return EFalse;
+ }
+
+ if(posA.Longitude() != posR.Longitude())
+ {
+ return EFalse;
+ }
+
+ if(posA.Altitude() != posR.Altitude())
+ {
+ return EFalse;
+ }
+
+ return ETrue;
+ }
+
+ inline static TBool ComparePositionInfoToNan(const TPositionInfo aPosInfoA)
+ {
+ TPosition pos;
+ aPosInfoA.GetPosition(pos);
+
+ if(!Math::IsNaN(pos.HorizontalAccuracy()))
+ {
+ return EFalse;
+ }
+
+ if(!Math::IsNaN(pos.VerticalAccuracy()))
+ {
+ return EFalse;
+ }
+
+ if(!Math::IsNaN(pos.Latitude()))
+ {
+ return EFalse;
+ }
+
+ if(!Math::IsNaN(pos.Longitude()))
+ {
+ return EFalse;
+ }
+
+ if(!Math::IsNaN(pos.Altitude()))
+ {
+ return EFalse;
+ }
+
+ return ETrue;
+
+ }
+
+ };
+
+//-------------------------------------------------------------------------------------------------
+
+#endif //__ARG_UTILS_H__
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/common/inc/ctlbsclientlog.h Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,97 @@
+/*
+* Copyright (c) 2001-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:
+*
+*/
+
+
+
+#ifndef __CT_LBS_CLIENT_LOG_H__
+#define __CT_LBS_CLIENT_LOG_H__
+
+// INCLUDES
+#include <e32base.h>
+#include "TestExecuteStepBase.h"
+
+// CONSTANTS
+
+// FORWARD DECLARATIONS
+
+// CLASS DECLARATION
+
+/**
+* Implements the CLbsLog interface, and puts log entries in TEF log.
+*/
+class CT_LbsClientLog : public CBase
+ {
+ public: // Constructors and destructor
+
+ /**
+ * Two-phased constructor.
+ */
+ IMPORT_C static CT_LbsClientLog* NewL(CTestExecuteLogger& aLogger);
+
+ /**
+ * Two-phased constructor.
+ */
+ IMPORT_C static CT_LbsClientLog* NewLC(CTestExecuteLogger& aLogger);
+
+ /**
+ * Destructor.
+ */
+ virtual ~CT_LbsClientLog();
+
+ public: // New functions
+
+ void SetLogger(CTestExecuteLogger& aLogger){ iLogger = aLogger; };
+ CTestExecuteLogger& Logger() {return iLogger;};
+
+ public: // Functions from base classes
+
+ /**
+ * Add a line to the log file.
+ * @param aLine The line of text to append.
+ */
+ void Put(const TDesC& aLine);
+
+ /**
+ * Add an error line to the log file.
+ * @param aLine The error line of text to append.
+ */
+ void PutError(const TDesC& aLine);
+
+ private:
+
+ /**
+ * C++ default constructor.
+ */
+ CT_LbsClientLog();
+
+ /**
+ * By default EPOC constructor is private.
+ */
+ void ConstructL(CTestExecuteLogger& aLogger);
+
+ // By default, prohibit copy constructor
+ CT_LbsClientLog( const CT_LbsClientLog& );
+ // Prohibit assigment operator
+ CT_LbsClientLog& operator= ( const CT_LbsClientLog& );
+
+ private: // Data
+ CTestExecuteLogger iLogger;
+ };
+
+#endif // __CT_LBS_CLIENT_LOG_H__
+
+// End of File
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/common/inc/ctlbsclientrequestor.h Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,146 @@
+/*
+* Copyright (c) 2001-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:
+*
+*/
+
+
+
+#ifndef __CT_LBS_CLIENT_REQUESTOR_H__
+#define __CT_LBS_CLIENT_REQUESTOR_H__
+
+// INCLUDES
+#include <e32base.h>
+#include <Lbs.h>
+#include <EPos_CPosModules.h>
+#include <EPos_CPosModuleUpdate.h>
+#include <EPos_CPosModuleIdList.h>
+#include <testexecutelogger.h>
+
+
+// CONSTANTS
+const TInt KNoEvent = 42;
+
+// FORWARD DECLARATIONS
+class MCT_LbsRequestObserver;
+
+// CLASS DECLARATION
+
+/**
+* ?one_line_short_description.
+* ?other_description_lines
+*/
+class CT_LbsClientRequestor : public CActive
+ {
+ public: // Constructors and destructor
+
+ /**
+ * Two-phased constructor.
+ * @return A new instance of this class.
+ */
+ static CT_LbsClientRequestor* NewL(
+ /* IN */ TUid aPsyUid,
+ /* IN */ MCT_LbsRequestObserver* aObserver,
+ /* IN */ const TDesC& aClientName,
+ CTestExecuteLogger& aLogger
+ );
+
+ /**
+ * Destructor.
+ */
+ virtual ~CT_LbsClientRequestor();
+
+ protected:
+
+ /**
+ * C++ default constructor.
+ */
+ CT_LbsClientRequestor(
+ /* IN */ MCT_LbsRequestObserver* aObserver,
+ TUid aPsyUid
+ );
+
+ /**
+ * By default EPOC constructor is private.
+ */
+ void ConstructL(const TDesC& aClientName, CTestExecuteLogger& aLogger);
+
+ public: // New functions
+
+ const TTime& CompletionTimeUTC() const;
+
+ TInt CompletionCode() const;
+
+ void ResetCompletionCode();
+
+ /**
+ * Performs a request to iPsy. Notifies iObserver when request is complete
+ */
+ void StartRequestL(TBool aDefaultPsy);
+
+ void RequestModuleStatusEvent();
+
+ TInt ReadModuleStatusEvent();
+
+ void ContinueRequesting();
+
+ void ClosePositioner();
+
+ TBool ReadModuleStatusModulesApi(CPosModules* aDb, TPositionModuleId aModuleId);
+
+ TInt ReadModuleStatusClientApi(TPositionModuleId aModuleId);
+
+ void CancelModuleStatusEvent();
+
+ public: // Functions from base classes
+
+ void RunL();
+
+ void DoCancel();
+
+ protected: // New functions
+
+ void RequestComplete();
+
+ private:
+
+ // By default, prohibit copy constructor
+ CT_LbsClientRequestor( const CT_LbsClientRequestor& );
+ // Prohibit assigment operator
+ CT_LbsClientRequestor& operator= ( const CT_LbsClientRequestor& );
+
+ // Logger interface used for constructing result strings to be fed for the logger instance
+ inline CTestExecuteLogger& Logger() {return iLogger;};
+
+ private: // Data
+
+ RPositionServer iPosServer;
+ RPositioner iPositioner;
+ TBuf<100> iName;
+
+ MCT_LbsRequestObserver* iObserver;
+ TTime iCompletionTimeUTC;
+ TInt iCompletionCode;
+ TRequestStatus iRequestStatus;
+ TPositionInfo iModuleInfo;
+ TUid iPsyUid;
+ TPositionModuleStatusEvent istatusEvent;
+ TBool iContinueEventRequesting;
+
+ CTestExecuteLogger iLogger;
+ };
+
+#endif // __CT_LBS_CLIENT_REQUESTOR_H__
+
+// End of File
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/common/inc/ctlbsdoposupdate.h Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,83 @@
+/**
+* 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 ctlbsdoposupd.h
+*/
+#ifndef __CT_LBS_DOPOS_UPDATE_H__
+#define __CT_LBS_DOPOS_UPDATE_H__
+
+#include <e32base.h>
+#include <lbs.h>
+
+
+_LIT(KCT_LbsDoPosUpdate, "CT_LbsDoPosUpdate");
+
+
+// Async callbacks
+class MT_LbsDoPosUpdateObserver
+ {
+public:
+ virtual void MT_LbsDoPosUpdateCallback(TRequestStatus& aStatus) = 0; // do we need the aStatus...
+ };
+
+
+class CT_LbsDoPosUpdate: public CActive
+ {
+public:
+ ~CT_LbsDoPosUpdate();
+ static CT_LbsDoPosUpdate* NewL(MT_LbsDoPosUpdateObserver* aObserver, TPositionModuleInfo::TTechnologyType aTechnologyType = TPositionModuleInfo::ETechnologyUnknown);
+ static CT_LbsDoPosUpdate* NewL(MT_LbsDoPosUpdateObserver* aObserver, const TPositionCriteriaBase& aCriteria);
+ TInt SetOptions(const TPositionUpdateOptionsBase& aPosOption);
+ void StartL(TPositionInfo& aPosInfo);
+ void CancelRequest();
+ void OpenPositioner(TPositionModuleInfo::TTechnologyType aTechnologyType = TPositionModuleInfo::ETechnologyUnknown);
+ void ClosePositioner(void);
+ void ConnectServer(void);
+ void CloseServer(void);
+ TInt CompleteRequest(TInt aRequestId);
+
+protected:
+ // Functions from CActive:
+ virtual void DoCancel();
+ virtual void RunL();
+ virtual TInt RunError(TInt aError);
+
+private:
+ enum TOpenSubSessionType
+ {
+ EOpenSubSessionByModuleId, //Open subsession with the location server by module id
+ EOpenSubSessionByCriteria //Open subsession with the location server by criteria
+ };
+
+ CT_LbsDoPosUpdate(MT_LbsDoPosUpdateObserver* aObserver);
+
+ void CT_LbsDoPosUpdate::ConstructL(TOpenSubSessionType aOpenSubSessionType,TPositionModuleInfo::TTechnologyType aTechnologyType, const TPositionCriteriaBase& aCriteria);
+
+ // caller
+ MT_LbsDoPosUpdateObserver* iObserver;
+
+ // Self locate server.
+ RPositionServer iServer;
+ RPositioner iPositioner;
+ };
+
+#endif // __CT_LBS_DOPOS_UPDATE_H__
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/common/inc/ctlbsdox3p.h Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,77 @@
+/**
+* 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 ctlbsdox3p.h
+*/
+
+#ifndef __CT_LBS_DO_X3P_H__
+#define __CT_LBS_DO_X3P_H__
+
+
+#include <e32base.h>
+#include <lbs.h>
+#include <lbsx3p.h>
+
+
+//class CT_LbsX3PDoTransmitPos;
+_LIT(KCT_LbsDoX3P, "CT_LbsDoX3P");
+
+// Async callbacks
+class MT_LbsDoX3PObserver
+ {
+public:
+ virtual void MT_LbsDoX3PCallback(TInt aTransmitId, TRequestStatus& aStatus) = 0;
+ };
+
+
+class CT_LbsDoX3P: public CActive
+ {
+public:
+ ~CT_LbsDoX3P();
+ static CT_LbsDoX3P* NewL(MT_LbsDoX3PObserver* aObserver, TInt aTransmitId = 0);
+
+ TInt SetOptions(const TLbsTransmitPositionOptions& aTransmitOptions);
+
+ void StartL(const TDesC& aDestinationID, TUint aTransmitPriority, TPositionInfo & aTransmittedPosInfo);
+
+protected:
+ // Functions from CActive:
+ virtual void DoCancel();
+ virtual void RunL();
+ virtual TInt RunError(TInt aError);
+
+private:
+ CT_LbsDoX3P(MT_LbsDoX3PObserver* aObserver, TInt aTransmitId);
+ void CT_LbsDoX3P::ConstructL();
+
+ // Caller.
+ MT_LbsDoX3PObserver* iObserver;
+
+ // Transmit server.
+ RLbsTransmitPositionServer iServer;
+ RLbsTransmitPosition iTransmitter;
+
+ // Id to allow multiple X3P to be carried out.
+ TInt iTransmitId;
+ };
+
+#endif // __CT_LBS_DO_X3P_H__
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/common/inc/ctlbsnetsimstep.h Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,177 @@
+// 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 ctlbsNetsimstep.h
+// This contains the header file for LBS Net Sim Test Step Base
+//
+//
+
+#ifndef __CT_LBS_NET_SIM_STEP_H__
+#define __CT_LBS_NET_SIM_STEP_H__
+
+// EPOC includes.
+#include <testexecutestepbase.h>
+
+// LBS test includes.
+#include <lbsnetsimtest.h>
+#include <lbsnetsimtestobserver.h>
+
+#include "ctlbstimerutils.h"
+
+
+const TInt KLbsKeepAlivePeriod = 10000;
+
+const TInt KKeepAliveTimerId = 0;
+const TInt KAbortTimerId = 34;
+
+/** Callback flags held as bits in a 32 bit word.
+*/
+typedef TUint32 TLbsCallbackFlags;
+
+const TLbsCallbackFlags KLbsCallback_None = 0x0000;
+
+const TLbsCallbackFlags KLbsCallback_NetSim_Got_Connect = 0x0001;
+const TLbsCallbackFlags KLbsCallback_NetSim_Got_Disconnect = 0x0002;
+const TLbsCallbackFlags KLbsCallback_NetSim_Got_NotifyRegisterLcsMoLr = 0x0004;
+const TLbsCallbackFlags KLbsCallback_NetSim_Got_NotifyReleaseLcsMoLr = 0x0008;
+const TLbsCallbackFlags KLbsCallback_NetSim_Got_NotifyMeasurementControlLocation = 0x0010;
+const TLbsCallbackFlags KLbsCallback_NetSim_Got_NotifyReleaseLcsLocationNotification = 0x0020;
+const TLbsCallbackFlags KLbsCallback_NetSim_Got_NotifyFacilityLcsMoLrResult = 0x0040;
+const TLbsCallbackFlags KLbsCallback_NetSim_Got_NotifyMeasurementReportLocation = 0x0080;
+const TLbsCallbackFlags KLbsCallback_NetSim_Got_NotifyMeasurementReportRequestMoreAssistanceData = 0x0100;
+const TLbsCallbackFlags KLbsCallback_NetSim_Got_NotifyMeasurementReportControlFailure = 0x0200;
+const TLbsCallbackFlags KLbsCallback_NetSim_Got_NotifyError = 0x0400;
+const TLbsCallbackFlags KLbsCallback_NetSim_Got_ProcessMeasurementControlLocationError = 0x0800;
+
+// NOTE: Derived test case will assume that they create new flags starting at 0x1000. If you add additional
+// flags here, the derived test cases will have to be updated also.
+
+const TLbsCallbackFlags KLbsCallback_MoLr =
+ KLbsCallback_NetSim_Got_NotifyRegisterLcsMoLr | // --> NET
+ KLbsCallback_NetSim_Got_NotifyMeasurementControlLocation | // <-- NET
+ KLbsCallback_NetSim_Got_NotifyMeasurementReportLocation | // --> NET
+ KLbsCallback_NetSim_Got_NotifyFacilityLcsMoLrResult | // <-- NET
+ KLbsCallback_NetSim_Got_NotifyReleaseLcsMoLr; // --> NET
+
+//const TLbsCallbackFlags KLbsCallback_NetworkBasedLocation =
+// KLbsCallback_NetSim_Got_NotifyRegisterLcsMoLr | // --> NET
+// KLbsCallback_NetSim_Got_NotifyMeasurementControlLocation | // <-- NET
+// KLbsCallback_NetSim_Got_NotifyMeasurementReportControlFailure | // --> NET
+
+// KLbsCallback_NetSim_Got_NotifyReleaseLcsMoLr; // --> NET
+
+const TLbsCallbackFlags KLbsCallback_NetworkBasedLocation =
+ KLbsCallback_NetSim_Got_NotifyRegisterLcsMoLr | // --> NET
+ KLbsCallback_NetSim_Got_NotifyMeasurementControlLocation | // <-- NET
+ KLbsCallback_NetSim_Got_NotifyMeasurementReportLocation | // --> NET
+ KLbsCallback_NetSim_Got_NotifyFacilityLcsMoLrResult | // <-- NET
+ KLbsCallback_NetSim_Got_NotifyReleaseLcsMoLr; // --> NET
+
+const TLbsCallbackFlags KLbsCallback_MtLr =
+ // note: we get no notification of the
+ KLbsCallback_NetSim_Got_NotifyReleaseLcsLocationNotification | // response to privacy request
+ KLbsCallback_NetSim_Got_NotifyMeasurementControlLocation | // location request
+ KLbsCallback_NetSim_Got_NotifyMeasurementReportLocation;
+
+
+class CT_LbsNetSimStep : public CTestStep,
+ public MT_LbsTimerUtilsObserver,
+ public MLbsNetSimTestObserver
+{
+
+public:
+
+ virtual ~CT_LbsNetSimStep();
+
+ virtual TVerdict doTestStepPreambleL();
+ virtual TVerdict doTestStepPostambleL();
+
+
+ // From MLbsNetSimTestObserver.
+ virtual void Connected();
+ virtual void Disconnected();
+ virtual void NotifyRegisterLcsMoLr(const TDesC& aData);
+ virtual void NotifyReleaseLcsMoLr(TInt aReason);
+ virtual void NotifyMeasurementControlLocation(const TPositionInfo& aPosition, const RLbsAssistanceDataBuilderSet& aData, const TLbsNetPosRequestQuality& aQuality);
+ virtual void NotifyReleaseLcsLocationNotification(const CLbsNetworkProtocolBase::TLbsPrivacyResponse& aResult);
+ virtual void NotifyFacilityLcsMoLrResult(TInt aReason, const TPositionInfo& aPosition);
+ virtual void NotifyMeasurementReportLocation(const TPositionInfo& aPosition);
+ virtual void NotifyMeasurementReportRequestMoreAssistanceData(const TLbsAssistanceDataGroup& aFilter);
+ virtual void NotifyMeasurementReportControlFailure(TInt aReason);
+ virtual void NotifyError(MLbsNetSimTestObserver::EFunction aFunction, int aError);
+ virtual void ProcessMeasurementControlLocationError(TInt aError);
+
+protected:
+
+ CT_LbsNetSimStep();
+
+ /** If aHaltTimerInterval is set, the test will continue for this period of time after all halt flags have been set
+ */
+ void ConstructL(TTimeIntervalMicroSeconds32 aHaltTimerInterval = 0);
+
+ /** Can be used to set the extended timer interval if not known at construct time
+ */
+ void SetExtendedTimerInterval(TTimeIntervalMicroSeconds32 aHaltTimerInterval);
+
+ void SetCallbackFlag(TLbsCallbackFlags aCallbackFlag);
+ TBool TestCallbackFlags(TLbsCallbackFlags aExpectedFlags);
+
+
+ // From MT_LbsTimerUtilsObserver - keep alive timer to ensure we recvice all callbacks.
+ virtual void HandleTimerL(TInt aTimerId, const TTime& aTargetTime);
+
+
+ enum { EConnecting = 0, /** Waiting for the Net Sim to connect to the protocol module. */
+ EWaiting, /** Waiting for all the callbacks to be fired. */
+ EExtendedWaiting, /** Waiting for extended timer to fire */
+ EAborted, /** Abort timer has fired before all callbacks fired */
+ EDone, /** All the correct callbacks have been fired (and extended timer, if any, has fired), the test can end. */
+ ELast}; /** Used to allow extension of enums in derived classes - do not use! */
+
+ /** State machine variable for the test step.
+ */
+ TInt iState;
+
+
+ /** Used to keep a record off all the callback events.
+ */
+ TLbsCallbackFlags iCallbackFlags;
+
+
+ /** Expected callback flags at test end.
+ */
+ TLbsCallbackFlags iFlagsToHaltOn;
+
+ /** If this is non-zero, the test will continue for this period of time after all halt flags have been set
+ */
+ TTimeIntervalMicroSeconds32 iExtendedTimerInterval;
+
+ /** Network Simulator, to allow MT-LRs and to monitor network messages.
+ */
+ RLbsNetSimTest iNetSim;
+
+
+ /** Timer used to ensure the test step keeps processing until all the required callbacks
+ have been called. Otherwise we would execute the test step calls and return from the
+ doTestStepL function and miss the callbacks being fired.
+ */
+ CT_LbsTimerUtils* iKeepAliveTimer;
+
+ /** Timer used to abort the test step if all callbacks have not fired. Individual test cases can start this time with appropriate time.
+
+ */
+ CT_LbsTimerUtils* iAbortTimer;
+
+};
+
+#endif // __CT_LBS_STEP_H__
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/common/inc/ctlbsportedstepbase.h Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,340 @@
+// 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 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 ctlbsportedstepbase.h
+//
+//
+
+#ifndef __CT_LBS_PORTED_STEP_BASE_H__
+#define __CT_LBS_PORTED_STEP_BASE_H__
+
+// INCLUDES
+#include <w32std.h>
+#include <LbsPositionInfo.h>
+#include <Lbs.h>
+#include <LbsCommon.h>
+#include <LbsRequestor.h>
+#include <centralrepository.h>
+#include "ctlbsstep.h"
+#include "ctlbsserver.h"
+
+// CONSTANTS
+enum TPosSetupPsyDirective
+ {
+ EPosDisableTheRest = 0
+ };
+
+// UID:s for PSY:s
+const TInt32 KUidExternalGps = 0x101f7a7d;
+const TInt32 KUidManualInput = 0x101f7a7e;
+const TInt32 KUidDefault = 0x101f7a7f;
+const TInt32 KUidStrategy = 0x101f7a80;
+const TInt32 KUidSimulationPsy = 0x101f7a81;
+const TInt32 KUidStubPositioner = 0x01000019;
+const TInt32 KUidDynDbTestPsy = 0x01000016;
+const TInt32 KUidInstallTestPsy = 0x01000015;
+const TInt32 KUidTestPsySimulateIsa = 0x01000018;
+const TInt32 KUidTestPsy1 = 0x01000001;
+const TInt32 KUidTestPsy2 = 0x01000002;
+const TInt32 KUidTestPsy3 = 0x01000003;
+const TInt32 KUidTestPsy4 = 0x01000004;
+const TInt32 KUidTestPsy5 = 0x01000005;
+const TInt32 KUidTestPsy6 = 0x01000006;
+const TInt32 KUidTestPsy7 = 0x01000007;
+const TInt32 KUidTestPsy8 = 0x01000008;
+const TInt32 KUidTestPsy9 = 0x01000009;
+const TInt32 KUidTestPsy10 = 0x01000010;
+const TInt32 KUidTestPsy11 = 0x01000011;
+const TInt32 KUidTestPsy12 = 0x01000012;
+const TInt32 KUidTestPsy13 = 0x01000013;
+const TInt32 KUidTestPsy256 = 0x01000017;
+const TInt32 KUidTestPsyTp176 = 0x01000176;
+const TInt32 KUidMultiPsy = 0x01010176;
+const TInt32 KUidTestStatusPsy = 0x01000191;
+const TInt32 KUidTestTimerPsy = 0x01000192;
+const TInt32 KUidExamplePsy = 0x10001234; // TBD not impl UID
+const TInt32 KUidPanicPsy = 0x01010210;
+const TInt32 KUidTestPsyPartialUpdate = 0x01000021;
+const TInt32 KUidPsySwitching = 0x00000000; // TBD fill in when there ever is a switching psy
+const TInt32 KUidTestPsyMaxAge = 0x01000020;
+const TInt32 KUidTestRangePsy = 0x01000022;
+const TInt32 KUidTestSingPsy = 0x01f0ff23;
+const TInt32 KUidTestTrackingPsy = 0x01f0ff24;
+
+const TInt32 KTestProxyPsy1 = 0x01f0e001;
+const TInt32 KTestProxyPsy2 = 0x01f0e002;
+const TInt32 KTestProxyPsy3 = 0x01f0e003;
+const TInt32 KTestProxyPsy4 = 0x01f0e004;
+
+const TInt32 KInstallPsyTp273 = 0x01f0e005;
+
+const TInt32 KUidTestPsyPartialUpdate2 = 0x01000023;
+const TInt32 KUidSatInfoPsy = 0x01010177;
+
+const TInt32 KUidBtgPsy = 0x101FE999;
+const TInt32 KUidIgPsy = 0x101FE999;
+
+const TInt KEspectedErrorCodePSY1 = KErrNone;
+const TInt KEspectedErrorCodePSY2 = KPositionPartialUpdate;
+const TInt KEspectedErrorCodePSY3 = KErrPositionBufferOverflow;
+const TInt KEspectedErrorCodePSY4 = KErrNone;
+
+// Central repository constants for Default Proxy.
+const TUid KCRUidDefaultProxyConfiguration = { 0x101f7a7f };
+const TUint32 KDefaultProxyLastWorkingGpsPsy = 0x10000001;
+
+
+// CLASS DECLARATION
+class CT_LbsClientLog;
+
+/****************************************************************************
+* The reason to have a new step base is that it is very much possible
+* that the all individual test steps have project related common variables
+* and members
+* and this is the place to define these common variable and members.
+*
+****************************************************************************/
+class CT_LbsPortedStepBase : public CT_LbsStep
+ {
+public:
+ virtual ~CT_LbsPortedStepBase();
+ CT_LbsPortedStepBase(CT_LbsServer& aParent);
+ virtual TVerdict doTestStepPreambleL();
+ virtual TVerdict doTestStepL();
+ virtual TVerdict doTestStepPostambleL();
+
+//Please add your class members which will be common to all individual test steps:
+protected:
+ HBufC8* iReadData;
+ HBufC8* iWriteData;
+
+public: // New functions
+
+ /**
+ * Starts the test
+ */
+ virtual void StartL() = 0;
+
+public: // Functions from base classes
+
+ /**
+ * Runs the test in the module
+ * @param aIndex Indicates which internal test to run.
+ */
+ void StartL(TInt aIndex);
+
+protected: // New functions
+
+ /**
+ * Setup privacy and notification override settings
+ * @param aPsyName the name of the psy
+ * @param aDirective how to setup the PSY:s
+ * Enum def in this file.
+ */
+ void SetupPsyL(const TUid aPsyUid,
+ TPosSetupPsyDirective aDirective = EPosDisableTheRest);
+
+ /**
+ * Initialises the test.
+ * By default does nothing.
+ */
+ virtual void InitTestL();
+
+ /**
+ * Cleans up after a test.
+ * Always called, even if the test leaves.
+ * By default does nothing.
+ */
+ virtual void CloseTest();
+
+ /**
+ * Connect to epos server.
+ */
+ void ConnectL();
+
+ /**
+ * Open a PSY by name.
+ */
+ TInt OpenPositionerByName(const TUid aPsyUid);
+
+ /**
+ * Open default PSY.
+ */
+ TInt OpenPositioner();
+
+ /**
+ * Close PSY by calling "iPositioner.Close()"
+ */
+ void ClosePositioner();
+
+ /**
+ * Close connection with epos server.
+ */
+ void Disconnect();
+
+ /**
+ * Perform a request to epos.
+ * Use this methods when requesting from
+ * both a service and another requestor source, ie a Contact
+ */
+ void PerformRequestL(const TDesC& aService,
+ const TDesC& aContact,
+ CRequestor::_TRequestorType aServiceIdType,
+ CRequestor::_TRequestorType aContactIdType,
+ // Set default values
+ CRequestor::_TRequestorFormat aServiceFormat = CRequestor::EFormatApplication,
+ CRequestor::_TRequestorFormat aContactFormat = CRequestor::EFormatTelephone
+ );
+
+ /**
+ * Perform a request to epos.
+ */
+ void PerformRequestL(const TDesC& aRequestor,
+ CRequestor::_TRequestorType aRequestorType,
+ CRequestor::_TRequestorFormat aRequestorFormat);
+
+ /**
+ * Perform a synchronous request to epos and return errorcode.
+ * Position info is returned in OUT parameter
+ */
+ TInt PerformSyncRequest(const TDesC& aServiceName,
+ /* OUT */TPositionInfoBase* aModuleInfo);
+
+ /**
+ * Check the result of a request to epos.
+ * Leaves if the error code is not the expected one.
+ * The log file is used to print the result from the request
+ */
+ void CheckRequestResultL(TInt aExpectedErrorCode, TBool aLogFlag = ETrue);
+
+ /**
+ * Leaves if aCondition is false.
+ * @param aCondition something that should be true
+ */
+ void AssertTrueL(TBool aCondition, const TDesC& aErrorMsg, TInt aErrorCode);
+
+ /**
+ * Leaves if aCondition is false.
+ * @param aCondition something that should be true
+ */
+ void AssertTrueL(TBool aCondition, const TDesC& aErrorMsg);
+
+ /**
+ * Get the last updated position info from positioner
+ * Uses GetLastKnownPosition() method.
+ * @return position info.
+ */
+ TPositionInfo AllocPositionInfoL();
+
+ /**
+ * Verifies that a PSY has been loaded by getting its last reported status.
+ * Requires that the PSY report active in its constructor.
+ * @param aUid the PSYs Uid
+ */
+ void VerifyPsyLoadedL(TPositionModuleId aUid);
+
+ /**
+ * Verifies that a PSY has been unloaded by getting its last reported status.
+ * Requires that the PSY report inactive in its destructor.
+ * @param aUid the PSYs Uid
+ */
+ void VerifyPsyUnloadedL(TPositionModuleId aUid);
+
+ /**
+ * Request a position from the default psy
+ */
+ void RequestL(TPositionInfo& aPosInfo, const TInt& aRequestIndex,
+ const TInt& aExpectedErrorCode = 999);
+
+ void LogErrorAndLeaveL(const TDesC& aErrorInfo,
+ const TInt aReason = KErrGeneral);
+
+ void SetSimDataFileL(const TDesC& aFileName);
+
+ void ResetDefaultPSYLastWorkingExtGPSPSYL();
+
+ void VerifyPositionFromL(TPositionInfo& aPosInfo, TPositionModuleId& aModuleId);
+
+ void VerifyPositionL(TPositionInfo& aPosInfo, TReal64 aLat,
+ TReal64 aLong, TReal64 aAlt);
+
+ void VerifyRequestTimeLessThanL(TInt aExpectedReqTime);
+
+ void ConstructL();
+
+protected: // Data
+
+ TInt iNrOfRequests;
+ TInt iRequestTime;
+
+ TInt iModuleId;
+ TUid iUidExternalGps;
+ TUid iUidManualInput;
+ TUid iUidDefault;
+ TUid iUidStrategy;
+ TUid iUidSimulationPsy;
+ TUid iUidStubPositioner;
+ TUid iUidDynDbTestPsy;
+ TUid iUidInstallTestPsy;
+ TUid iUidTestPsySimulateIsa;
+ TUid iUidTestPsy1;
+ TUid iUidTestPsy2;
+ TUid iUidTestPsy3;
+ TUid iUidTestPsy4;
+ TUid iUidTestPsy5;
+ TUid iUidTestPsy6;
+ TUid iUidTestPsy7;
+ TUid iUidTestPsy8;
+ TUid iUidTestPsy9;
+ TUid iUidTestPsy10;
+ TUid iUidTestPsy11;
+ TUid iUidTestPsy12;
+ TUid iUidTestPsy13;
+ TUid iUidTestPsy256;
+ TUid iUidTestPsyTp176;
+ TUid iUidMultiPsy;
+ TUid iUidExamplePsy;
+ TUid iUidTestStatusPsy;
+ TUid iUidTestTimerPsy;
+ TUid iUidPsySwitching;
+ TUid iUidPanicPsy;
+ TUid iUidTestPsyPartialUpdate;
+ TUid iUidTestPsyMaxAge;
+ TUid iUidTestRangePsy;
+ TUid iUidTestSingPsy;
+ TUid iUidTestTrackingPsy;
+ TUid iUidTestProxyPsy1;
+ TUid iUidTestProxyPsy2;
+ TUid iUidTestProxyPsy3;
+ TUid iUidTestProxyPsy4;
+ TUid iUidInstallPsyTp273;
+ TUid iUidPartialUpdate2;
+ TUid iUidSatInfoPsy;
+ TUid iUidBtgPsy;
+ TUid iUidIgPsy;
+ RPositionServer iPosServer;
+ RPositioner iPositioner;
+
+ CActiveScheduler* iScheduler;
+ TBool iErrors;
+ RFs iFileServer;
+
+ CT_LbsClientLog* iLog;
+
+private: // Data
+
+ TRequestStatus iStatus;
+ TPositionInfo iModuleInfo;
+ };
+
+#endif // __CT_LBS_PORTED_STEP_BASE_H__
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/common/inc/ctlbsportedsuitedefs.h Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,31 @@
+/*
+* Copyright (c) 2001-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:
+*
+*/
+
+
+
+#ifndef __CT_LBS_CLIENT_PORTED_SUITEDEFS_H__
+#define __CT_LBS_CLIENT_PORTED_SUITEDEFS_H__
+
+// Please modify below value with your project and must match with your configuration ini file which is required to be modified as well
+_LIT(KTe_LbsPortedSuiteString,"TheString");
+_LIT(KTe_LbsPortedSuiteInt,"TheInt");
+_LIT(KTe_LbsPortedSuiteBool,"TheBool");
+
+// For test step panics
+_LIT(KTe_LbsPortedSuitePanic,"Te_LbsPortedSuite");
+
+#endif //__CT_LBS_CLIENT_PORTED_SUITEDEFS_H__
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/common/inc/ctlbsposclient.h Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,100 @@
+/*
+* Copyright (c) 2000-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:
+*
+*/
+
+
+
+#ifndef __CT_LBS_POS_CLIENT_H__
+#define __CT_LBS_POS_CLIENT_H__
+
+// INCLUDES
+#include <LbsPositionInfo.h>
+#include <e32base.h>
+#include <lbs.h>
+
+// CONSTANTS
+
+// FUNCTION TYPES
+
+// FORWARD DECLARATIONS
+class CPositioner;
+class CT_LbsPosClientHolder;
+
+// CLASS DECLARATION
+
+/**
+* Active object used to make position requests
+*
+*/
+class CT_LbsPosClient : public CActive
+ {
+ public: // Constructors and destructor
+
+ static CT_LbsPosClient* NewL(CT_LbsPosClientHolder* aParent, TUid aPsy);
+
+ static CT_LbsPosClient* NewL(CT_LbsPosClientHolder* aParent, TUid aPsy, RPositionServer& aPositionServer);
+
+ /**
+ * Destructor.
+ */
+ ~CT_LbsPosClient();
+
+ private:
+
+ /**
+ * C++ default constructor.
+ */
+ CT_LbsPosClient(CT_LbsPosClientHolder* aParent);
+
+ void ConstructL(TUid aPsy);
+
+ void ConstructL(TUid aPsy, RPositionServer& aPositionServer);
+
+ public: // Functions from base classes
+
+ /**
+ * Starts a position request
+ */
+ void MakeRequest();
+
+ /**
+ * Get result
+ */
+ void GetResult(
+ TInt& aStatus,
+ TPositionInfo& aModuleInfo,
+ TTimeIntervalMicroSeconds& aRequestTime
+ );
+
+ private:
+
+ void RunL();
+
+ void DoCancel();
+
+ private:
+ RPositioner iPositioner;
+ RPositionServer iPosServer;
+ TBool iSameClient;
+ TPositionInfo iModuleInfo;
+ TTime iStartTime;
+ TTimeIntervalMicroSeconds iRequestTime;
+ CT_LbsPosClientHolder* iParent;
+ };
+
+#endif // __CT_LBS_POS_CLIENT_H__
+
+// End of File
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/common/inc/ctlbsposclientholder.h Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,112 @@
+/*
+* Copyright (c) 2000-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:
+*
+*/
+
+
+
+#ifndef __CT_LBS_CLIENT_POS_HOLDER_H__
+#define __CT_LBS_CLIENT_POS_HOLDER_H__
+
+// INCLUDES
+#include <e32base.h>
+#include "ctlbsportedstepbase.h"
+
+// CONSTANTS
+
+// FUNCTION TYPES
+
+// FORWARD DECLARATIONS
+class CPositionInfo;
+class CPositioner;
+class CT_LbsPosClient;
+
+// CLASS DECLARATION
+
+/**
+* Active object used to make position requests
+*
+*/
+class CT_LbsPosClientHolder : public CActive
+ {
+ public: // Constructors and destructor
+
+ /**
+ * C++ default constructor.
+ */
+ static CT_LbsPosClientHolder* NewLC(
+ TInt aRequestCount = 1, TUid aPsy = TUid::Uid(KUidDynDbTestPsy), TBool aSameServer = EFalse);
+
+ /**
+ * Destructor.
+ */
+ ~CT_LbsPosClientHolder();
+
+ private:
+
+ void ConstructL(TInt aRequestCount, TUid aPsy, TBool aSameServer);
+
+ /**
+ * C++ default constructor.
+ */
+ CT_LbsPosClientHolder();
+
+ public: // Functions from base classes
+
+ /**
+ * Starts a position request
+ */
+ void MakeRequests();
+
+ void StopRequests();
+
+ void SetCancelTime(TTimeIntervalMicroSeconds32 aTimeInterval);
+
+ /**
+ * Get result
+ */
+ void GetResult(
+ TInt& aStatus,
+ TPositionInfo& aModuleInfo,
+ TTimeIntervalMicroSeconds& aRequestTime,
+ TInt aRequesterIndex = 0
+ );
+
+ void HandleRequestDone();
+
+ void SetRequesterWillCancelL(
+ TInt aIndex = 0
+ );
+
+ protected:
+
+ void RunL();
+
+ void DoCancel();
+
+ private:
+
+ RPointerArray<CT_LbsPosClient> iRequesters;
+ RPositionServer iPosServer;
+ TInt iNofRequestsDone;
+ RTimer iTimer;
+ RArray<TInt> iRequestersWhoWillCancel;
+ TBool iRequestsActive;
+ TTimeIntervalMicroSeconds32 iCancelTime;
+ };
+
+#endif // __CT_LBS_CLIENT_POS_HOLDER_H__
+
+// End of File
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/common/inc/ctlbsrequester.h Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,149 @@
+/*
+* Copyright (c) 2000-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:
+*
+*/
+
+
+
+#ifndef __CT_LBS_REQUESTER_H__
+#define __CT_LBS_REQUESTER_H__
+
+// INCLUDES
+#include <e32base.h>
+#include <Lbs.h>
+#include <testexecutelogger.h>
+
+// CONSTANTS
+
+// FORWARD DECLARATIONS
+class MCT_LbsRequestObserver;
+
+// CLASS DECLARATION
+
+/**
+* ?one_line_short_description.
+* ?other_description_lines
+*/
+class CT_LbsRequester : public CActive
+ {
+ public: // Constructors and destructor
+
+ /**
+ * Two-phased constructor.
+ * @return A new instance of this class.
+ */
+ static CT_LbsRequester* NewL(
+ /* IN */ TUid aPsyUid,
+ /* IN */ MCT_LbsRequestObserver* aObserver,
+ CTestExecuteLogger& aLogger
+ );
+
+ /**
+ * Two-phased constructor.
+ * @return A new instance of this class.
+ */
+ static CT_LbsRequester* NewL(
+ /* IN */ MCT_LbsRequestObserver* aObserver,
+ /* IN */ TTimeIntervalMicroSeconds aInterval,
+ CTestExecuteLogger& aLogger
+ );
+
+ /**
+ * Destructor.
+ */
+ virtual ~CT_LbsRequester();
+
+ protected:
+
+ /**
+ * C++ default constructor.
+ */
+ CT_LbsRequester(
+ /* IN */ MCT_LbsRequestObserver* aObserver
+ );
+
+ /**
+ * By default EPOC constructor is private.
+ */
+ void ConstructL(TUid aPsyUid, CTestExecuteLogger& aLogger);
+
+ /**
+ * By default EPOC constructor is private.
+ */
+ void ConstructL(TTimeIntervalMicroSeconds aInterval, CTestExecuteLogger& aLogger);
+
+ public: // New functions
+
+ const TTime& CompletionTimeUTC() const;
+ TInt CompletionCode() const;
+ void GetPositionInfo(
+ TPositionInfo& aModuleInfo
+ );
+
+ /**
+ * Set Requestorstack
+ */
+ TInt SetRequestorStackL(const TDesC& aService, const TDesC& aContact);
+
+ /**
+ * Performs a request to iPsy. Notifies iObserver when request is complete
+ */
+ void StartRequest();
+
+
+ /**
+ * Performs a request to iPsy. Notifies iObserver when request is complete
+ */
+ void SetUpdateIntervalL(TTimeIntervalMicroSeconds aInterval);
+
+ void SetUpdateType(const TInt& aUpdateType);
+
+ public: // Functions from base classes
+
+ void RunL();
+
+ void DoCancel();
+
+ protected: // New functions
+
+ void RequestComplete();
+
+ private:
+
+ // By default, prohibit copy constructor
+ CT_LbsRequester( const CT_LbsRequester& );
+ // Prohibit assigment operator
+ CT_LbsRequester& operator= ( const CT_LbsRequester& );
+
+ // Logger interface used for constructing result strings to be fed for the logger instance
+ inline CTestExecuteLogger& Logger() {return iLogger;};
+
+ private: // Data
+
+ RPositionServer iPosServer;
+ RPositioner iPositioner;
+
+ MCT_LbsRequestObserver* iObserver;
+ TTime iCompletionTimeUTC;
+ TInt iCompletionCode;
+ TRequestStatus iRequestStatus;
+ TPositionInfo iModuleInfo;
+
+ CTestExecuteLogger iLogger;
+ };
+
+#endif // __CT_LBS_REQUESTER_H__
+
+// End of File
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/common/inc/ctlbsserver.h Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,66 @@
+// 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 CT_LbsServer.h
+// This contains the header file for LBS Test server
+//
+//
+
+#ifndef __CT_LBS_SERVER_H__
+#define __CT_LBS_SERVER_H__
+
+// System includes
+#include <testexecuteserverbase.h>
+
+// User includes
+#include "ctlbsshareddata.h"
+
+//Literals Used
+_LIT(KTestCaseId, "tc_id");
+
+/** Configuration variable to state which module is in use for the test.
+
+This does not select the module to use, it's used to switch on test notifcation
+messages from the test step to the test module.
+
+Values: "real" for use with the real A-GPS module.
+ "test" for use with the test module.
+*/
+_LIT(KLbsModuleType, "module_type");
+_LIT(KLbsModuleType_Real, "real");
+_LIT(KLbsModuleType_Test, "test");
+
+
+// Implements the LBS Test server
+class CT_LbsServer : public CTestServer
+ {
+public :
+ static CT_LbsServer* NewL();
+ // Creates the test steps based on the test step name
+ virtual CTestStep* CreateTestStep(const TDesC& aStepName);
+ virtual ~CT_LbsServer();
+ CT_LbsServer();
+public:
+ CT_LbsSharedData* iSharedData;
+
+ /**
+ iScheduler is a pointer to the active scheduler for use in the tests
+ @see CActiveScheduler
+ */
+ CActiveScheduler* iScheduler;
+
+protected:
+ virtual void ConstructL(const TDesC& aName);
+ };
+
+#endif //__CT_LBS_SERVER_H__
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/common/inc/ctlbsshareddata.h Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,75 @@
+// 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 CT_LbsSharedData.h
+// This contains CT_LbsSharedData
+//
+//
+
+
+#ifndef __T_LBS_SHARED_DATA_H__
+#define __T_LBS_SHARED_DATA_H__
+
+// system includes
+#include <e32cmn.h>
+
+// Lbs includes
+#include <lbspositioninfo.h>
+#include <lbscommon.h>
+
+#include <lbslogevent.h>
+#include <lbsselflocatelogevent.h>
+#include <lbsexternallocatelogevent.h>
+#include <lbstransmitlocationlogevent.h>
+#include <lbsnetworklocatelogevent.h>
+#include <lbsassistancedatalogevent.h>
+
+class CT_LbsSharedData : public CBase
+{
+public:
+ static CT_LbsSharedData* NewL();
+ CT_LbsSharedData();
+ virtual ~CT_LbsSharedData();
+
+protected:
+ virtual void ConstructL();
+
+public:
+ RPointerArray<TAny> iVerifyPosInfoArr;
+ RPointerArray<TAny> iCurrentPosInfoArr;
+
+ // For logging, different type arrays to store multiple events
+ RPointerArray<CLbsSelfLocateLogEvent> iSelfLocateLogInfoArr;
+ RPointerArray<CLbsNetworkLocateLogEvent> iNetworkLocateLogInfoArr;
+ RPointerArray<CLbsExternalLocateLogEvent> iExternalLocateLogInfoArr;
+ RPointerArray<CLbsTransmitLocationLogEvent> iX3PLocateLogInfoArr;
+ RPointerArray<CLbsAssistanceDataLogEvent> iAssistanceDataLogInfoArr;
+
+ TPositionModuleInfo iVerifyModuleInfo;
+ TPositionModuleInfo iCurrentModuleInfo;
+
+ TPositionModuleStatus iVerifyModuleStatus;
+ TPositionModuleStatus iCurrentModuleStatus;
+
+ TPositionModuleStatusEvent iVerifyModuleStatusEvent;
+ TPositionModuleStatusEvent iCurrentModuleStatusEvent;
+
+ TPositionUpdateOptions iVerifyUpdateOpts;
+ TPositionUpdateOptions iCurrentUpdateOpts;
+
+ /** Flag used to indicate if the A-GPS integration test module is being used during testing.
+ */
+ TBool iTestModuleInUse;
+};
+
+#endif // __T_LBS_SHARED_DATA_H__
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/common/inc/ctlbsstep.h Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,47 @@
+// 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 CT_LbsServer.h
+// This contains the header file for LBS Test Step Base
+//
+//
+
+#ifndef __CT_LBS_STEP_H__
+#define __CT_LBS_STEP_H__
+
+
+#include <testexecutestepbase.h>
+
+#include "ctlbsserver.h"
+
+
+class CT_LbsStep : public CTestStep
+{
+
+public:
+ virtual ~CT_LbsStep();
+
+ virtual TVerdict doTestStepPreambleL();
+ virtual TVerdict doTestStepPostambleL();
+
+protected:
+ CT_LbsStep(CT_LbsServer& aParent);
+
+ // Class members which will be common to all individual test steps:
+ const CT_LbsServer& iParent;
+
+
+private:
+};
+
+#endif // __CT_LBS_STEP_H__
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/common/inc/ctlbsstepclearlog.h Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,54 @@
+// 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 CTLbsStepClearLog.h
+// This contains the header file to clear the log
+//
+//
+
+
+
+/**
+ @file
+ @internalTechnology
+ @test
+*/
+
+#ifndef __CT_LBS_STEP_CLEARLOG_H__
+#define __CT_LBS_STEP_CLEARLOG_H__
+
+#include "ctlbsstep.h"
+#include "ctlbsserver.h"
+
+// For logging
+#include "lbslogger.h"
+#include <logcli.h>
+#include <logview.h>
+#include <logwrap.h>
+
+#include "ctlbsasyncwaiter.h"
+
+_LIT(KLbsStep_ClearLog, "LbsStep_ClearLog");
+
+class CT_LbsStep_ClearLog : public CT_LbsStep
+ {
+public:
+ static CT_LbsStep_ClearLog* New(CT_LbsServer& aParent);
+ TVerdict doTestStepL();
+
+private:
+ CT_LbsStep_ClearLog(CT_LbsServer& aParent);
+
+ };
+
+#endif // __CT_LBS_STEP_CLEARLOG_H__
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/common/inc/ctlbsstepconfighybridmodule.h Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,52 @@
+// Copyright (c) 2007-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:
+// This is the header file for the hybrid module configuration test step
+//
+//
+
+#ifndef CTLBSSTEPCONFIGHYBRIDMODULE_H
+#define CTLBSSTEPCONFIGHYBRIDMODULE_H
+
+#include "ctlbsstep.h"
+#include "ctlbsserver.h"
+#include <ctlbsagpshandler.h>
+
+// Literals used
+_LIT(KLbsStep_ConfigHybridModule, "LbsStep_ConfigHybridModule");
+
+class CT_LbsStep_ConfigHybridModule : public CT_LbsStep, MT_ResponseObserver
+ {
+public:
+ static CT_LbsStep_ConfigHybridModule* New(CT_LbsServer& aParent);
+ virtual TVerdict doTestStepPreambleL();
+ virtual TVerdict doTestStepL();
+ virtual TVerdict doTestStepPostambleL();
+
+ // from MT_ResponseObserver
+ virtual void ProcessAGpsResponseMessage(const TT_LbsAGpsResponseMsg::TModuleResponseType aResponse);
+
+private:
+ CT_LbsStep_ConfigHybridModule(CT_LbsServer& aParent);
+
+ // Communication channel between A-Gps module and Test Harness
+ CT_LbsAGpsHandler* iAGpsHandler;
+
+ // Configuration counter
+ TInt iConfigCtr;
+
+ // Partial verdict
+ TVerdict iVerdict;
+ };
+
+#endif // CTLBSSTEPCONFIGHYBRIDMODULE_H
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/common/inc/ctlbsstepcreateupdateinfo.h Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,38 @@
+// Copyright (c) 2007-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 CT_LbsStep_UpdateInfo.h
+// This contains the header file for Server Open Close Test
+//
+//
+
+#ifndef __CT_LBS_CREATE_UPDATE_INFO_H__
+#define __CT_LBS_CREATE_UPDATE_INFO_H__
+
+#include "ctlbsstep.h"
+#include "ctlbsserver.h"
+
+// Literals used
+_LIT(KLbsStep_CreateUpdateInfo, "LbsStep_CreateUpdateInfo");
+
+class CT_LbsStep_CreateUpdateInfo : public CT_LbsStep
+ {
+public:
+ static CT_LbsStep_CreateUpdateInfo* New(CT_LbsServer& aParent);
+ virtual TVerdict doTestStepL();
+
+private:
+ CT_LbsStep_CreateUpdateInfo(CT_LbsServer& aParent);
+ };
+
+#endif //__CT_LBS_CREATE_UPDATE_INFO_H__
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/common/inc/ctlbsstepcreateverifymodinfo.h Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,38 @@
+// 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 CT_LbsStep_Create_Verify_ModInfo.h
+// This contains the header file for create verify module info step
+//
+//
+
+#ifndef __CT_LBS_CREATE_VERIFY_MOD_INFO_H__
+#define __CT_LBS_CREATE_VERIFY_MOD_INFO_H__
+
+#include "ctlbsstep.h"
+#include "ctlbsserver.h"
+
+// Literals used
+_LIT(KLbsStep_CreateVerifyModInfo, "LbsStep_CreateVerifyModInfo");
+
+class CT_LbsStep_CreateVerifyModInfo : public CT_LbsStep
+ {
+public:
+ static CT_LbsStep_CreateVerifyModInfo* New(CT_LbsServer& aParent);
+ virtual TVerdict doTestStepL();
+
+private:
+ CT_LbsStep_CreateVerifyModInfo(CT_LbsServer& aParent);
+ };
+
+#endif //__CT_LBS_CREATE_VERIFY_MOD_INFO_H__
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/common/inc/ctlbsstepcreateverifymoduledata.h Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,38 @@
+// 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 ctlbsstepcreateverifymoduledata.h
+// This contains the header file for Server Open Close Test
+//
+//
+
+#ifndef __CT_LBS_CREATE_VERIFY_MODULE_DATA_H__
+#define __CT_LBS_CREATE_VERIFY_MODULE_DATA_H__
+
+#include "ctlbsstep.h"
+#include "ctlbsserver.h"
+
+// Literals used
+_LIT(KLbsStep_CreateVerifyModuleData, "LbsStep_CreateVerifyModuleData");
+
+class CT_LbsStep_CreateVerifyModuleData : public CT_LbsStep
+ {
+public:
+ static CT_LbsStep_CreateVerifyModuleData* New(CT_LbsServer& aParent);
+ virtual TVerdict doTestStepL();
+
+private:
+ CT_LbsStep_CreateVerifyModuleData(CT_LbsServer& aParent);
+ };
+
+#endif //__CT_LBS_CREATE_VERIFY_MODULE_DATA_H__
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/common/inc/ctlbsstepcreateverifyposinfos.h Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,38 @@
+// 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 CT_LbsStep_VerifyPosInfos.h
+// This contains the header file for Server Open Close Test
+//
+//
+
+#ifndef __CT_LBS_CREATE_VERIFY_POS_INFOS_H__
+#define __CT_LBS_CREATE_VERIFY_POS_INFOS_H__
+
+#include "ctlbsstep.h"
+#include "ctlbsserver.h"
+
+// Literals used
+_LIT(KLbsStep_CreateVerifyPosInfos, "LbsStep_CreateVerifyPosInfos");
+
+class CT_LbsStep_CreateVerifyPosInfos : public CT_LbsStep
+ {
+public:
+ static CT_LbsStep_CreateVerifyPosInfos* New(CT_LbsServer& aParent);
+ virtual TVerdict doTestStepL();
+
+private:
+ CT_LbsStep_CreateVerifyPosInfos(CT_LbsServer& aParent);
+ };
+
+#endif //__CT_LBS_CREATE_VERIFY_POS_INFOS_H__
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/common/inc/ctlbsstepinstallscheduler.h Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,45 @@
+// 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 CT_LbsStep_InstallScheduler.h
+// This contains the header file for Install Active Scheduler Test Step
+//
+//
+
+
+
+/**
+ @file
+ @internalTechnology
+ @test
+*/
+
+#ifndef __CT_LBS_STEP_INSTALL_SCHEDULER_H__
+#define __CT_LBS_STEP_INSTALL_SCHEDULER_H__
+
+#include "ctlbsstep.h"
+#include "ctlbsserver.h"
+
+_LIT(KLbsStep_InstallScheduler, "LbsStep_InstallScheduler");
+
+class CT_LbsStep_InstallScheduler : public CT_LbsStep
+ {
+public:
+ static CT_LbsStep_InstallScheduler* New(CT_LbsServer& aParent);
+ TVerdict doTestStepL();
+
+private:
+ CT_LbsStep_InstallScheduler(CT_LbsServer& aParent);
+ };
+
+#endif // __CT_LBS_STEP_INSTALL_SCHEDULER_H__
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/common/inc/ctlbsstepresetdefaultadmin.h Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,47 @@
+// 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 CT_LbsStep_ResetDefaultAdmin.h
+// This contains the header file for Reset Default Admin Settings Test Step
+//
+//
+
+
+
+/**
+ @file
+ @internalTechnology
+ @test
+*/
+
+#ifndef __CT_LBS_STEP_RESET_DEFAULT_ADMIN_H__
+#define __CT_LBS_STEP_RESET_DEFAULT_ADMIN_H__
+
+#include "ctlbsstep.h"
+#include "ctlbsserver.h"
+
+_LIT(KLbsStep_ResetDefaultAdmin, "LbsStep_ResetDefaultAdmin");
+
+class CT_LbsStep_ResetDefaultAdmin : public CT_LbsStep
+ {
+public:
+ static CT_LbsStep_ResetDefaultAdmin* New(CT_LbsServer& aParent);
+ TVerdict doTestStepL();
+
+private:
+ CT_LbsStep_ResetDefaultAdmin(CT_LbsServer& aParent);
+
+
+ };
+
+#endif // __CT_LBS_STEP_RESET_DEFAULT_ADMIN_H__
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/common/inc/ctlbsstepsetatamode.h Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,48 @@
+// 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 CT_LbsStep_SetATAMode.h
+// This contains the header file for Set Autonomous Mode Test Step
+//
+//
+
+
+
+/**
+ @file
+ @internalTechnology
+ @test
+*/
+
+#ifndef __CT_LBS_STEP_SET_ATA_MODE_H__
+#define __CT_LBS_STEP_SET_ATA_MODE_H__
+
+#include "ctlbsstep.h"
+#include "ctlbsserver.h"
+
+_LIT(KLbsStep_SetATAMode, "LbsStep_SetATAMode");
+
+class CT_LbsStep_SetATAMode: public CT_LbsStep
+ {
+public:
+ static CT_LbsStep_SetATAMode* New(CT_LbsServer& aParent);
+ TVerdict doTestStepL();
+
+private:
+ CT_LbsStep_SetATAMode(CT_LbsServer& aParent);
+
+ TBool SetAndVerifyATAModeL();
+
+ };
+
+#endif // __CT_LBS_STEP_SET_ATA_MODE_H__
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/common/inc/ctlbsstepsetautonomousmode.h Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,48 @@
+// 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 CT_LbsStep_SetAutonomousMode.h
+// This contains the header file for Set Autonomous Mode Test Step
+//
+//
+
+
+
+/**
+ @file
+ @internalTechnology
+ @test
+*/
+
+#ifndef __CT_LBS_STEP_SET_AUTONOMOUS_MODE_H__
+#define __CT_LBS_STEP_SET_AUTONOMOUS_MODE_H__
+
+#include "ctlbsstep.h"
+#include "ctlbsserver.h"
+
+_LIT(KLbsStep_SetAutonomousMode, "LbsStep_SetAutonomousMode");
+
+class CT_LbsStep_SetAutonomousMode : public CT_LbsStep
+ {
+public:
+ static CT_LbsStep_SetAutonomousMode* New(CT_LbsServer& aParent);
+ TVerdict doTestStepL();
+
+private:
+ CT_LbsStep_SetAutonomousMode(CT_LbsServer& aParent);
+
+ TBool SetAndVerifyAutonomousGpsModeL();
+
+ };
+
+#endif // __CT_LBS_STEP_SET_AUTONOMOUS_MODE_H__
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/common/inc/ctlbsstepsetbehaviourmodeoriginal.h Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,48 @@
+// 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 CT_LbsStep_SetBehaviourModeOriginal.h
+// This contains the header file for Set Autonomous Mode Test Step
+//
+//
+
+
+
+/**
+ @file
+ @internalTechnology
+ @test
+*/
+
+#ifndef __CT_LBS_STEP_SET_BEHAVIOUR_ORIGINAL_MODE_H__
+#define __CT_LBS_STEP_SET_BEHAVIOUR_ORIGINAL_MODE_H__
+
+#include "ctlbsstep.h"
+#include "ctlbsserver.h"
+
+_LIT(KLbsStep_SetBehaviourModeOriginal, "LbsStep_SetBehaviourModeOriginal");
+
+class CT_LbsStep_SetBehaviourModeOriginal: public CT_LbsStep
+ {
+public:
+ static CT_LbsStep_SetBehaviourModeOriginal* New(CT_LbsServer& aParent);
+ TVerdict doTestStepL();
+
+private:
+ CT_LbsStep_SetBehaviourModeOriginal(CT_LbsServer& aParent);
+
+ TBool SetAndVerifyBehaviourModeOriginalL();
+
+ };
+
+#endif // __CT_LBS_STEP_SET_BEHAVIOUR_ORIGINAL_MODE_H__
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/common/inc/ctlbsstepsetprivhandler.h Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,49 @@
+// 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 CTLbsStepSetPrivHandler.h
+// This contains the header file for Set Privacy Controller Test Step
+//
+//
+
+
+
+/**
+ @file
+ @internalTechnology
+ @test
+*/
+
+#ifndef __CT_LBS_STEP_SET_PRIVACY_HANDLER_H__
+#define __CT_LBS_STEP_SET_PRIVACY_HANDLER_H__
+
+#include "ctlbsstep.h"
+#include "ctlbsserver.h"
+#include <lbsadmin.h>
+
+_LIT(KLbsStep_SetPrivacyHandler, "LbsStep_SetPrivacyHandler");
+
+class CT_LbsStep_SetPrivacyHandler : public CT_LbsStep
+ {
+public:
+ static CT_LbsStep_SetPrivacyHandler* New(CT_LbsServer& aParent);
+ TVerdict doTestStepL();
+
+private:
+ CT_LbsStep_SetPrivacyHandler(CT_LbsServer& aParent);
+
+ TBool SetAndVerifyPrivacyHandlerL(CLbsAdmin::TPrivacyHandler aPrivacyHandlerType);
+
+ };
+
+#endif // __CT_LBS_STEP_SET_PRIVACY_HANDLER_H__
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/common/inc/ctlbsstepsetptamode.h Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,48 @@
+// 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 CT_LbsStep_SetPTAMode.h
+// This contains the header file for Set Autonomous Mode Test Step
+//
+//
+
+
+
+/**
+ @file
+ @internalTechnology
+ @test
+*/
+
+#ifndef __CT_LBS_STEP_SET_PTA_MODE_H__
+#define __CT_LBS_STEP_SET_PTA_MODE_H__
+
+#include "ctlbsstep.h"
+#include "ctlbsserver.h"
+
+_LIT(KLbsStep_SetPTAMode, "LbsStep_SetPTAMode");
+
+class CT_LbsStep_SetPTAMode: public CT_LbsStep
+ {
+public:
+ static CT_LbsStep_SetPTAMode* New(CT_LbsServer& aParent);
+ TVerdict doTestStepL();
+
+private:
+ CT_LbsStep_SetPTAMode(CT_LbsServer& aParent);
+
+ TBool SetAndVerifyPTAModeL();
+
+ };
+
+#endif // __CT_LBS_STEP_SET_PTA_MODE_H__
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/common/inc/ctlbsstepsetptbmode.h Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,48 @@
+// 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 CT_LbsStep_SetPTBMode.h
+// This contains the header file for Set Autonomous Mode Test Step
+//
+//
+
+
+
+/**
+ @file
+ @internalTechnology
+ @test
+*/
+
+#ifndef __CT_LBS_STEP_SET_PTB_MODE_H__
+#define __CT_LBS_STEP_SET_PTB_MODE_H__
+
+#include "ctlbsstep.h"
+#include "ctlbsserver.h"
+
+_LIT(KLbsStep_SetPTBMode, "LbsStep_SetPTBMode");
+
+class CT_LbsStep_SetPTBMode: public CT_LbsStep
+ {
+public:
+ static CT_LbsStep_SetPTBMode* New(CT_LbsServer& aParent);
+ TVerdict doTestStepL();
+
+private:
+ CT_LbsStep_SetPTBMode(CT_LbsServer& aParent);
+
+ TBool SetAndVerifyPTBModeL();
+
+ };
+
+#endif // __CT_LBS_STEP_SET_PTB_MODE_H__
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/common/inc/ctlbsstepsetupprotocolstub.h Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,45 @@
+// 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 CT_LbsStep_SetupProtocolStub.h
+// This contains the header file for Set Autonomous Mode Test Step
+//
+//
+
+
+
+/**
+ @file
+ @internalTechnology
+ @test
+*/
+
+#ifndef __CT_LBS_STEP_SETUP_PROTOCOL_STUB_H__
+#define __CT_LBS_STEP_SETUP_PROTOCOL_STUB_H__
+
+#include "ctlbsstep.h"
+#include "ctlbsserver.h"
+
+_LIT(KLbsStep_SetupProtocolStub, "LbsStep_SetupProtocolStub");
+
+class CT_LbsStep_SetupProtocolStub : public CT_LbsStep
+ {
+public:
+ static CT_LbsStep_SetupProtocolStub* New(CT_LbsServer& aParent);
+ TVerdict doTestStepL();
+
+private:
+ CT_LbsStep_SetupProtocolStub(CT_LbsServer& aParent);
+ };
+
+#endif // __CT_LBS_STEP_SETUP_PROTOCOL_STUB_H__
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/common/inc/ctlbsstepsetuproamselflocate.h Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,45 @@
+// 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 CT_LbsStep_SetupRoamSelfLocate.h
+// This contains the header file for Set Autonomous Mode Test Step
+//
+//
+
+
+
+/**
+ @file
+ @internalTechnology
+ @test
+*/
+
+#ifndef __CT_LBS_STEP_SETUP_ROAM_SELF_LOCATE_H__
+#define __CT_LBS_STEP_SETUP_ROAM_SELF_LOCATE_H__
+
+#include "ctlbsstep.h"
+#include "ctlbsserver.h"
+
+_LIT(KLbsStep_SetupRoamSelfLocate, "LbsStep_SetupRoamSelfLocate");
+
+class CT_LbsStep_SetupRoamSelfLocate : public CT_LbsStep
+ {
+public:
+ static CT_LbsStep_SetupRoamSelfLocate* New(CT_LbsServer& aParent);
+ TVerdict doTestStepL();
+
+private:
+ CT_LbsStep_SetupRoamSelfLocate(CT_LbsServer& aParent);
+ };
+
+#endif // __CT_LBS_STEP_SETUP_ROAM_SELF_LOCATE_H__
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/common/inc/ctlbsstepsetupstandaloneprivacyandsimplectlr.h Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,47 @@
+// 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 ctlbsstepsetupstandaloneprivacyandsimplectlr.h
+// This contains the header file for Set Autonomous Mode Test Step
+//
+//
+
+
+
+/**
+ @file
+ @internalTechnology
+ @test
+*/
+
+#ifndef __CT_LBS_STEP_SETUP_STANDALONE_PRIVACY_AND_SIMPLE_CTRL_H__
+#define __CT_LBS_STEP_SETUP_STANDALONE_PRIVACY_AND_SIMPLE_CTRL_H__
+
+#include "ctlbsstep.h"
+#include "ctlbsserver.h"
+
+_LIT(KLbsStep_SetupStandalonePrivacyAndSimpleCtlr, "LbsStep_SetupStandalonePrivacyAndSimpleCtlr");
+
+
+
+class CT_LbsStep_SetupStandalonePrivacyAndSimpleCtlr : public CT_LbsStep
+ {
+public:
+ static CT_LbsStep_SetupStandalonePrivacyAndSimpleCtlr* New(CT_LbsServer& aParent);
+ TVerdict doTestStepL();
+
+private:
+ CT_LbsStep_SetupStandalonePrivacyAndSimpleCtlr(CT_LbsServer& aParent);
+ };
+
+#endif // __CT_LBS_STEP_SETUP_STANDALONE_PRIVACY_AND_SIMPLE_CTRL_H__
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/common/inc/ctlbsstepsetupstandaloneprivacymode.h Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,59 @@
+// 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 CT_LbsStep_SetupStandalonePrivacyMode.h
+// This contains the header file for Set Autonomous Mode Test Step
+//
+//
+
+
+
+/**
+ @file
+ @internalTechnology
+ @test
+*/
+
+#ifndef __CT_LBS_STEP_SETUP_STANDALONE_PRIVACY_MODE_H__
+#define __CT_LBS_STEP_SETUP_STANDALONE_PRIVACY_MODE_H__
+
+#include "ctlbsstep.h"
+#include "ctlbsserver.h"
+
+_LIT(KLbsStep_SetupStandalonePrivacyMode, "LbsStep_SetupStandalonePrivacyMode");
+
+// lbsroot stuff (not ideal, currently defined in internal header file lbsrootcenrepdefs.h
+const TUint KLbsCenRepUidValue = 0x10282266;
+const TUid KLbsCenRepUid = {KLbsCenRepUidValue};
+
+const TUint32 KLbsRootProcessNameFirstKey = 0x00001000;
+const TUint32 KLbsRootProcessUidFirstKey = 0x00002000;
+const TUint32 KLbsRootProcessIsServerFirstKey = 0x00003000;
+
+const TUint32 KLbsSystemTransientKey = 0x00000001;
+const TUint32 KLbsRootProcessTransientKey = 0x00000002;
+
+const TUint32 KRootKeyMask = 0xFFFFF000; // don't care what the last 3 digits are
+
+
+class CT_LbsStep_SetupStandalonePrivacyMode : public CT_LbsStep
+ {
+public:
+ static CT_LbsStep_SetupStandalonePrivacyMode* New(CT_LbsServer& aParent);
+ TVerdict doTestStepL();
+
+private:
+ CT_LbsStep_SetupStandalonePrivacyMode(CT_LbsServer& aParent);
+ };
+
+#endif // __CT_LBS_STEP_SETUP_STANDALONE_PRIVACY_MODE_H__
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/common/inc/ctlbsstepsetupstandaloneprivacywithnoctlr.h Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,47 @@
+// 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 ctlbsstepsetupstandaloneprivacywithnoctlr.h
+// This contains the header file for Set Autonomous Mode Test Step
+//
+//
+
+
+
+/**
+ @file
+ @internalTechnology
+ @test
+*/
+
+#ifndef __CT_LBS_STEP_SETUP_STANDALONE_PRIVACY_WITH_NO_CTRL_H__
+#define __CT_LBS_STEP_SETUP_STANDALONE_PRIVACY_WITH_NO_CTRL_H__
+
+#include "ctlbsstep.h"
+#include "ctlbsserver.h"
+
+_LIT(KLbsStep_SetupStandalonePrivacyWithNoCtlr, "LbsStep_SetupStandalonePrivacyWithNoCtlr");
+
+
+
+class CT_LbsStep_SetupStandalonePrivacyWithNoCtlr : public CT_LbsStep
+ {
+public:
+ static CT_LbsStep_SetupStandalonePrivacyWithNoCtlr* New(CT_LbsServer& aParent);
+ TVerdict doTestStepL();
+
+private:
+ CT_LbsStep_SetupStandalonePrivacyWithNoCtlr(CT_LbsServer& aParent);
+ };
+
+#endif // __CT_LBS_STEP_SETUP_STANDALONE_PRIVACY_WITH_NO_CTRL_H__
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/common/inc/ctlbsstepstartlbs.h Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,45 @@
+// 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 ctlbsstartlbs.h
+// This contains the header file for step to start lbs system
+//
+//
+
+#ifndef __CT_LBS_STEP_START_LBS_H__
+#define __CT_LBS_STEP_START_LBS_H__
+
+// LBS includes.
+
+// LBS test includes.
+#include "ctlbsstep.h"
+
+const TUint KLbsTestDataSrcServerUidValue = 0x10282259;
+
+// Literals used
+_LIT(KLbsStep_StartLbs, "LbsStep_StartLbs");
+
+
+class CT_LbsStep_StartLbs : public CT_LbsStep
+ {
+public:
+ ~CT_LbsStep_StartLbs();
+
+ static CT_LbsStep_StartLbs* New(CT_LbsServer& aParent);
+ virtual TVerdict doTestStepL();
+
+private:
+ CT_LbsStep_StartLbs(CT_LbsServer& aParent);
+ };
+
+#endif //__CT_LBS_STEP_START_H__
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/common/inc/ctlbsstepstoplbs.h Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,44 @@
+// 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 ctlbsstartlbs.h
+// This contains the header file for step to start lbs system
+//
+//
+
+#ifndef __CT_LBS_STEP_STOP_LBS_H__
+#define __CT_LBS_STEP_STOP_LBS_H__
+
+// LBS includes.
+
+// LBS test includes.
+#include "ctlbsstep.h"
+
+
+// Literals used
+_LIT(KLbsStep_StopLbs, "LbsStep_StopLbs");
+
+
+class CT_LbsStep_StopLbs : public CT_LbsStep
+ {
+public:
+ ~CT_LbsStep_StopLbs();
+
+ static CT_LbsStep_StopLbs* New(CT_LbsServer& aParent);
+ virtual TVerdict doTestStepL();
+
+private:
+ CT_LbsStep_StopLbs(CT_LbsServer& aParent);
+ };
+
+#endif //__CT_LBS_STEP_STOP_H__
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/common/inc/ctlbsstepverifyloginfo.h Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,163 @@
+// 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 ctlbsstepverifyloginfo.h
+// This contains the header file for verify position info array test step.
+//
+//
+
+#ifndef __CT_LBS_VERIFY_LOG_INFO_H__
+#define __CT_LBS_VERIFY_LOG_INFO_H__
+
+#include "ctlbsstep.h"
+#include "ctlbsserver.h"
+
+// From test implementation
+#include "lbstransmitlocationlogevent.h"
+//#include "Te_LbsLoggingSuiteStepBase.h"
+
+#include "lbslogger.h"
+#include <logcli.h>
+#include <logview.h>
+#include <logwrap.h>
+
+#include "tlbsutils.h"
+#include "ctlbsasyncwaiter.h"
+
+// Includes for Log Comparison
+#include <lbslogevent.h>
+#include <lbsselflocatelogevent.h>
+#include <lbsexternallocatelogevent.h>
+#include <lbstransmitlocationlogevent.h>
+#include <lbsnetworklocatelogevent.h>
+#include <lbsassistancedatalogevent.h>
+
+// Literals used
+_LIT(KLbsStep_VerifyLogInfo, "LbsStep_VerifyLogInfo");
+_LIT(KDest, "07712345678");
+
+#define REFPOS_LAT 52.2
+#define REFPOS_LONG 0.2
+#define REFPOS_ALT 10
+#define REFPOS_HORZ_ACCURACY 100
+#define REFPOS_VERT_ACCURACY 100
+
+#define REFPOS_LAT_OTHER 49.2
+#define REFPOS_LONG_OTHER 3.5
+#define REFPOS_ALT_OTHER 50.0
+#define REFPOS_HORZ_ACCURACY_OTHER 2.0
+#define REFPOS_VERT_ACCURACY_OTHER 3.0
+
+class CT_LbsStep_VerifyLogInfo : public CT_LbsStep
+ {
+public:
+ static CT_LbsStep_VerifyLogInfo* New(CT_LbsServer& aParent);
+ static CT_LbsStep_VerifyLogInfo* NewL(CT_LbsServer& aParent);
+ ~CT_LbsStep_VerifyLogInfo();
+ CT_LbsStep_VerifyLogInfo();
+
+ TVerdict doTestStepPreambleL();
+ TVerdict doTestStepPostambleL();
+
+
+ virtual TVerdict doTestStepL();
+ static TInt SelfLocateLogEventTimestampCompare(const CLbsSelfLocateLogEvent& aLog1,
+ const CLbsSelfLocateLogEvent& aLog2);
+
+
+ enum TLogType
+ {
+ /** Logging an Autonomous self Locate location request 3.3.1 */
+ EAutonomousSelfLocateRequest = 0,
+
+ /** Logging an MO-LR Self Locate location request 3.3.2 */
+ EMOLRSelfLocateRequest,
+
+ /** Logging an MO-LR Cell Based location request 3.3.3 */
+ EMOLRCellBasedLocationRequest,
+
+ /** Logging an MO-LR Transmit to 3rd Party Location 3.3.4 */
+ EMOLRTransmitTo3rdPartyLocationRequest,
+
+ /** Logging a Mobile Terminated Location Request 3.3.5 */
+ EMTLR,
+
+ /** Logging MO-LR Tracking Location Requests 3.3.6 */
+ EMOLRTrackingLocationRequest,
+
+ /** Logging Autonomous Tracking Location Requests 3.3.7 */
+ EAutonomousTrackingLocationRequest,
+
+ /** Update an existing Event log entry 3.3.8 */
+ EUpdateExistingEventLogEntry,
+
+ };
+
+
+private:
+ CT_LbsStep_VerifyLogInfo(CT_LbsServer& aParent);
+
+ TVerdict ReadFromLogL(TInt aUidForTheLogType);
+ void ClearLog();
+ void InitialiseRHS();
+ void InitialiseRHSforMTLR();
+ TPositionInfo* CommonPositionInfo();
+
+ //5 log type test mechanisms
+ void SelfLocateLogTest();
+ void NetworkLocateLogTest();
+ void ExternalLocateLogTest();
+ void X3PLocateLogTest();
+ void AssistanceDataLogTest();
+
+ //Top level functionality
+ void AutonomousSelfLocateLogTest();
+ void MOLRSelfLocateRequest();
+ void MOLRCellBasedLocationRequest();
+ void MOLRTransmitTo3rdPartyLocationRequest();
+ void MTLR();
+ void MOLRTrackingLocationRequest();
+ void AutonomousTrackingLocationRequest();
+ void SecondPositionFromArray(TPositionInfo* aPosInfoSecond);
+
+
+ TInt iLogType; // Can be defined in ENums
+ T_LbsUtils iUtils;
+
+ // Member variables for Log reading
+ RFs itheFs;
+ CLogClient* iclient;
+ CLogViewEvent* iview;
+ CT_LbsAsyncWaiter* iActiveWaiter;
+ TPositionInfo* iRefPosTwo;
+
+ // Right hand sides of comparisons
+ CLbsSelfLocateLogEvent* iSelfLocateLogIntiailisedFromValues;
+ CLbsExternalLocateLogEvent* iExternalLocateLogIntiailisedFromValues;
+ CLbsTransmitLocationLogEvent* iX3PLogIntiailisedFromValues;
+ CLbsNetworkLocateLogEvent* iNetworkLocateLogIntiailisedFromValues;
+ CLbsAssistanceDataLogEvent* iAssistanceDataLogIntiailisedFromValuesFirst;
+
+
+ // Comparison accuracy
+ T_LbsUtils::TComparisonAccuracyType iWhatAccuracyToUse;
+
+
+
+
+protected:
+ void ConstructL();
+
+ };
+
+#endif //__CT_LBS_VERIFY_LOG_INFO_H__
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/common/inc/ctlbsstepverifymodinfo.h Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,38 @@
+// 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 ctlbsstepmodinfo.h
+// This contains the header file for verify module information test step.
+//
+//
+
+#ifndef __CT_LBS_VERIFY_MOD_INFO_H__
+#define __CT_LBS_VERIFY_MOD_INFO_H__
+
+#include "ctlbsstep.h"
+#include "ctlbsserver.h"
+
+// Literals used
+_LIT(KLbsStep_VerifyModInfo, "LbsStep_VerifyModInfo");
+
+class CT_LbsStep_VerifyModInfo : public CT_LbsStep
+ {
+public:
+ static CT_LbsStep_VerifyModInfo* New(CT_LbsServer& aParent);
+ virtual TVerdict doTestStepL();
+
+private:
+ CT_LbsStep_VerifyModInfo(CT_LbsServer& aParent);
+ };
+
+#endif //__CT_LBS_VERIFY_MOD_INFO_H__
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/common/inc/ctlbsstepverifymodstatus.h Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,38 @@
+// 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 ctlbsclientstepmodinfo.h
+// This contains the header file for verify module information test step.
+//
+//
+
+#ifndef __CT_LBS_VERIFY_MOD_STATUS_H__
+#define __CT_LBS_VERIFY_MOD_STATUS_H__
+
+#include "ctlbsstep.h"
+#include "ctlbsserver.h"
+
+// Literals used
+_LIT(KLbsStep_VerifyModuleStatus, "LbsStep_VerifyModuleStatus");
+
+class CT_LbsStep_VerifyModStatus : public CT_LbsStep
+ {
+public:
+ static CT_LbsStep_VerifyModStatus* New(CT_LbsServer& aParent);
+ virtual TVerdict doTestStepL();
+
+private:
+ CT_LbsStep_VerifyModStatus(CT_LbsServer& aParent);
+ };
+
+#endif //__CT_LBS_VERIFY_MOD_STATUS_H__
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/common/inc/ctlbsstepverifyposinfos.h Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,38 @@
+// 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 CT_LbsStep_VerifyPosInfos.h
+// This contains the header file for verify position info array test step.
+//
+//
+
+#ifndef __CT_LBS_VERIFY_POS_INFOS_H__
+#define __CT_LBS_VERIFY_POS_INFOS_H__
+
+#include "ctlbsstep.h"
+#include "ctlbsserver.h"
+
+// Literals used
+_LIT(KLbsStep_VerifyPosInfos, "LbsStep_VerifyPosInfos");
+
+class CT_LbsStep_VerifyPosInfos : public CT_LbsStep
+ {
+public:
+ static CT_LbsStep_VerifyPosInfos* New(CT_LbsServer& aParent);
+ virtual TVerdict doTestStepL();
+
+private:
+ CT_LbsStep_VerifyPosInfos(CT_LbsServer& aParent);
+ };
+
+#endif //__CT_LBS_VERIFY_POS_INFOS_H__
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/common/inc/ctlbsstepverifyroughposinfos.h Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,38 @@
+// 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 CT_LbsStep_VerifyPosInfos.h
+// This contains the header file for verify position info array test step.
+//
+//
+
+#ifndef __CT_LBS_VERIFY_ROUGH_POS_INFOS_H__
+#define __CT_LBS_VERIFY_ROUGH_POS_INFOS_H__
+
+#include "ctlbsstep.h"
+#include "ctlbsserver.h"
+
+// Literals used
+_LIT(KLbsStep_VerifyRoughPosInfos, "LbsStep_VerifyRoughPosInfos");
+
+class CT_LbsStep_VerifyRoughPosInfos : public CT_LbsStep
+ {
+public:
+ static CT_LbsStep_VerifyRoughPosInfos* New(CT_LbsServer& aParent);
+ virtual TVerdict doTestStepL();
+
+private:
+ CT_LbsStep_VerifyRoughPosInfos(CT_LbsServer& aParent);
+ };
+
+#endif //__CT_LBS_VERIFY_ROUGH_POS_INFOS_H__
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/common/inc/mctlbsrequestobserver.h Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,43 @@
+/*
+* Copyright (c) 2001-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:
+*
+*/
+
+
+
+
+#ifndef __MCT_LBS_REQUEST_OBSERVER_H__
+#define __MCT_LBS_REQUEST_OBSERVER_H__
+
+// CLASS DECLARATION
+
+/**
+* Interface for notification when a CRequester request is complete.
+*
+*/
+class MCT_LbsRequestObserver
+ {
+ public:
+
+ /**
+ * Called when a CRequester request has completed.
+ */
+ virtual void RequestCompleteL() = 0;
+
+ };
+
+#endif // __MCT_LBS_REQUEST_OBSERVER_H__
+
+// End of File
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/common/src/ctlbsactiveyield.cpp Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,80 @@
+// Copyright (c) 2007-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:
+// Common utils used by hybrid plugin tests
+//
+//
+
+
+
+/**
+ @file ctlbsactiveyield.cpp
+*/
+
+#include <e32base.h>
+#include <e32std.h>
+
+#include <testexecutestepbase.h>
+
+
+void CheckForObserverEventTestsL(TTimeIntervalMicroSeconds32 aTimeout, CTestStep& aStep)
+ {
+ class CTimeout : public CTimer
+ {
+ CTestStep& iStep;
+
+ void RunL()
+ {
+ iStep.SetTestStepError(KErrTimedOut);
+ CActiveScheduler::Stop();
+ }
+
+ CTimeout(CTestStep& aTestStep) : CTimer(EPriorityLow), iStep(aTestStep) { ; }
+
+ public:
+ static CTimeout* NewL(CTestStep& aTestStep)
+ {
+ CTimeout* p = new (ELeave) CTimeout(aTestStep);
+ CleanupStack::PushL(p);
+ p->ConstructL();
+ CActiveScheduler::Add(p);
+ CleanupStack::Pop(p);
+ return p;
+ }
+ };
+
+ CTimeout *pTimeout = CTimeout::NewL(aStep);
+ pTimeout->After(aTimeout);
+
+ CActiveScheduler::Start();
+
+ if(pTimeout->iStatus == KRequestPending)
+ {
+ pTimeout->Cancel();
+// User::WaitForRequest(pTimeout->iStatus);
+ }
+
+ pTimeout->Deque();
+ delete pTimeout;
+
+ if(EPass != aStep.TestStepResult())
+ {
+ User::Leave(aStep.TestStepResult());
+ }
+ }
+
+
+void ReturnToTestStep()
+ {
+ CActiveScheduler::Stop();
+ }
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/common/src/ctlbsclientlog.cpp Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,69 @@
+// Copyright (c) 2001-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:
+//
+
+
+
+// INCLUDE FILES
+#include "ctlbsclientlog.h"
+#include <bautils.h>
+
+// CONSTANTS
+
+// ================= MEMBER FUNCTIONS =======================
+
+// C++ default constructor can NOT contain any code, that
+// might leave.
+//
+CT_LbsClientLog::CT_LbsClientLog()
+ {
+ }
+
+// EPOC default constructor can leave.
+void CT_LbsClientLog::ConstructL(CTestExecuteLogger& aLogger)
+ {
+ iLogger = aLogger;
+ }
+
+// Two-phased constructor.
+EXPORT_C CT_LbsClientLog* CT_LbsClientLog::NewL(CTestExecuteLogger& aLogger)
+ {
+ CT_LbsClientLog* self = NewLC(aLogger);
+ CleanupStack::Pop();
+ return self;
+ }
+
+// Two-phased constructor.
+EXPORT_C CT_LbsClientLog* CT_LbsClientLog::NewLC(CTestExecuteLogger& aLogger)
+ {
+ CT_LbsClientLog* self = new (ELeave) CT_LbsClientLog;
+ CleanupStack::PushL(self);
+ self->ConstructL(aLogger);
+ return self;
+ }
+
+// Destructor
+CT_LbsClientLog::~CT_LbsClientLog()
+ {
+ }
+
+void CT_LbsClientLog::Put(const TDesC& aLine)
+ {
+ INFO_PRINTF1(aLine);
+ }
+
+void CT_LbsClientLog::PutError(const TDesC& aLine)
+ {
+ ERR_PRINTF1(aLine);
+ }
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/common/src/ctlbsclientrequestor.cpp Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,274 @@
+// Copyright (c) 2001-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:
+//
+
+
+
+// INCLUDE FILES
+#include "ctlbsportedstepbase.h"
+#include "ctlbsclientrequestor.h"
+#include "mctlbsrequestobserver.h"
+
+// CONSTANTS
+
+// ================= MEMBER FUNCTIONS =======================
+
+// Two-phased constructor.
+CT_LbsClientRequestor* CT_LbsClientRequestor::NewL(
+ TUid aPsyUid,
+ MCT_LbsRequestObserver* aObserver,
+ const TDesC& aClientName,
+ CTestExecuteLogger& aLogger
+ )
+ {
+ CT_LbsClientRequestor* self = new (ELeave) CT_LbsClientRequestor(aObserver, aPsyUid);
+ CleanupStack::PushL(self);
+ self->ConstructL(aClientName, aLogger);
+ CleanupStack::Pop();
+ return self;
+ }
+
+// Destructor
+CT_LbsClientRequestor::~CT_LbsClientRequestor()
+ {
+ iObserver = NULL;
+ Cancel();
+ iPosServer.Close();
+ }
+
+// C++ default constructor can NOT contain any code, that
+// might leave.
+//
+CT_LbsClientRequestor::CT_LbsClientRequestor(
+ MCT_LbsRequestObserver* aObserver,
+ TUid aPsyUid)
+ : CActive(EPriorityStandard), iObserver(aObserver), iCompletionCode(KNoEvent),
+ iPsyUid(aPsyUid), iContinueEventRequesting(FALSE)
+ {
+ }
+
+// EPOC default constructor can leave.
+void CT_LbsClientRequestor::ConstructL(
+ const TDesC& aClientName,
+ CTestExecuteLogger& aLogger
+ )
+ {
+ iName = aClientName;
+ iLogger = aLogger;
+ User::LeaveIfError(iPosServer.Connect());
+ iModuleInfo = TPositionInfo();
+ CActiveScheduler::Add(this);
+ }
+
+// ---------------------------------------------------------
+// CRequester::CompletionTimeUTC
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+const TTime& CT_LbsClientRequestor::CompletionTimeUTC() const
+ {
+ return iCompletionTimeUTC;
+ }
+
+// ---------------------------------------------------------
+// CRequester::CompletionCode
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+TInt CT_LbsClientRequestor::CompletionCode() const
+ {
+ return iCompletionCode;
+ }
+
+// ---------------------------------------------------------
+// CT_LbsClientRequestor::ResetCompletionCode
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CT_LbsClientRequestor::ResetCompletionCode()
+ {
+ iCompletionCode = KNoEvent;
+ }
+
+// ---------------------------------------------------------
+// CRequester::StartRequest
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CT_LbsClientRequestor::StartRequestL(TBool aDefaultPsy)
+ {
+ _LIT(KService, "SAAA");
+ if (aDefaultPsy == FALSE)
+ {
+ User::LeaveIfError(iPositioner.Open(iPosServer, iPsyUid));
+ }
+ else
+ {
+ User::LeaveIfError(iPositioner.Open(iPosServer));
+ }
+
+
+ iPositioner.SetRequestor(CRequestor::ERequestorService,
+ CRequestor::EFormatApplication,
+ KService);
+
+ iPositioner.NotifyPositionUpdate(iModuleInfo, iStatus);
+ SetActive();
+ }
+
+// ---------------------------------------------------------
+// CRequester::RunL
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CT_LbsClientRequestor::RunL()
+ {
+ iCompletionCode = iStatus.Int();
+ RequestComplete();
+ if (iContinueEventRequesting)
+ {
+ iContinueEventRequesting = FALSE;
+ RequestModuleStatusEvent();
+ }
+ }
+
+// ---------------------------------------------------------
+// CT_LbsClientRequestor::DoCancel
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CT_LbsClientRequestor::DoCancel()
+ {
+ iPosServer.CancelRequest(EPositionServerNotifyModuleStatusEvent/*EPositionServerGetModuleStatus*/);
+ }
+
+// ---------------------------------------------------------
+// CT_LbsClientRequestor::RequestComplete
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CT_LbsClientRequestor::RequestComplete()
+ {
+ if (iObserver)
+ {
+ TRAPD(err, iObserver->RequestCompleteL());
+ if(KErrNone != err)
+ {
+ _LIT(KClientRequestor, "Error in LbsClientRequestor: %d");
+ ERR_PRINTF2(KClientRequestor, err);
+ }
+ }
+ }
+
+// ---------------------------------------------------------
+// CT_LbsClientRequestor::RequestModuleStatusEvent
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CT_LbsClientRequestor::RequestModuleStatusEvent()
+ {
+ istatusEvent.SetRequestedEvents(TPositionModuleStatusEvent::EEventAll);
+ iPosServer.NotifyModuleStatusEvent(istatusEvent, iStatus, iPsyUid);
+ if (!IsActive())
+ {
+ SetActive();
+ }
+ }
+
+// ---------------------------------------------------------
+// CT_LbsClientRequestor::CancelModuleStatusEvent
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CT_LbsClientRequestor::CancelModuleStatusEvent()
+ {
+ iPosServer.CancelRequest(EPositionServerGetModuleStatus);
+ }
+
+// ---------------------------------------------------------
+// CT_LbsClientRequestor::ReadModuleStatusEvent
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+TInt CT_LbsClientRequestor::ReadModuleStatusEvent()
+ {
+ TPositionModuleStatus modstatus = TPositionModuleStatus();
+ istatusEvent.GetModuleStatus(modstatus);
+ return modstatus.DeviceStatus();
+ }
+
+// ---------------------------------------------------------
+// CT_LbsClientRequestor::ReadModuleStatusClientApi
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+TInt CT_LbsClientRequestor::ReadModuleStatusClientApi(TPositionModuleId aModuleId)
+ {
+ //Module status from Client API
+ TPositionModuleStatus moduleStatus = TPositionModuleStatus();
+ iPosServer.GetModuleStatus(moduleStatus, aModuleId);
+ return moduleStatus.DeviceStatus();
+ }
+
+// ---------------------------------------------------------
+// CT_LbsClientRequestor::ReadModuleStatusModulesApi
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+TBool CT_LbsClientRequestor::ReadModuleStatusModulesApi(CPosModules* aDb, TPositionModuleId aModuleId)
+ {
+ //Module info from Modules API
+ TPositionModuleInfo moduleInfo;
+ CPosModuleIdList* prioList = aDb->ModuleIdListLC();
+ TInt modnr = prioList->Find(aModuleId);
+ aDb->GetModuleInfoL(prioList->At(modnr), moduleInfo);
+ CleanupStack::PopAndDestroy(prioList);
+ return moduleInfo.IsAvailable();
+ }
+
+// ---------------------------------------------------------
+// CT_LbsClientRequestor::ContinueRequesting
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CT_LbsClientRequestor::ContinueRequesting()
+ {
+ iContinueEventRequesting = TRUE;;
+ }
+
+// ---------------------------------------------------------
+// CT_LbsClientRequestor::ClosePositioner
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CT_LbsClientRequestor::ClosePositioner()
+ {
+ iPositioner.Close();
+ }
+
+// End of File
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/common/src/ctlbsdoposupdate.cpp Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,197 @@
+// 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:
+// ao wrapper around the a-gps mgr function NotifyPositionUpdate
+//
+//
+
+
+
+/**
+ @file ctlbsdoposupd.cpp
+*/
+
+#include "ctlbsdoposupdate.h"
+#include "tlbsutils.h"
+
+
+CT_LbsDoPosUpdate* CT_LbsDoPosUpdate::NewL(MT_LbsDoPosUpdateObserver* aObserver, TPositionModuleInfo::TTechnologyType aTechnologyType)
+/**
+ * 'public constructor' may leave
+ */
+ {
+ TPositionCriteria dummyCritera;
+ CT_LbsDoPosUpdate* doPosUpdate = new(ELeave)CT_LbsDoPosUpdate(aObserver);
+ CleanupStack::PushL(doPosUpdate);
+ doPosUpdate->ConstructL(EOpenSubSessionByModuleId,aTechnologyType,dummyCritera);
+ CleanupStack::Pop(doPosUpdate);
+
+ return doPosUpdate;
+ }
+
+
+CT_LbsDoPosUpdate* CT_LbsDoPosUpdate::NewL(MT_LbsDoPosUpdateObserver* aObserver, const TPositionCriteriaBase& aCriteria)
+/**
+ * 'public constructor' may leave
+ */
+ {
+ TUint dummyTechnologyType = TPositionModuleInfo::ETechnologyUnknown;
+ CT_LbsDoPosUpdate* doPosUpdate = new(ELeave)CT_LbsDoPosUpdate(aObserver);
+ CleanupStack::PushL(doPosUpdate);
+ doPosUpdate->ConstructL(EOpenSubSessionByCriteria,dummyTechnologyType,aCriteria);
+ CleanupStack::Pop(doPosUpdate);
+
+ return doPosUpdate;
+ }
+
+
+CT_LbsDoPosUpdate::CT_LbsDoPosUpdate(MT_LbsDoPosUpdateObserver* aObserver) : CActive(EPriorityStandard), iObserver(aObserver)
+/**
+ * Constructor - will not leave
+ */
+ {
+ CActiveScheduler::Add(this);
+ }
+
+
+void CT_LbsDoPosUpdate::OpenPositioner(TPositionModuleInfo::TTechnologyType aTechnologyType)
+ {
+ // Open the positioner.
+ if(TPositionModuleInfo::ETechnologyUnknown == aTechnologyType) // use default
+ {
+ User::LeaveIfError(iPositioner.Open(iServer));
+ }
+ else if(TPositionModuleInfo::ETechnologyTerminal == aTechnologyType)
+ {
+ T_LbsUtils utils;
+ // Get position using Agps module
+ TPositionModuleId moduleId;
+ moduleId = utils.GetAGpsModuleIdL(iServer);
+ User::LeaveIfError(iPositioner.Open(iServer, moduleId));
+ }
+ else if(TPositionModuleInfo::ETechnologyNetwork == aTechnologyType)
+ {
+ T_LbsUtils utils;
+ // Get position using network module
+ TPositionModuleId moduleId;
+ moduleId = utils.GetNetworkModuleIdL(iServer);
+ User::LeaveIfError(iPositioner.Open(iServer, moduleId));
+ }
+ else
+ {
+ __ASSERT_ALWAYS(EFalse, User::Panic(KCT_LbsDoPosUpdate, KErrNotSupported)); // not supported yet
+ }
+ }
+
+void CT_LbsDoPosUpdate::ClosePositioner(void)
+ {
+ iPositioner.Close();
+ }
+
+void CT_LbsDoPosUpdate::ConnectServer()
+ {
+ User::LeaveIfError(iServer.Connect());
+ }
+
+void CT_LbsDoPosUpdate::CloseServer()
+ {
+ iServer.Close();
+ }
+
+void CT_LbsDoPosUpdate::ConstructL(TOpenSubSessionType aOpenSubSessionType,TPositionModuleInfo::TTechnologyType aTechnologyType, const TPositionCriteriaBase& aCriteria)
+ {
+ // Connect to the LBS self locate server.
+ User::LeaveIfError(iServer.Connect());
+
+ if(aOpenSubSessionType == EOpenSubSessionByModuleId)
+ {
+ OpenPositioner(aTechnologyType);
+ }
+
+ else if(aOpenSubSessionType == EOpenSubSessionByCriteria)
+ {
+ User::LeaveIfError(iPositioner.Open(iServer, aCriteria));
+ }
+
+ // set requester will be removed, don't forget the pushl above
+ User::LeaveIfError(iPositioner.SetRequestor( CRequestor::ERequestorService,
+ CRequestor::EFormatApplication,
+ _L("Tom Tom")));
+
+ }
+
+
+CT_LbsDoPosUpdate::~CT_LbsDoPosUpdate()
+/**
+ * Destructor
+ */
+ {
+ Cancel();
+
+ iPositioner.Close();
+ iServer.Close();
+ }
+
+
+TInt CT_LbsDoPosUpdate::SetOptions(const TPositionUpdateOptionsBase& aPosOption)
+ {
+ return iPositioner.SetUpdateOptions(aPosOption);
+ }
+
+
+void CT_LbsDoPosUpdate::StartL(TPositionInfo& aPosInfo)
+/**
+ * wrapper for async function RLbsPositionUpdates::NotifyPositionUpdate().
+ * Will panic if there's another outstanding request.
+ */
+ {
+ __ASSERT_ALWAYS(!IsActive(), User::Panic(KCT_LbsDoPosUpdate, KErrInUse));
+
+ // Invoke the position update.
+ iPositioner.NotifyPositionUpdate(aPosInfo, iStatus);
+ SetActive();
+ }
+
+void CT_LbsDoPosUpdate::CancelRequest()
+ {
+ // To allow us to cancel the request but not the active object, normally Cancel() would be used.
+ DoCancel();
+ }
+
+void CT_LbsDoPosUpdate::DoCancel()
+ {
+ iPositioner.CancelRequest(EPositionerNotifyPositionUpdate);
+ }
+
+
+void CT_LbsDoPosUpdate::RunL()
+ {
+ TInt err = iStatus.Int();
+
+ // iStatus will contain error code
+ // async request completed. Notify caller via callback:
+ if (iObserver)
+ {
+ iObserver->MT_LbsDoPosUpdateCallback(iStatus);
+ }
+ }
+
+TInt CT_LbsDoPosUpdate::RunError(TInt aError)
+ {
+ return aError;
+ }
+
+TInt CT_LbsDoPosUpdate::CompleteRequest(TInt aRequestId)
+ {
+ return iPositioner.CompleteRequest(aRequestId);
+ }
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/common/src/ctlbsdox3p.cpp Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,96 @@
+// 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:
+// Async wrapper around a LBS X3P transmitter.
+//
+//
+
+
+
+/**
+ @file ctlbsdox3p.cpp
+*/
+
+//#include <lbsx3p.h>
+
+#include "ctlbsdox3p.h"
+
+
+CT_LbsDoX3P* CT_LbsDoX3P::NewL(MT_LbsDoX3PObserver* aObserver, TInt aTransmitId)
+ {
+ CT_LbsDoX3P* self = new(ELeave)CT_LbsDoX3P(aObserver, aTransmitId);
+ CleanupStack::PushL(self);
+ self->ConstructL();
+ CleanupStack::Pop();
+
+ return self;
+ }
+
+
+CT_LbsDoX3P::CT_LbsDoX3P(MT_LbsDoX3PObserver* aObserver, TInt aTransmitId) : CActive(EPriorityStandard), iObserver(aObserver), iTransmitId(aTransmitId)
+ {
+ CActiveScheduler::Add(this);
+ }
+
+
+void CT_LbsDoX3P::ConstructL()
+ {
+ User::LeaveIfError(iServer.Connect());
+ User::LeaveIfError(iTransmitter.Open(iServer));
+ }
+
+
+CT_LbsDoX3P::~CT_LbsDoX3P()
+ {
+ Cancel();
+
+ iTransmitter.Close();
+ iServer.Close();
+ }
+
+
+TInt CT_LbsDoX3P::SetOptions(const TLbsTransmitPositionOptions& aTransmitOptions)
+ {
+ return iTransmitter.SetTransmitOptions(aTransmitOptions);
+ }
+
+
+void CT_LbsDoX3P::StartL(const TDesC& aDestinationID, TUint aTransmitPriority, TPositionInfo & aTransmittedPosInfo)
+ {
+ __ASSERT_ALWAYS(!IsActive(), User::Panic(KCT_LbsDoX3P, KErrInUse));
+
+ // Invoke the X3P transmit update.
+ iTransmitter.TransmitPosition(aDestinationID, aTransmitPriority, iStatus, aTransmittedPosInfo);
+ SetActive();
+ }
+
+
+void CT_LbsDoX3P::DoCancel()
+ {
+ iTransmitter.CancelTransmitPosition();
+ }
+
+
+void CT_LbsDoX3P::RunL()
+ {
+ // Notify caller via callback, process the err in the callback.
+ if (iObserver)
+ {
+ iObserver->MT_LbsDoX3PCallback(iTransmitId, iStatus);
+ }
+ }
+
+TInt CT_LbsDoX3P::RunError(TInt aError)
+ {
+ return aError;
+ }
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/common/src/ctlbsnetsimstep.cpp Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,280 @@
+// 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 ctlbsnetsimstep.cpp
+// This is the class implementation for the LBS Test Step Base
+//
+//
+
+#include "ctlbsnetsimstep.h"
+
+
+/**
+ * Constructor
+ */
+CT_LbsNetSimStep::CT_LbsNetSimStep() : iState(EConnecting)
+ {
+ }
+
+
+/**
+ * If parameter is supplied, it will cause the test to continue running for this period after all expected flags have been set
+ */
+void CT_LbsNetSimStep::ConstructL(TTimeIntervalMicroSeconds32 aHaltTimerInterval)
+ {
+ // Create the keep alive timer.
+ iKeepAliveTimer = CT_LbsTimerUtils::NewL(this, KKeepAliveTimerId);
+ // Create the abort timer.
+ iAbortTimer = CT_LbsTimerUtils::NewL(this, KAbortTimerId);
+
+ iExtendedTimerInterval = aHaltTimerInterval;
+ }
+
+/**
+ * Can be used to set the extended time interval if not known at construct time.
+ * // This will cause the test to continue running for this period after all expected flags have been set
+ */
+void CT_LbsNetSimStep::SetExtendedTimerInterval(TTimeIntervalMicroSeconds32 aHaltTimerInterval)
+ {
+ iExtendedTimerInterval = aHaltTimerInterval;
+ }
+
+
+CT_LbsNetSimStep::~CT_LbsNetSimStep()
+ {
+ iKeepAliveTimer->Cancel();
+ delete iKeepAliveTimer;
+ iAbortTimer->Cancel();
+ delete iAbortTimer;
+
+ }
+
+/**
+ * @return - TVerdict
+ * Implementation of CTestStep base class virtual
+ * It is used for doing all initialisation common to derived classes in here.
+ * Make it being able to leave if there are any errors here as there's no point in
+ * trying to run a test step if anything fails.
+ * The leave will be picked up by the framework.
+ */
+TVerdict CT_LbsNetSimStep::doTestStepPreambleL()
+ {
+ // Process some common pre setting to test steps then set SetTestStepResult to EFail or Epass.
+ INFO_PRINTF1(_L(">>CT_LbsNetSimStep::doTestStepPreambleL()"));
+ SetTestStepResult(EPass);
+
+ return TestStepResult();
+ }
+
+
+/**
+ * @return - TVerdict
+ * Implementation of CTestStep base class virtual
+ * It is used for doing all after test treatment common to derived classes in here.
+ * Make it being able to leave
+ * The leave will be picked up by the framework.
+ */
+TVerdict CT_LbsNetSimStep::doTestStepPostambleL()
+ {
+ // Process some common post setting to test steps then set SetTestStepResult to EFail or Epass.
+ INFO_PRINTF1(_L(">>CT_LbsNetSimStep::doTestStepPostabmleL()"));
+
+ //SetTestStepResult(EPass); // or EFail
+ return TestStepResult();
+ }
+
+
+/** Used to mark each callback that has fired.
+*/
+void CT_LbsNetSimStep::SetCallbackFlag(TLbsCallbackFlags aCallbackFlag)
+ {
+// INFO_PRINTF2(_L("CT_LbsNetSimStep::SetCallbackFlag: setting callback flag 0x%x"), aCallbackFlag);
+ iCallbackFlags |= aCallbackFlag;
+ }
+
+
+/** Used to determine which callback or callbacks have been fired.
+*/
+TBool CT_LbsNetSimStep::TestCallbackFlags(TLbsCallbackFlags aExpectedFlags)
+ {
+ if (iCallbackFlags == aExpectedFlags)
+ {
+ return ETrue;
+ }
+ return EFalse;
+ }
+
+
+/** Keep alive timer callback.
+
+ Check the state machine to determine when to halt the test. Once all the callbacks
+ have been received the test can end.
+
+ We have to call async functions from here also, as the callbacks are executed in another thread.
+*/
+void CT_LbsNetSimStep::HandleTimerL(TInt aTimerId, const TTime& aTargetTime)
+ {
+ // Not used.
+ (void)aTimerId;
+ (void)aTargetTime;
+
+ if(KAbortTimerId == aTimerId)
+ {
+ INFO_PRINTF1(_L("Abort timer fired"));
+ iState = EAborted;
+ iKeepAliveTimer->Cancel();
+ CActiveScheduler::Stop();
+ }
+ else
+ {
+ // Check for test finish.
+
+ ASSERT(aTimerId == KKeepAliveTimerId);
+ // We stop test from here when in the correct state and, there should not be anything outstanding.
+ if (iState == EWaiting && TestCallbackFlags(iFlagsToHaltOn))
+ {
+ if(iExtendedTimerInterval.Int()) // we need an extended timer
+ {
+ INFO_PRINTF1(_L("Starting extended timer"));
+ iState = EExtendedWaiting;
+ iKeepAliveTimer->SetTimer(iExtendedTimerInterval);
+ }
+ else
+ {
+ iState = EDone;
+ iAbortTimer->Cancel(); // note: this is ok since it will do nothing if timer never started
+ CActiveScheduler::Stop();
+ }
+ }
+ // expected callbacks have all fired, but waiting for an extended period of time before stopping
+ else if(iState == EExtendedWaiting)
+ {
+ INFO_PRINTF1(_L("Extended timer fired"));
+ iState = EDone;
+ iAbortTimer->Cancel();
+ CActiveScheduler::Stop();
+ }
+ // Keep going, still waiting for callbacks.
+ else
+ {
+ TTimeIntervalMicroSeconds32 interval(KLbsKeepAlivePeriod);
+
+ iKeepAliveTimer->SetTimer(interval);
+ }
+ }
+ }
+
+
+/** NetSim callbacks.
+*/
+void CT_LbsNetSimStep::Connected()
+ {
+ INFO_PRINTF1(_L("Got - NetSim Connect - Callback Event."));
+
+ SetCallbackFlag(KLbsCallback_NetSim_Got_Connect);
+
+ iState = EWaiting;
+ }
+
+
+void CT_LbsNetSimStep::Disconnected()
+ {
+ INFO_PRINTF1(_L("Got - NetSim Notify Disconnected - Callback Event."));
+ }
+
+
+void CT_LbsNetSimStep::NotifyRegisterLcsMoLr(const TDesC& aData)
+ {
+ (void)aData;
+
+ INFO_PRINTF1(_L("Got - NetSim Notify Register Lcs MoLr - Callback Event."));
+ SetCallbackFlag(KLbsCallback_NetSim_Got_NotifyRegisterLcsMoLr);
+ }
+
+
+void CT_LbsNetSimStep::NotifyReleaseLcsMoLr(TInt aReason)
+ {
+ (void)aReason;
+
+ INFO_PRINTF1(_L("Got - NetSim Notify Release Lcs MoLr - Callback Event."));
+ SetCallbackFlag(KLbsCallback_NetSim_Got_NotifyReleaseLcsMoLr);
+ }
+
+
+void CT_LbsNetSimStep::NotifyMeasurementControlLocation(const TPositionInfo& aPosition,
+ const RLbsAssistanceDataBuilderSet& aData,
+ const TLbsNetPosRequestQuality& aQuality)
+ {
+ (void)aPosition;
+ (void)aData;
+ (void)aQuality;
+
+ INFO_PRINTF1(_L("Got - NetSim Notify Measurement Control Location - Callback Event."));
+ SetCallbackFlag(KLbsCallback_NetSim_Got_NotifyMeasurementControlLocation);
+ }
+
+
+void CT_LbsNetSimStep::NotifyReleaseLcsLocationNotification(const CLbsNetworkProtocolBase::TLbsPrivacyResponse& aResult)
+ {
+ (void)aResult;
+
+ INFO_PRINTF1(_L("Got - NetSim Notify Release Lcs Location Notification - Callback Event."));
+ SetCallbackFlag(KLbsCallback_NetSim_Got_NotifyReleaseLcsLocationNotification);
+ }
+
+
+void CT_LbsNetSimStep::NotifyFacilityLcsMoLrResult(TInt aReason, const TPositionInfo& aPosition)
+ {
+ (void)aReason;
+ (void)aPosition;
+
+ INFO_PRINTF1(_L("Got - NetSim Notify Facility Lcs MoLr Result - Callback Event."));
+ SetCallbackFlag(KLbsCallback_NetSim_Got_NotifyFacilityLcsMoLrResult);
+ }
+
+
+void CT_LbsNetSimStep::NotifyMeasurementReportLocation(const TPositionInfo& aPosition)
+ {
+ (void)aPosition;
+
+ INFO_PRINTF1(_L("Got - Net Sim Notify Measurement Report - Callback Event."));
+ SetCallbackFlag(KLbsCallback_NetSim_Got_NotifyMeasurementReportLocation);
+ }
+
+
+void CT_LbsNetSimStep::NotifyMeasurementReportRequestMoreAssistanceData(const TLbsAssistanceDataGroup& aFilter)
+ {
+ (void)aFilter;
+
+ INFO_PRINTF1(_L("Got - Net Sim Notify Measurement Report Request More Assistance Data - Callback Event."));
+ SetCallbackFlag(KLbsCallback_NetSim_Got_NotifyMeasurementReportRequestMoreAssistanceData);
+ }
+
+
+void CT_LbsNetSimStep::NotifyMeasurementReportControlFailure(TInt aReason)
+ {
+ INFO_PRINTF2(_L("Got - Net Sim Notify Measurement Report Control Failure - Callback Event. Reason = %d"), aReason);
+ SetCallbackFlag(KLbsCallback_NetSim_Got_NotifyMeasurementReportControlFailure);
+ }
+
+void CT_LbsNetSimStep::NotifyError(MLbsNetSimTestObserver::EFunction aFunction, int aError)
+ {
+ INFO_PRINTF3(_L("Got - Net Sim Notify Error - Callback Event. Function = %d, Error = %d"), aFunction, aError);
+ SetCallbackFlag(KLbsCallback_NetSim_Got_NotifyError);
+ }
+
+void CT_LbsNetSimStep::ProcessMeasurementControlLocationError(TInt aError)
+ {
+ INFO_PRINTF2(_L("Got - Net Sim Process Measurement Control Location Error - Callback Event. Reason = %d"), aError);
+ SetCallbackFlag(KLbsCallback_NetSim_Got_ProcessMeasurementControlLocationError);
+ }
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/common/src/ctlbsportedstepbase.cpp Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,659 @@
+// Copyright (c) 2001-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:
+//
+
+
+
+#include "ctlbsportedstepbase.h"
+#include "ctlbsportedsuitedefs.h"
+
+/*
+* ============================================================================
+* ============================================================================
+*/
+
+// INCLUDES
+#include <TestExecuteStepBase.h>
+#include <EPos_CPosModules.h>
+#include <EPos_CPosModuleUpdate.h>
+#include <EPos_CPosModuleIdList.h>
+#include <SimulationPSYInternalCRKeys.h>
+#include "ctlbsclientlog.h"
+
+// Device driver constants
+
+TVerdict CT_LbsPortedStepBase::doTestStepPreambleL()
+/**
+ * @return - TVerdict
+ * Implementation of CTestStep base class virtual
+ * It is used for doing all initialisation common to derived classes in here.
+ * Make it being able to leave if there are any errors here as there's no point in
+ * trying to run a test step if anything fails.
+ * The leave will be picked up by the framework.
+ */
+ {
+ // process some common pre setting to test steps then set SetTestStepResult to EFail or Epass.
+ SetTestStepResult(EPass);
+ return TestStepResult();
+ }
+
+TVerdict CT_LbsPortedStepBase::doTestStepPostambleL()
+/**
+ * @return - TVerdict
+ * Implementation of CTestStep base class virtual
+ * It is used for doing all after test treatment common to derived classes in here.
+ * Make it being able to leave
+ * The leave will be picked up by the framework.
+ */
+ {
+ // process some common post setting to test steps then set SetTestStepResult to EFail or Epass.
+ // SetTestStepResult(EPass); // or EFail
+ return TestStepResult();
+ }
+
+// ================= MEMBER FUNCTIONS =======================
+
+// C++ default constructor can NOT contain any code, that
+// might leave.
+//
+CT_LbsPortedStepBase::CT_LbsPortedStepBase(CT_LbsServer& aParent): CT_LbsStep(aParent)
+ {
+ iUidExternalGps.iUid = KUidExternalGps;
+ iUidManualInput.iUid = KUidManualInput;
+ iUidDefault.iUid = KUidDefault;
+ iUidStrategy.iUid = KUidStrategy;
+ iUidStubPositioner.iUid = KUidStubPositioner;
+ iUidSimulationPsy.iUid = KUidSimulationPsy;
+ iUidDynDbTestPsy.iUid = KUidDynDbTestPsy;
+ iUidInstallTestPsy.iUid = KUidInstallTestPsy;
+ iUidTestPsySimulateIsa.iUid = KUidTestPsySimulateIsa;
+ iUidTestPsy1.iUid = KUidTestPsy1;
+ iUidTestPsy2.iUid = KUidTestPsy2;
+ iUidTestPsy3.iUid = KUidTestPsy3;
+ iUidTestPsy4.iUid = KUidTestPsy4;
+ iUidTestPsy5.iUid = KUidTestPsy5;
+ iUidTestPsy6.iUid = KUidTestPsy6;
+ iUidTestPsy7.iUid = KUidTestPsy7;
+ iUidTestPsy8.iUid = KUidTestPsy8;
+ iUidTestPsy9.iUid = KUidTestPsy9;
+ iUidTestPsy10.iUid = KUidTestPsy10;
+ iUidTestPsy11.iUid = KUidTestPsy11;
+ iUidTestPsy12.iUid = KUidTestPsy12;
+ iUidTestPsy13.iUid = KUidTestPsy13;
+ iUidTestPsyTp176.iUid = KUidTestPsyTp176;
+ iUidMultiPsy.iUid = KUidMultiPsy;
+ iUidTestPsy256.iUid = KUidTestPsy256;
+ iUidExamplePsy.iUid = KUidExamplePsy;
+ iUidTestStatusPsy.iUid = KUidTestStatusPsy;
+ iUidTestTimerPsy.iUid = KUidTestTimerPsy;
+ iUidPanicPsy.iUid = KUidPanicPsy;
+ iUidPsySwitching.iUid = KUidPsySwitching;
+ iUidTestPsyPartialUpdate.iUid = KUidTestPsyPartialUpdate;
+ iUidTestPsyMaxAge.iUid = KUidTestPsyMaxAge;
+ iUidTestRangePsy.iUid = KUidTestRangePsy;
+ iUidTestSingPsy.iUid = KUidTestSingPsy;
+ iUidTestTrackingPsy.iUid = KUidTestTrackingPsy;
+ iUidTestProxyPsy1.iUid = KTestProxyPsy1;
+ iUidTestProxyPsy2.iUid = KTestProxyPsy2;
+ iUidTestProxyPsy3.iUid = KTestProxyPsy3;
+ iUidTestProxyPsy4.iUid = KTestProxyPsy4;
+ iUidInstallPsyTp273.iUid = KInstallPsyTp273;
+ iUidPartialUpdate2.iUid = KUidTestPsyPartialUpdate2;
+ iUidSatInfoPsy.iUid = KUidSatInfoPsy;
+ iUidBtgPsy.iUid = KUidBtgPsy;
+ iUidIgPsy.iUid = KUidIgPsy;
+ }
+
+// Destructor
+CT_LbsPortedStepBase::~CT_LbsPortedStepBase()
+ {
+ iPositioner.Close();
+ iPosServer.Close();
+ delete iScheduler;
+ iFileServer.Close();
+ }
+
+// ---------------------------------------------------------
+// CT_LbsPortedStepBase::StartL
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CT_LbsPortedStepBase::StartL(TInt aIndex)
+ {
+ if (aIndex == 0)
+ {
+ __UHEAP_MARK;
+
+ iLog = CT_LbsClientLog::NewL(Logger());
+
+ // Give extra time for epos server to shut down after previous tests:
+ User::After(2000000);
+ TRAPD(err, InitTestL());
+ if (err == KErrNone)
+ {
+ TRAP(err, StartL());
+ }
+ CloseTest();
+
+ delete iLog;
+ __UHEAP_MARKEND;
+
+ if (err != KErrNone)
+ {
+ User::Leave(err); // Not using LeaveIfError to allow positive error codes
+ }
+ }
+ }
+
+// ---------------------------------------------------------
+// CT_LbsPortedStepBase::SetupPsyL
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CT_LbsPortedStepBase::SetupPsyL(const TUid aPsyUid,
+ TPosSetupPsyDirective /*aDirective*/)
+ {
+ CPosModules* db = CPosModules::OpenL();
+ CleanupStack::PushL(db);
+ CPosModuleUpdate* moduleUpdate = CPosModuleUpdate::NewLC();
+
+ moduleUpdate->SetUpdateAvailability(EFalse);
+ CPosModuleIdList* prioList = db->ModuleIdListLC();
+
+ // Disable all PSY:s except aPsyUid
+ for (TInt i = 0 ; i < prioList->Count(); i++)
+ {
+ if ((*prioList)[i] != aPsyUid)
+ {
+ db->UpdateModuleL((*prioList)[i], *moduleUpdate);
+ }
+ }
+
+ // Enable the PSY that came as an in parameter
+ moduleUpdate->SetUpdateAvailability(ETrue);
+ db->UpdateModuleL(aPsyUid, *moduleUpdate);
+
+ CleanupStack::PopAndDestroy(prioList);
+ CleanupStack::PopAndDestroy(moduleUpdate);
+ CleanupStack::PopAndDestroy(db);
+ }
+// ---------------------------------------------------------
+// CT_LbsPortedStepBase::InitTestL
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CT_LbsPortedStepBase::InitTestL()
+ {
+ }
+
+// ---------------------------------------------------------
+// CT_LbsPortedStepBase::CloseTest
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CT_LbsPortedStepBase::CloseTest()
+ {
+ }
+
+// ---------------------------------------------------------
+// CTe_LbsPortedStepBase::ConnectL
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CT_LbsPortedStepBase::ConnectL()
+ {
+ TInt err = iPosServer.Connect();
+ if (err != KErrNone)
+ {
+ _LIT(KOpenError,
+ "TP%d, part %d failed. Unable to open connection to Epos, err = %d");
+ TBuf<100> error;
+ error.Format(KOpenError, iModuleId, iNrOfRequests, err);
+ LogErrorAndLeaveL(error);
+ }
+ }
+
+// ---------------------------------------------------------
+// CT_LbsPortedStepBase::OpenPositionerByName
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+TInt CT_LbsPortedStepBase::OpenPositionerByName(
+ const TUid aPsyUid)
+ {
+ TInt err = iPositioner.Open(iPosServer, aPsyUid);
+ return err;
+ }
+
+// ---------------------------------------------------------
+// CT_LbsPortedStepBase::OpenPositionerL
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+TInt CT_LbsPortedStepBase::OpenPositioner()
+ {
+ TInt err = iPositioner.Open(iPosServer);
+ return err;
+ }
+
+// ---------------------------------------------------------
+// CT_LbsPortedStepBase::ClosePositioner
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CT_LbsPortedStepBase::ClosePositioner()
+ {
+ iPositioner.Close();
+ }
+
+// ---------------------------------------------------------
+// CT_LbsPortedStepBase::Disconnect
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CT_LbsPortedStepBase::Disconnect()
+ {
+ iPosServer.Close();
+ }
+
+// ---------------------------------------------------------
+// CT_LbsPortedStepBase::PerformRequest
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CT_LbsPortedStepBase::PerformRequestL(const TDesC& aRequestor,
+ CRequestor::_TRequestorType aRequestorType,
+ CRequestor::_TRequestorFormat aRequestorFormat)
+ {
+ iNrOfRequests++;
+
+ iModuleInfo = TPositionInfo();
+ TInt err = iPositioner.SetRequestor(aRequestorType,
+ aRequestorFormat, aRequestor);
+ if (err != KErrNone)
+ {
+ _LIT(KErrRequestor, "Error when setting requestor in PerformRequestL");
+ LogErrorAndLeaveL(KErrRequestor, err);
+ }
+
+ iPositioner.NotifyPositionUpdate(iModuleInfo, iStatus);
+ }
+
+// ---------------------------------------------------------
+// CTe_LbsPortedStepBase::PerformRequestL
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CT_LbsPortedStepBase::PerformRequestL(
+ const TDesC& aService, const TDesC& aContact,
+ CRequestor::_TRequestorType aServiceIdType,
+ CRequestor::_TRequestorType aContactIdType,
+ CRequestor::_TRequestorFormat aServiceFormat,
+ CRequestor::_TRequestorFormat aContactFormat)
+ {
+ CRequestor* contactId =
+ CRequestor::New(aContactIdType, aContactFormat,
+ aContact);
+
+ CRequestor* servId =
+ CRequestor::New(aServiceIdType, aServiceFormat,
+ aService);
+
+ RRequestorStack stack = RRequestorStack();
+ stack.Append(contactId);
+ stack.Append(servId);
+
+ CleanupStack::PushL(contactId);
+ CleanupStack::PushL(servId);
+
+ iNrOfRequests++;
+
+ TInt err = iPositioner.SetRequestor(stack);
+ stack.Close();
+ if (err != KErrNone)
+ {
+ _LIT(KErrRequestor, "Error when setting requestor in PerformRequestL");
+ LogErrorAndLeaveL(KErrRequestor, err);
+ }
+
+ CleanupStack::PopAndDestroy(servId);
+ CleanupStack::PopAndDestroy(contactId);
+ iModuleInfo = TPositionInfo();
+ iPositioner.NotifyPositionUpdate(iModuleInfo, iStatus);
+ }
+
+// ---------------------------------------------------------
+// CT_LbsPortedStepBase::PerformSyncRequestL
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+TInt CT_LbsPortedStepBase::PerformSyncRequest(
+ const TDesC& aServiceName,
+ TPositionInfoBase* aModuleInfo)
+ {
+ iNrOfRequests++;
+ iPositioner.SetRequestor(CRequestor::ERequestorService,
+ CRequestor::EFormatApplication, aServiceName);
+
+ iPositioner.NotifyPositionUpdate(*aModuleInfo, iStatus);
+
+ User::WaitForRequest(iStatus);
+ TInt err = iStatus.Int();
+ return err;
+ }
+
+// ---------------------------------------------------------
+// CT_LbsPortedStepBase::CheckRequestResultL
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CT_LbsPortedStepBase::CheckRequestResultL(TInt aExpectedErrorCode, TBool aLogFlag)
+ {
+ User::WaitForRequest(iStatus);
+
+ if (iStatus != aExpectedErrorCode)
+ {
+ _LIT(KError, "TP%d, request %d failed. iStatus = %d");
+ TBuf<100> error;
+ error.Format(KError, iModuleId, iNrOfRequests, iStatus.Int());
+ LogErrorAndLeaveL(error);
+ }
+ else {
+ if (aLogFlag)
+ {
+ _LIT(KMsg, "TP%d, part %d completed.");
+ TBuf<30> msg;
+ msg.Format(KMsg, iModuleId, iNrOfRequests);
+ INFO_PRINTF1(msg);
+ }
+ }
+ }
+
+// ---------------------------------------------------------
+// CT_LbsPortedStepBase::AssertTrueL
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CT_LbsPortedStepBase::AssertTrueL(TBool aCondition,
+ const TDesC& aErrorMsg, TInt aErrorCode)
+ {
+ if (!aCondition)
+ {
+ TBuf<100> buf;
+ buf.Format(aErrorMsg, aErrorCode);
+ LogErrorAndLeaveL(buf);
+ }
+ }
+
+// ---------------------------------------------------------
+// CT_LbsPortedStepBase::AssertTrueL
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CT_LbsPortedStepBase::AssertTrueL(TBool aCondition,
+ const TDesC& aErrorMsg)
+ {
+ if (!aCondition)
+ {
+ LogErrorAndLeaveL(aErrorMsg);
+ }
+ }
+
+// ---------------------------------------------------------
+// CTe_LbsPortedStepBase::AllocPositionInfoL
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+TPositionInfo CT_LbsPortedStepBase::AllocPositionInfoL()
+ {
+ TPositionInfo moduleInfo = TPositionInfo();
+ iPositioner.GetLastKnownPosition(moduleInfo, iStatus);
+ return moduleInfo;
+ }
+
+// ---------------------------------------------------------
+// CT_LbsPortedStepBase::VerifyPsyLoadedL
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CT_LbsPortedStepBase::VerifyPsyLoadedL(TPositionModuleId aUid)
+ {
+ _LIT(KVerPSYLoaded, "Verifies if PSY: %x, is loaded by getting its status");
+ TBuf<100> buf;
+ buf.Format(KVerPSYLoaded, aUid.iUid);
+ INFO_PRINTF1(buf);
+
+ _LIT(KDevStatusErr, "The PSY has not reported expected Device Status.");
+ TPositionModuleStatus moduleStatus;
+ iPosServer.GetModuleStatus (moduleStatus, aUid);
+ AssertTrueL(TPositionModuleStatus::EDeviceReady == moduleStatus.DeviceStatus(),
+ KDevStatusErr, KErrGeneral);
+ }
+
+// ---------------------------------------------------------
+// CT_LbsPortedStepBase::VerifyPsyUnloadedL
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CT_LbsPortedStepBase::VerifyPsyUnloadedL(TPositionModuleId aUid)
+ {
+ _LIT(KVerPSYUnloaded, "Verifies if PSY: %x, is unloaded by getting its status");
+ TBuf<100> buf;
+ buf.Format(KVerPSYUnloaded, aUid.iUid);
+ INFO_PRINTF1(buf);
+
+ _LIT(KDevStatusErr, "The PSY has not reported expected Device Status.");
+ TPositionModuleStatus moduleStatus;
+ iPosServer.GetModuleStatus(moduleStatus, aUid);
+ AssertTrueL(TPositionModuleStatus::EDeviceInactive == moduleStatus.DeviceStatus(),
+ KDevStatusErr, KErrGeneral);
+ }
+
+// ---------------------------------------------------------
+// CT_LbsPortedStepBase::RequestL
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CT_LbsPortedStepBase::RequestL(TPositionInfo& aPosInfo,
+ const TInt& aRequestIndex,
+ const TInt& aExpectedErrorCode)
+ {
+ TBuf<100> info;
+ _LIT(KInfo, "Making request: %d");
+ _LIT(KInfoCompCode, "Making request: %d, expecting completion code: %d.");
+ if (aExpectedErrorCode != 999)
+ {
+ info.Format(KInfoCompCode, aRequestIndex, aExpectedErrorCode);
+ }
+ else
+ {
+ info.Format(KInfo, aRequestIndex);
+ }
+ INFO_PRINTF1(info);
+
+ aPosInfo.SetUpdateType(aRequestIndex); // Used here as request index
+
+ TTime starttime, stoptime;
+ starttime.UniversalTime();
+
+ TRequestStatus status;
+ iPositioner.NotifyPositionUpdate(aPosInfo, status);
+ User::WaitForRequest(status);
+
+ stoptime.UniversalTime();
+ iRequestTime = stoptime.Int64() - starttime.Int64();
+
+ if (aExpectedErrorCode != 999)
+ {
+ _LIT(KUnexpectedErrCode, "Unexpected error code %d, expected %d.");
+ TBuf<200> buf;
+ buf.Format(KUnexpectedErrCode, status.Int(), aExpectedErrorCode);
+ AssertTrueL(status.Int() == aExpectedErrorCode, buf);
+ }
+ }
+
+// ---------------------------------------------------------
+// CT_LbsPortedStepBase::LogErrorAndLeave
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+EXPORT_C void CT_LbsPortedStepBase::LogErrorAndLeaveL(const TDesC& aErrorInfo,
+ const TInt aReason)
+ {
+ ERR_PRINTF2(aErrorInfo, aReason);
+ User::Leave(aReason);
+ }
+
+TVerdict CT_LbsPortedStepBase::doTestStepL()
+/**
+ * @return - TVerdict code
+ * Override of base class pure virtual
+ * Our implementation only gets called if the base class doTestStepPreambleL() did
+ * not leave. That being the case, the current test result value will be EPass.
+ */
+ {
+ if (TestStepResult() == EPass)
+ {
+ CActiveScheduler* sched = new (ELeave) CActiveScheduler;
+ sched->Install(sched);
+ CleanupStack::PushL(sched);
+ StartL(0);
+ CleanupStack::PopAndDestroy(sched);
+
+ SetTestStepResult(EPass);
+ }
+ return TestStepResult();
+ }
+
+// ---------------------------------------------------------
+// CPosSimulationPSYTestProcedureBase::SetSimDataFile()
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CT_LbsPortedStepBase::SetSimDataFileL(const TDesC& aFileName)
+ {
+ CRepository* repository =
+ CRepository::NewLC(KCRUidSimulationPSY);
+ TInt err = repository->Set(KCRKeySimPSYSimulationFile,
+ aFileName);
+ if (err != KErrNone)
+ {
+ _LIT(KErr, "CRepository::Set(KCRKeySimPSYSimulationFile...) returned error");
+ INFO_PRINTF1(KErr);
+ LogErrorAndLeaveL(KErr);
+ }
+
+ CleanupStack::PopAndDestroy(repository);
+ }
+
+// ---------------------------------------------------------
+// CPosSimulationPSYTestProcedureBase::ResetDefaultPSYLastWorkingExtGPSPSYL()
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CT_LbsPortedStepBase::ResetDefaultPSYLastWorkingExtGPSPSYL()
+ {
+ TPositionModuleId modId = KPositionNullModuleId;
+
+ CRepository* repos = CRepository::NewL( KCRUidDefaultProxyConfiguration );
+ TBuf<40> idBuf;
+ idBuf.AppendNumFixedWidth( modId.iUid, EHex, 8);
+ TInt err = repos->Set(KDefaultProxyLastWorkingGpsPsy, idBuf);
+ delete repos;
+ User::LeaveIfError(err);
+
+ _LIT(KInfo, "ResetDefaultPSYLastWorkingExtGPSPSYL successfully executed.");
+ INFO_PRINTF1(KInfo);
+ }
+
+// ---------------------------------------------------------
+// CPosSimulationPSYTestProcedureBase::VerifyPositionFromL
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CT_LbsPortedStepBase::VerifyPositionFromL(TPositionInfo& aPosInfo,
+ TPositionModuleId& aModuleId)
+ {
+ if (aModuleId.iUid != aPosInfo.ModuleId().iUid)
+ {
+ _LIT(KIncorrPsyErr,
+ "Position from wrong PSY received, got position from: %x, expected: %x.");
+ TBuf<200> buf;
+ buf.Format(KIncorrPsyErr, aPosInfo.ModuleId().iUid, aModuleId.iUid);
+ LogErrorAndLeaveL(buf);
+ }
+ }
+
+// ---------------------------------------------------------
+// CPosSimulationPSYTestProcedureBase::VerifyPositionL
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CT_LbsPortedStepBase::VerifyPositionL(TPositionInfo& aPosInfo,
+ TReal64 aLat, TReal64 aLong, TReal64 aAlt)
+ {
+ _LIT(KWrongFix, "Wrong Fix");
+ TPosition pos;
+ aPosInfo.GetPosition(pos);
+ AssertTrueL( aLat == pos.Latitude(), KWrongFix);
+ AssertTrueL( aLong == pos.Longitude(), KWrongFix);
+ AssertTrueL( aAlt == pos.Altitude(), KWrongFix);
+ }
+
+// ---------------------------------------------------------
+// CPosSimulationPSYTestProcedureBase::VerifyRequestTimeLessThanL
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CT_LbsPortedStepBase::VerifyRequestTimeLessThanL(TInt aExpectedReqTime)
+ {
+ if (iRequestTime > aExpectedReqTime)
+ {
+ _LIT(KTime, "Request time for last request was more than: %d");
+ TBuf<100> buf;
+ buf.Format(KTime, aExpectedReqTime);
+ INFO_PRINTF1(buf);
+ }
+ }
+
+void CT_LbsPortedStepBase::ConstructL()
+ {
+ iScheduler = new ( ELeave ) CActiveScheduler;
+ CActiveScheduler::Install(iScheduler);
+ User::LeaveIfError(iFileServer.Connect());
+ }
+// End of File
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/common/src/ctlbsposclient.cpp Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,209 @@
+// Copyright (c) 2000-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:
+//
+
+
+
+// INCLUDES
+#include "ctlbsposclient.h"
+#include "ctlbsposclientholder.h"
+#include <e32svr.h>
+#include <LbsIpc.h>
+
+// CONSTANTS
+
+// ================= MEMBER FUNCTIONS =======================
+
+// C++ default constructor can NOT contain any code, that
+// might leave.
+//
+CT_LbsPosClient::CT_LbsPosClient(CT_LbsPosClientHolder* aParent)
+: CActive(EPriorityHigh), iParent(aParent)
+ {
+ CActiveScheduler::Add(this);
+ }
+
+// Destructor
+CT_LbsPosClient::~CT_LbsPosClient()
+ {
+ Cancel();
+ iPositioner.Close();
+ if (!iSameClient)
+ iPosServer.Close();
+ }
+
+// ---------------------------------------------------------
+// CPosClient::ConstructL
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CT_LbsPosClient::ConstructL(TUid aPsy)
+ {
+ //connect to EPos
+ User::LeaveIfError(iPosServer.Connect());
+ iSameClient = EFalse;
+ //Open subsession
+ User::LeaveIfError(iPositioner.Open(iPosServer, aPsy));
+ iModuleInfo = TPositionInfo();
+ }
+
+// ---------------------------------------------------------
+// CPosClient::ConstructL
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CT_LbsPosClient::ConstructL(TUid aPsy, RPositionServer& aPositionServer)
+ {
+ //connect to EPos
+ //User::LeaveIfError(iPosServer.Connect());
+ iPosServer = aPositionServer;
+ iSameClient = ETrue;
+ //Open subsession
+ User::LeaveIfError(iPositioner.Open(iPosServer, aPsy));
+ iModuleInfo = TPositionInfo();
+ }
+// ---------------------------------------------------------
+// CPosClient::NewL
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+CT_LbsPosClient* CT_LbsPosClient::NewL(CT_LbsPosClientHolder* aParent, TUid aPsy)
+ {
+ CT_LbsPosClient* self = new (ELeave) CT_LbsPosClient(aParent);
+ CleanupStack::PushL(self);
+ self->ConstructL(aPsy);
+ CleanupStack::Pop(self); // self
+ return self;
+ }
+
+// ---------------------------------------------------------
+// CPosClient::NewL
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+CT_LbsPosClient* CT_LbsPosClient::NewL(CT_LbsPosClientHolder* aParent, TUid aPsy, RPositionServer& aPositionServer)
+ {
+ CT_LbsPosClient* self = new (ELeave) CT_LbsPosClient(aParent);
+ CleanupStack::PushL(self);
+ self->ConstructL(aPsy, aPositionServer);
+ CleanupStack::Pop(self); // self
+ return self;
+ }
+
+
+// ---------------------------------------------------------
+// CPosClient::MakeRequest
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CT_LbsPosClient::MakeRequest()
+ {
+ _LIT(KContact, "11111");
+ _LIT(KService, "SAAA");
+
+ //TPositionInfo moduleInfo = TPositionInfo();
+
+ CRequestor* contactId =
+ CRequestor::New(CRequestor::ERequestorContact,
+ CRequestor::EFormatTelephone, KContact);
+
+ CRequestor* servId =
+ CRequestor::New(CRequestor::ERequestorService,
+ CRequestor::EFormatApplication, KService);
+
+ RRequestorStack stack = RRequestorStack();
+ stack.Append(contactId);
+ stack.Append(servId);
+
+ CleanupStack::PushL(contactId);
+ CleanupStack::PushL(servId);
+
+ TInt err = iPositioner.SetRequestor(stack);
+ // what to do with err ???
+
+ if (err)
+ {
+ // Do something here?
+ }
+ stack.Close();
+
+ CleanupStack::PopAndDestroy(servId);
+ CleanupStack::PopAndDestroy(contactId);
+
+ iStartTime.UniversalTime();
+
+ iPositioner.NotifyPositionUpdate(iModuleInfo, iStatus);
+ SetActive();
+ }
+
+// ---------------------------------------------------------
+// CPosClient::RunL
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CT_LbsPosClient::RunL()
+ {
+ if (iStatus == KErrNone)
+ {
+ TTime now;
+ now.UniversalTime();
+ iRequestTime = now.MicroSecondsFrom(iStartTime);
+
+ iParent->HandleRequestDone();
+ }
+ else
+ {
+ _LIT(KErr, "iStatus != KErrNone");
+ RDebug::Print(KErr);
+ iParent->HandleRequestDone();
+ }
+ }
+
+// ---------------------------------------------------------
+// CPosClient::DoCancel
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CT_LbsPosClient::DoCancel()
+ {
+ iPositioner.CancelRequest(EPositionerNotifyPositionUpdate); // Specified in LbsIpc.h
+ TTime now;
+ now.UniversalTime();
+ iRequestTime = now.MicroSecondsFrom(iStartTime);
+ }
+
+// ---------------------------------------------------------
+// CPosClient::GetResult
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CT_LbsPosClient::GetResult(
+ TInt& aStatus,
+ TPositionInfo& aModuleInfo,
+ TTimeIntervalMicroSeconds& aRequestTime)
+ {
+ aStatus = iStatus.Int();
+ aModuleInfo = iModuleInfo;
+ aRequestTime = iRequestTime;
+ }
+
+// End of File
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/common/src/ctlbsposclientholder.cpp Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,224 @@
+// Copyright (c) 2000-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:
+//
+
+
+
+// INCLUDES
+#include "ctlbsposclientholder.h"
+#include "ctlbsposclient.h"
+
+// CONSTANTS
+
+// ================= MEMBER FUNCTIONS =======================
+
+// C++ default constructor can NOT contain any code, that
+// might leave.
+//
+CT_LbsPosClientHolder::CT_LbsPosClientHolder()
+: CActive(EPriorityHigh), iRequestsActive(EFalse), iCancelTime(0)
+ {
+ }
+
+// ---------------------------------------------------------
+// CT_LbsPosClientHolder::ConstructL
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CT_LbsPosClientHolder::ConstructL(TInt aRequestCount, TUid aPsy, TBool aSameServer)
+ {
+ User::LeaveIfError(iTimer.CreateLocal());
+ CActiveScheduler::Add(this);
+ User::LeaveIfError(iPosServer.Connect());
+ CT_LbsPosClient* requester = NULL;
+ for (TInt i = 0; i < aRequestCount; i++)
+ {
+ if (aSameServer)
+ {
+ requester = CT_LbsPosClient::NewL(this, aPsy,iPosServer);
+ }
+ else
+ {
+ requester = CT_LbsPosClient::NewL(this, aPsy);
+ }
+ CleanupStack::PushL(requester);
+ User::LeaveIfError(iRequesters.Append(requester));
+ CleanupStack::Pop(requester);
+ }
+ }
+
+// ---------------------------------------------------------
+// CT_LbsPosClientHolder::NewLC
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+CT_LbsPosClientHolder* CT_LbsPosClientHolder::NewLC(TInt aRequestCount, TUid aPsy, TBool aSameServer)
+ {
+ CT_LbsPosClientHolder* self = new (ELeave) CT_LbsPosClientHolder;
+ CleanupStack::PushL(self);
+ self->ConstructL(aRequestCount, aPsy, aSameServer);
+ return self;
+ }
+
+
+
+// Destructor
+CT_LbsPosClientHolder::~CT_LbsPosClientHolder()
+ {
+ Cancel();
+ iTimer.Close();
+ iRequesters.ResetAndDestroy();
+ iRequesters.Close();
+ iRequestersWhoWillCancel.Close();
+ iPosServer.Close();
+ }
+
+// ---------------------------------------------------------
+// CT_LbsPosClientHolder::MakeRequests
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CT_LbsPosClientHolder::MakeRequests()
+ {
+ if (iRequestsActive)
+ {
+ return;
+ }
+ iRequestsActive = ETrue;
+ TInt requesterCount = iRequesters.Count();
+ iNofRequestsDone = 0;
+ for (TInt i = 0; i < requesterCount; i++)
+ {
+ iRequesters[i]->MakeRequest();
+ }
+
+ // initiate cancelling if this is set.
+ if (iRequestersWhoWillCancel.Count() > 0)
+ {
+ iTimer.After(iStatus, iCancelTime);
+ SetActive();
+ }
+
+ CActiveScheduler::Start();
+ }
+
+// ---------------------------------------------------------
+// CT_LbsPosClientHolder::HandleRequestDone
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CT_LbsPosClientHolder::HandleRequestDone()
+ {
+ iNofRequestsDone++;
+ if (iNofRequestsDone == iRequesters.Count())
+ {
+ iRequestsActive = EFalse;
+ CActiveScheduler::Stop();
+ }
+ }
+
+// ---------------------------------------------------------
+// CT_LbsPosClientHolder::RunL
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CT_LbsPosClientHolder::RunL()
+ {
+ // Cancel certain requests.
+ TInt nofRequestersWhoWillCancel = iRequestersWhoWillCancel.Count();
+ for (TInt i = 0; i < nofRequestersWhoWillCancel; i++)
+ {
+ iRequesters[iRequestersWhoWillCancel[i]]->Cancel();
+ HandleRequestDone();
+ }
+ }
+
+// ---------------------------------------------------------
+// CT_LbsPosClientHolder::DoCancel
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CT_LbsPosClientHolder::DoCancel()
+ {
+ iTimer.Cancel();
+ }
+
+void CT_LbsPosClientHolder::StopRequests()
+ {
+ if (!iRequestsActive)
+ {
+ return;
+ }
+ Cancel();
+ TInt requesterCount = iRequesters.Count();
+ for (TInt i = 0; i < requesterCount; i++)
+ {
+ iRequesters[i]->Cancel();
+ }
+ CActiveScheduler::Stop();
+ iRequestsActive = EFalse;
+ }
+
+// ---------------------------------------------------------
+// CT_LbsPosClientHolder::GetResult
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CT_LbsPosClientHolder::GetResult(
+ TInt& aStatus,
+ TPositionInfo& aModuleInfo,
+ TTimeIntervalMicroSeconds& aRequestTime,
+ TInt aRequesterIndex)
+ {
+ iRequesters[aRequesterIndex]->GetResult(aStatus, aModuleInfo, aRequestTime);
+ }
+
+
+
+// ---------------------------------------------------------
+// CT_LbsPosClientHolder::SetRequesterWillCancelL
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CT_LbsPosClientHolder::SetCancelTime(TTimeIntervalMicroSeconds32 aTimeInterval)
+ {
+ iCancelTime = aTimeInterval;
+ }
+
+// ---------------------------------------------------------
+// CT_LbsPosClientHolder::SetRequesterWillCancelL
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CT_LbsPosClientHolder::SetRequesterWillCancelL(TInt aIndex)
+ {
+ TInt length = iRequestersWhoWillCancel.Count();
+ for (TInt i = 0; i < length; i++)
+ {
+ if (iRequestersWhoWillCancel[i] == aIndex) return;
+ }
+ User::LeaveIfError(iRequestersWhoWillCancel.Append(aIndex));
+ }
+
+
+// End of File
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/common/src/ctlbsrequester.cpp Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,261 @@
+// Copyright (c) 2000-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:
+//
+
+
+
+// INCLUDE FILES
+#include "ctlbsrequester.h"
+#include "mctlbsrequestobserver.h"
+
+// CONSTANTS
+
+// ================= MEMBER FUNCTIONS =======================
+
+// Two-phased constructor.
+CT_LbsRequester* CT_LbsRequester::NewL(
+ TUid aPsyUid,
+ MCT_LbsRequestObserver* aObserver,
+ CTestExecuteLogger& aLogger
+ )
+ {
+ CT_LbsRequester* self = new (ELeave) CT_LbsRequester(aObserver);
+ CleanupStack::PushL(self);
+ self->ConstructL(aPsyUid, aLogger);
+ CleanupStack::Pop();
+ return self;
+ }
+
+// Two-phased constructor.
+CT_LbsRequester* CT_LbsRequester::NewL(
+ MCT_LbsRequestObserver* aObserver,
+ TTimeIntervalMicroSeconds aInterval,
+ CTestExecuteLogger& aLogger
+ )
+ {
+ CT_LbsRequester* self = new (ELeave) CT_LbsRequester(aObserver);
+ CleanupStack::PushL(self);
+ self->ConstructL(aInterval, aLogger);
+ CleanupStack::Pop();
+ return self;
+ }
+
+// Destructor
+CT_LbsRequester::~CT_LbsRequester()
+ {
+ iObserver = NULL;
+ Cancel();
+ iPositioner.Close();
+ iPosServer.Close();
+ }
+
+// C++ default constructor can NOT contain any code, that
+// might leave.
+//
+CT_LbsRequester::CT_LbsRequester(
+ MCT_LbsRequestObserver* aObserver)
+ : CActive(EPriorityStandard), iObserver(aObserver)
+ {
+ }
+
+// EPOC default constructor can leave.
+void CT_LbsRequester::ConstructL(
+ TUid aPsyUid,
+ CTestExecuteLogger& aLogger
+ )
+ {
+ iLogger = aLogger;
+ User::LeaveIfError(iPosServer.Connect());
+ iModuleInfo = TPositionInfo();
+ iCompletionCode = KErrNone;
+ User::LeaveIfError(iPositioner.Open(iPosServer, aPsyUid));
+ _LIT(KService, "SAAA");
+ iPositioner.SetRequestor(CRequestor::ERequestorService,
+ CRequestor::EFormatApplication,
+ KService);
+ CActiveScheduler::Add(this);
+ }
+
+void CT_LbsRequester::ConstructL(
+ TTimeIntervalMicroSeconds aInterval,
+ CTestExecuteLogger& aLogger
+ )
+ {
+ iLogger = aLogger;
+ User::LeaveIfError(iPosServer.Connect());
+ iModuleInfo = TPositionInfo();
+ iCompletionCode = KErrNone;
+ User::LeaveIfError(iPositioner.Open(iPosServer));
+ TPositionUpdateOptions posOption;
+ posOption.SetUpdateInterval(aInterval);
+ User::LeaveIfError(iPositioner.SetUpdateOptions(posOption));
+ _LIT(KService, "SAAA");
+ iPositioner.SetRequestor(CRequestor::ERequestorService,
+ CRequestor::EFormatApplication,
+ KService);
+ CActiveScheduler::Add(this);
+ }
+
+// ---------------------------------------------------------
+// CT_LbsRequester::CompletionTimeUTC
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+const TTime& CT_LbsRequester::CompletionTimeUTC() const
+ {
+ return iCompletionTimeUTC;
+ }
+
+// ---------------------------------------------------------
+// CT_LbsRequester::CompletionCode
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+TInt CT_LbsRequester::CompletionCode() const
+ {
+ return iCompletionCode;
+ }
+
+// ---------------------------------------------------------
+// CT_LbsRequester::StartRequest
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CT_LbsRequester::SetUpdateIntervalL(TTimeIntervalMicroSeconds aInterval)
+ {
+ TPositionUpdateOptions posOption;
+ posOption.SetUpdateInterval(aInterval);
+ User::LeaveIfError(iPositioner.SetUpdateOptions(posOption));
+ }
+
+// ---------------------------------------------------------
+// CT_LbsRequester::StartRequest
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+void CT_LbsRequester::StartRequest()
+ {
+ iPositioner.NotifyPositionUpdate(iModuleInfo, iStatus);
+ SetActive();
+ }
+
+// LOCAL FUNCTIONS
+void CleanOpRequestorStack(TAny* aAnArray)
+ {
+ // Cleanup function the requestor stack
+ RRequestorStack* theStack = reinterpret_cast <RRequestorStack*> (aAnArray);
+ theStack->ResetAndDestroy();
+ }
+
+// ---------------------------------------------------------
+// CT_LbsRequester::SetRequestorStackL
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+TInt CT_LbsRequester::SetRequestorStackL(const TDesC& aService, const TDesC& aContact)
+ {
+ CRequestor* contactId =
+ CRequestor::New(CRequestor::ERequestorContact, CRequestor::EFormatTelephone,
+ aContact);
+
+ CRequestor* servId =
+ CRequestor::New(CRequestor::ERequestorService, CRequestor::EFormatApplication,
+ aService);
+
+ // Create a requestor stack containing one contact and one service (the service must be last added)
+ RRequestorStack stack = RRequestorStack();
+ CleanupStack::PushL(TCleanupItem(CleanOpRequestorStack ,&stack));
+ stack.Append(contactId);
+ stack.Append(servId);
+
+ CleanupStack::PushL(contactId);
+ CleanupStack::PushL(servId);
+
+ TInt err = iPositioner.SetRequestor(stack);
+
+ CleanupStack::PopAndDestroy(servId);
+ CleanupStack::PopAndDestroy(contactId);
+ stack.Close();
+ CleanupStack::PopAndDestroy(1); // CleanOpTp226 stack
+
+ return err;
+ }
+
+// ---------------------------------------------------------
+// CT_LbsRequester::RunL
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CT_LbsRequester::RunL()
+ {
+ iCompletionCode = iStatus.Int();
+ iCompletionTimeUTC.UniversalTime();
+ RequestComplete();
+ }
+
+// ---------------------------------------------------------
+// CT_LbsRequester::DoCancel
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CT_LbsRequester::DoCancel()
+ {
+ iPositioner.CancelRequest(EPositionerNotifyPositionUpdate);
+ iCompletionTimeUTC.UniversalTime();
+ RequestComplete();
+ }
+
+// ---------------------------------------------------------
+// CT_LbsRequester::RequestComplete
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CT_LbsRequester::RequestComplete()
+ {
+ if (iObserver)
+ {
+ TRAPD(err, iObserver->RequestCompleteL());
+ if(KErrNone != err)
+ {
+ _LIT(KRequestCompleteError, "Error in LbsRequester: %d");
+ ERR_PRINTF2(KRequestCompleteError, err);
+ }
+ }
+ }
+
+void CT_LbsRequester::GetPositionInfo(
+ TPositionInfo& aModuleInfo)
+ {
+ aModuleInfo = iModuleInfo;
+ }
+
+// ---------------------------------------------------------
+// CT_LbsRequester::SetUpdateType
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CT_LbsRequester::SetUpdateType(const TInt& aUpdateType)
+ {
+ iModuleInfo.SetUpdateType(aUpdateType);
+ }
+
+// End of File
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/common/src/ctlbsserver.cpp Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,221 @@
+// 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 CT_LbsServer.cpp
+// This is the class implementation for the LBS Test Server
+//
+//
+
+// User includes
+#include "ctlbsserver.h"
+
+// System includes
+#include <e32std.h>
+#include <rsshared.h>
+
+// Header files of LBS API Test Steps
+#include "ctlbsstepinstallscheduler.h"
+#include "ctlbsstepcreateverifymoduledata.h"
+#include "ctlbsstepcreateverifyposinfos.h"
+#include "ctlbsstepverifyposinfos.h"
+#include "ctlbsstepverifyroughposinfos.h"
+#include "ctlbsstepverifymodinfo.h"
+#include "ctlbsstepverifyloginfo.h"
+#include "ctlbsstepverifymodstatus.h"
+#include "ctlbsstepsetautonomousmode.h"
+#include "ctlbsstepsetprivhandler.h"
+#include "ctlbsstepresetdefaultadmin.h"
+#include "ctlbsstepstartlbs.h"
+#include "ctlbsstepstoplbs.h"
+#include "ctlbsstepcreateverifymodinfo.h"
+#include "ctlbsstepclearlog.h"
+#include "ctlbsstepconfighybridmodule.h"
+#include "ctlbsstepsetupstandaloneprivacymode.h"
+#include "ctlbsstepsetupstandaloneprivacyandsimplectlr.h"
+#include "ctlbsstepsetupstandaloneprivacywithnoctlr.h"
+#include "ctlbsstepsetbehaviourmodeoriginal.h"
+#include "ctlbsstepsetptamode.h"
+#include "ctlbsstepsetatamode.h"
+#include "ctlbsstepsetptbmode.h"
+
+CT_LbsServer::~CT_LbsServer()
+ {
+ delete iSharedData;
+ delete iScheduler;
+ }
+
+
+/**
+ Function : CT_LbsServer
+ Description : Constructor
+ @internalTechnology
+ @param :
+ @return : N/A
+ @precondition : none
+ @postcondition : none
+*/
+CT_LbsServer::CT_LbsServer()
+ {
+ }
+
+/**
+ Function : ConstructL
+ Description :
+ @internalTechnology
+ @param :
+ @return : N/A
+ @precondition : none
+ @postcondition : none
+*/
+void CT_LbsServer::ConstructL(const TDesC& aName)
+ {
+ CTestServer::ConstructL(aName);
+
+ iScheduler = new (ELeave) CActiveScheduler();
+
+ // check what this does, do we need it...
+ Logger().ShareAuto(); // enable the log system for all test threads via iParent.Logger()
+ }
+
+
+/**
+ Function : CreateTestStep
+ Description : Creates a test step based on the step name read from the script file
+ @internalTechnology
+ @param : aStepName The step name which needs to be created
+ @return : Created object of type CTestStep
+ @precondition : none
+ @postcondition : none
+*/
+CTestStep* CT_LbsServer::CreateTestStep(const TDesC& aStepName)
+ {
+ // NULL if insufficient memory. This suits the API.
+
+ // Common test steps, used by many different test cases.
+ if (aStepName == KLbsStep_InstallScheduler)
+ {
+ return CT_LbsStep_InstallScheduler::New(*this);
+ }
+
+ if (aStepName == KLbsStep_CreateVerifyModuleData)
+ {
+ return CT_LbsStep_CreateVerifyModuleData::New(*this);
+ }
+
+ if (aStepName == KLbsStep_CreateVerifyPosInfos)
+ {
+ return CT_LbsStep_CreateVerifyPosInfos::New(*this);
+ }
+
+ if (aStepName == KLbsStep_CreateVerifyModInfo)
+ {
+ return CT_LbsStep_CreateVerifyModInfo::New(*this);
+ }
+
+ if (aStepName == KLbsStep_VerifyPosInfos)
+ {
+ return CT_LbsStep_VerifyPosInfos::New(*this);
+ }
+
+ if (aStepName == KLbsStep_VerifyRoughPosInfos)
+ {
+ return CT_LbsStep_VerifyRoughPosInfos::New(*this);
+ }
+
+ if(aStepName == KLbsStep_VerifyModInfo)
+ {
+ return CT_LbsStep_VerifyModInfo::New(*this);
+ }
+
+ if (aStepName == KLbsStep_VerifyLogInfo)
+ {
+ return CT_LbsStep_VerifyLogInfo::New(*this);
+ }
+
+ if (aStepName == KLbsStep_VerifyModuleStatus)
+ {
+ return CT_LbsStep_VerifyModStatus::New(*this);
+ }
+
+ if (aStepName == KLbsStep_StartLbs)
+ {
+ return CT_LbsStep_StartLbs::New(*this);
+ }
+
+ if (aStepName == KLbsStep_StopLbs)
+ {
+ return CT_LbsStep_StopLbs::New(*this);
+ }
+
+ if (aStepName == KLbsStep_SetAutonomousMode)
+ {
+ return CT_LbsStep_SetAutonomousMode::New(*this);
+ }
+
+ if (aStepName == KLbsStep_SetPrivacyHandler)
+ {
+ return CT_LbsStep_SetPrivacyHandler::New(*this);
+ }
+
+ if (aStepName == KLbsStep_ResetDefaultAdmin)
+ {
+ return CT_LbsStep_ResetDefaultAdmin::New(*this);
+ }
+
+ if (aStepName == KLbsStep_ClearLog)
+ {
+ return CT_LbsStep_ClearLog::New(*this);
+ }
+
+ if (aStepName == KLbsStep_SetBehaviourModeOriginal)
+ {
+ return CT_LbsStep_SetBehaviourModeOriginal::New(*this);
+ }
+
+ if (aStepName == KLbsStep_SetPTAMode)
+ {
+ return CT_LbsStep_SetPTAMode::New(*this);
+ }
+
+ if (aStepName == KLbsStep_ConfigHybridModule)
+ {
+ return CT_LbsStep_ConfigHybridModule::New(*this);
+ }
+
+ if (aStepName == KLbsStep_SetupStandalonePrivacyMode)
+ {
+ return CT_LbsStep_SetupStandalonePrivacyMode::New(*this);
+ }
+
+ if (aStepName == KLbsStep_SetupStandalonePrivacyAndSimpleCtlr)
+ {
+ return CT_LbsStep_SetupStandalonePrivacyAndSimpleCtlr::New(*this);
+ }
+
+ if (aStepName == KLbsStep_SetupStandalonePrivacyWithNoCtlr)
+ {
+ return CT_LbsStep_SetupStandalonePrivacyWithNoCtlr::New(*this);
+ }
+
+ if (aStepName == KLbsStep_SetATAMode)
+ {
+ return CT_LbsStep_SetATAMode::New(*this);
+ }
+
+ if (aStepName == KLbsStep_SetPTBMode)
+ {
+ return CT_LbsStep_SetPTBMode::New(*this);
+ }
+
+ return NULL;
+ }
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/common/src/ctlbsshareddata.cpp Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,111 @@
+// 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 CT_LbsSharedData.cpp
+// This file contains the shared data class for the Lbs Test server
+//
+//
+
+
+#include "ctlbsshareddata.h"
+
+/**
+ Function : NewL
+ Description : Constructor
+ @internalTechnology
+ @param :
+ @return : N/A
+ @precondition : none
+ @postcondition : none
+*/
+CT_LbsSharedData* CT_LbsSharedData::NewL()
+ {
+ CT_LbsSharedData* sharedData=new(ELeave) CT_LbsSharedData();
+ CleanupStack::PushL(sharedData);
+ sharedData->ConstructL();
+ CleanupStack::Pop(sharedData);
+
+ return sharedData;
+ }
+
+
+/**
+ Function : ConstructL
+ Description : Constructor
+ @internalTechnology
+ @param :
+ @return : N/A
+ @precondition : none
+ @postcondition : none
+*/
+void CT_LbsSharedData::ConstructL()
+ {
+ }
+
+
+/**
+ Function : CT_LbsSharedData
+ Description : Constructor
+ @internalTechnology
+ @param :
+ @return : N/A
+ @precondition : none
+ @postcondition : none
+*/
+CT_LbsSharedData::CT_LbsSharedData()
+ {
+ iTestModuleInUse = ETrue; // Default is to use the test module.
+ }
+
+/**
+ Function : ~CT_LbsSharedData
+ Description : Destructor
+ @internalTechnology
+ @param :
+ @return : N/A
+ @precondition : none
+ @postcondition : none
+*/
+CT_LbsSharedData::~CT_LbsSharedData()
+ {
+ // Clear arrays.
+ for (TInt i = 0; i < iVerifyPosInfoArr.Count(); ++i)
+ delete iVerifyPosInfoArr[i];
+ iVerifyPosInfoArr.Close();
+
+ for (TInt i = 0; i < iCurrentPosInfoArr.Count(); ++i)
+ delete iCurrentPosInfoArr[i];
+ iCurrentPosInfoArr.Close();
+
+ //Clear logging arays
+ for (TInt i = 0; i < iSelfLocateLogInfoArr.Count(); ++i)
+ delete iSelfLocateLogInfoArr[i];
+ iSelfLocateLogInfoArr.Close();
+
+ for (TInt i = 0; i < iNetworkLocateLogInfoArr.Count(); ++i)
+ delete iNetworkLocateLogInfoArr[i];
+ iNetworkLocateLogInfoArr.Close();
+
+ for (TInt i = 0; i < iExternalLocateLogInfoArr.Count(); ++i)
+ delete iExternalLocateLogInfoArr[i];
+ iExternalLocateLogInfoArr.Close();
+
+ for (TInt i = 0; i < iX3PLocateLogInfoArr.Count(); ++i)
+ delete iX3PLocateLogInfoArr[i];
+ iX3PLocateLogInfoArr.Close();
+
+ for (TInt i = 0; i < iAssistanceDataLogInfoArr.Count(); ++i)
+ delete iAssistanceDataLogInfoArr[i];
+ iAssistanceDataLogInfoArr.Close();
+
+ }
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/common/src/ctlbsstep.cpp Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,67 @@
+// 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 CT_LbsStep.cpp
+// This is the class implementation for the LBS Test Step Base
+//
+//
+
+#include "ctlbsstep.h"
+
+#include "tlbsutils.h"
+#include "ctlbsasyncwaiter.h"
+
+
+/**
+ * @return - TVerdict
+ * Implementation of CTestStep base class virtual
+ * It is used for doing all initialisation common to derived classes in here.
+ * Make it being able to leave if there are any errors here as there's no point in
+ * trying to run a test step if anything fails.
+ * The leave will be picked up by the framework.
+ */
+TVerdict CT_LbsStep::doTestStepPreambleL()
+ {
+ // Process some common pre setting to test steps then set SetTestStepResult to EFail or Epass.
+ INFO_PRINTF1(_L(">>CT_LbsStep::doTestStepPreambleL()"));
+ SetTestStepResult(EPass);
+
+ return TestStepResult();
+ }
+
+
+/**
+ * @return - TVerdict
+ * Implementation of CTestStep base class virtual
+ * It is used for doing all after test treatment common to derived classes in here.
+ * Make it being able to leave
+ * The leave will be picked up by the framework.
+ */
+TVerdict CT_LbsStep::doTestStepPostambleL()
+ {
+ // Process some common post setting to test steps then set SetTestStepResult to EFail or Epass.
+ INFO_PRINTF1(_L(">>CT_LbsStep::doTestStepPostabmleL()"));
+
+ //SetTestStepResult(EPass); // or EFail
+ return TestStepResult();
+ }
+
+
+CT_LbsStep::~CT_LbsStep()
+ {
+ }
+
+
+CT_LbsStep::CT_LbsStep(CT_LbsServer& aParent) : iParent(aParent)
+ {
+ }
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/common/src/ctlbsstepclearlog.cpp Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,145 @@
+// 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 ctlbsstepclearlog.cpp
+// This is the class implementation to clear the log file
+//
+//
+
+
+
+/**
+ @file
+ @internalTechnology
+ @test
+*/
+
+#include "ctlbsstepclearlog.h"
+
+
+CT_LbsStep_ClearLog::CT_LbsStep_ClearLog(CT_LbsServer& aParent) : CT_LbsStep(aParent)
+ {
+ SetTestStepName(KLbsStep_ClearLog);
+ }
+
+/**
+Static Constructor
+*/
+CT_LbsStep_ClearLog* CT_LbsStep_ClearLog::New(CT_LbsServer& aParent)
+ {
+ return new CT_LbsStep_ClearLog(aParent);
+ // Note the lack of ELeave.
+ // This means that having insufficient memory will return NULL;
+ }
+
+
+/**
+@pre
+@return Test verdict
+@post Log file cleared
+*/
+
+TVerdict CT_LbsStep_ClearLog::doTestStepL()
+ {
+ SetTestStepResult(EPass);
+
+ // Create necessary variables for Log reading
+ RFs theFs;
+ CLogClient* client;
+ CLogViewEvent* view;
+ CT_LbsAsyncWaiter* activeWaiter;
+
+ // Initialise variables
+ TInt ErrorCode = theFs.Connect();
+ if(ErrorCode)
+ {
+ INFO_PRINTF1(_L("\t Error: Open FileServer failed."));
+ SetTestStepResult(EFail);
+ }
+
+
+ client = CLogClient::NewL(theFs, CActive::EPriorityStandard);
+ view = CLogViewEvent::NewL(*client, CActive::EPriorityStandard);
+ activeWaiter = CT_LbsAsyncWaiter::NewL(); // NEW activeWaiter
+
+
+ // Setup a time in the future, before which all events will be deleted
+ _LIT(KDateCorrect1,"20900101:");
+ TTime time;
+ TBuf <10> theDate(KDateCorrect1);
+ TInt err=time.Set(theDate);
+
+ // Ensure time has been set correctly
+ if(err != KErrNone)
+ {
+ INFO_PRINTF1(_L("Failed to set time"));
+ }
+
+ if(err == KErrGeneral)
+ {
+ INFO_PRINTF1(_L("Time syntax is incorrect"));
+ }
+
+ // Set the filter to view ALL logs
+ CLogFilter* filter = CLogFilter::NewL(); // NEW FILTER
+ CleanupStack::PushL(filter);
+ TBool res = view->SetFilterL(*filter, activeWaiter->iStatus);
+ if (res == EFalse)
+ {
+ INFO_PRINTF1(_L("\t No such events to filter in the view."));
+ client->Cancel();
+ }
+ else
+ {
+ // else If there are logs, flush them
+
+ // Cancel outstanding requests
+ client->Cancel();
+ activeWaiter->StartAndWait();
+ if (activeWaiter->iStatus != KErrNone)
+ {
+ INFO_PRINTF2(_L("\t Error: Cancel returned error %d."),activeWaiter->iStatus.Int());
+ SetTestStepResult(EFail);
+ }
+
+ // Clear ALL logs
+ client->ClearLog(time, activeWaiter->iStatus);
+ activeWaiter->StartAndWait();
+ if (activeWaiter->iStatus != KErrNone)
+ {
+ INFO_PRINTF2(_L("\t Error: Clear log returned error %d."),activeWaiter->iStatus.Int());
+ SetTestStepResult(EFail);
+ }
+
+ //Confirm log is cleared
+ if(view->CountL() != 0)
+ {
+ INFO_PRINTF2(_L("<FONT><B>ERROR: Log still has %d entries</B></FONT>"),view->CountL());
+ SetTestStepResult(EFail);
+ }
+
+ }
+
+ CleanupStack::PopAndDestroy(filter);
+
+ // Cleanup everything
+ view->Cancel();
+ client->Cancel();
+
+ delete view;
+ delete client;
+ theFs.Close();
+ delete activeWaiter;
+
+ return TestStepResult();
+ }
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/common/src/ctlbsstepconfighybridmodule.cpp Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,282 @@
+// Copyright (c) 2007-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:
+// This is the class implementation for the configuration of the AGPS Hybrid Module
+// The main purpose of this test step is to allow flexible configurability of the AGps Hybrid Module
+// from the Test Harness.
+// Various configuration options are read from the ini files and sent to the AGps Hybrid Module through the TH channel.
+// The AGps Hybrid Module always acknowledges each configuration message (see ProcessAGpsResponseMessage() method below).
+// This test step has been written to understand '.ini' files containing sections such as [Config2] below:
+// [Config2]
+// agps_module_update_file = c:\testdata\configs\lbs_molr.ini
+// agps_module_multi_updates_opt = on
+// agps_module_assistance_data_opt= on
+// $update,1,2,49.2,NAN,NAN,2,3*
+// $update,1,2,49.2,NAN,NAN,2,3*
+// $update,1,2,49.2,3.5,50,2,3*
+// => Current module possible options are:
+// agps_module_multi_updates_opt = [ on | off ]
+// It sets the module to send multiple updates after Target Time.
+// - When this mode is "off" only one update is sent just after 'Target time' (that is, the next update item available
+// from the module's update array).
+// - When this mode is "on", the module sends N + 1 updates between 'Target time' and 'Max fix time'
+// (currently hardcoded -> N = 2).
+// The final update is the next update item available from the module's update array.
+// The module calculates the first N updates from the final update, these updates contain incomplete
+// positions (NAN longitude and latitude, ...).
+// Note:'Target time' specifies the time when the location update should be provided by the AGPS module.
+// 'Max fix time' specifies the time maximum time the module should spend calculating the current location.
+// agps_module_assistance_data_opt = [ on | off ]
+// Only applicable when in Preferred Terminal Mode.
+// - When this mode is "on", for each new location request the AGps Module may Request new Assistance Data
+// (if it has not been delivered already, sometimes assistance data is delivered to the module before it is requested).
+// - When this mode is off, the default RequestAssistanceData(EAssistanceDataNone) call will always be made.
+// agps_module_dynamic_ass_data_opt = [ on | off ] (off by default)
+// Switches between different assistance data delivery methods:
+// -> OFF - On the first RequestAssistanceData requests the assistance data aDataMask is always set to
+// the assistance data that it needs. However for all subsequent assistance data requests the
+// aDataMask will always be set to 0. This is the method used in all the hybrid tests.
+// -> ON - Here the module will always request any assistance data that it has not yet received. So on
+// the first assistanceData request the aDataMask is set to the assistance data it requires. On
+// subsequent assistance data requests it will re-request the assistance data that has not yet
+// been delivered. This is the method that should be used in SUPL tests.
+// agps_module_clear_all_opt = [ on | off ]
+// Sets all the possible module options to on.
+// agps_module_set_all_opt = [ on | off ]
+// Sets all the possible module options to off.
+// => $update command:
+// The $update entries in the ini files are used to populate the AGps Hybrid Module update array.
+// Note: The Module's update array contains the update items used to generate the updates sent to the AGps Manager.
+// The $update command syntax should be as follows:
+// $update,num_of_updates,[num_of_measurements],[latitude],[longitude],[altitude],[horz_accuracy],[vert_accuracy],[update_err]*
+// - where num_of_updates is the number of updates to add to the update array. For values greater than 1, each update
+// will contain the same data position and measurement data as defined by the reminder of the sentence.
+// - where num_of_measurements is the number of satellite measurements to define (see TPositionGpsMeasurementData).
+// If this value is 0 no measurement data is defined and only the position data is defined.
+// Values for the actual measurement data will be generated automatically.
+// - where latitude, longitude, altitude, horz_accuracy, vert_accuracy are used to define the values for the
+// TPositionInfo part of the TPositionSatelliteInfo.
+// - where update_err, is the error code to return to the manager for the update. If NOT defined the value will be KErrNone.
+// => Possible Enhancements: This test step might be enhanced later on to also additional functionality such as:
+// agps_module_update_error = -1
+// agps_module_update_timeout = 5000000
+// agps_module_multi_updates_opt = 2 // where 2 is the number of multi updates sent before
+// // the final update is sent prior to 'Max fix time'
+//
+//
+
+
+
+#include "ctlbsstepconfighybridmodule.h"
+
+#include "tlbsutils.h"
+
+
+_LIT(KUpdateFile, "agps_module_update_file");
+_LIT(KClearAllOpt, "agps_module_clear_all_opt");
+_LIT(KAssistanceDataOpt, "agps_module_assistance_data_opt");
+_LIT(KMultiUpdateOpt, "agps_module_multi_updates_opt");
+_LIT(KReqAssDatReqOpt, "agps_module_req_ass_data_req_opt");
+_LIT(KSetAllOpt, "agps_module_set_all_opt");
+_LIT(KSuplAssDataOpt, "agps_module_dynamic_ass_data_opt");
+_LIT(KUpdateTimeout, "agps_module_update_timeout");
+_LIT(KOption_OFF, "off");
+_LIT(KOption_ON, "on");
+_LIT(KNoFileName, "");
+
+
+/**
+ * Constructor
+ */
+CT_LbsStep_ConfigHybridModule::CT_LbsStep_ConfigHybridModule(CT_LbsServer& aParent) : CT_LbsStep(aParent)
+ {
+ SetTestStepName(KLbsStep_ConfigHybridModule);
+ }
+
+
+/**
+Static Constructor
+*/
+CT_LbsStep_ConfigHybridModule* CT_LbsStep_ConfigHybridModule::New(CT_LbsServer& aParent)
+ {
+ return new CT_LbsStep_ConfigHybridModule(aParent);
+ // Note the lack of ELeave.
+ // This means that having insufficient memory will return NULL;
+ }
+
+/**
+ * @return - TVerdict code
+ * Override of base class virtual
+ */
+TVerdict CT_LbsStep_ConfigHybridModule::doTestStepPreambleL()
+ {
+ INFO_PRINTF1(_L("Test Preamble. CT_LbsStep_ConfigHybridModule"));
+
+ // create the test channel handler
+ iAGpsHandler = CT_LbsAGpsHandler::NewL(this);
+
+ SetTestStepResult(EPass);
+ return TestStepResult();
+ }
+
+/**
+ * @return - TVerdict code
+ * Override of base class virtual
+ */
+TVerdict CT_LbsStep_ConfigHybridModule::doTestStepPostambleL()
+ {
+ INFO_PRINTF1(_L("Test Postamble. CT_LbsStep_ConfigHybridModule"));
+
+ delete iAGpsHandler;
+ iAGpsHandler = NULL;
+
+ return TestStepResult();
+ }
+
+/**
+ * @return - TVerdict code
+ * Override of base class pure virtual
+ * Our implementation only gets called if the base class doTestStepPreambleL() did
+ * not leave. That being the case, the current test result value will be EPass.
+ */
+TVerdict CT_LbsStep_ConfigHybridModule::doTestStepL()
+ {
+ INFO_PRINTF1(_L(">>CT_LbsStep_ConfigHybridModule::doTestStepL()")); // ??
+
+ if (TestStepResult() == EPass)
+ {
+ TPtrC configFileName;
+ GetStringFromConfig(ConfigSection(), KUpdateFile, configFileName);
+ if (configFileName != KNoFileName)
+ {
+ iConfigCtr++;
+ iAGpsHandler->SendRequestUpdateInitMsg(configFileName, ConfigSection());
+ }
+
+ TPtrC clearAllOpt;
+ GetStringFromConfig(ConfigSection(), KClearAllOpt, clearAllOpt);
+ if (clearAllOpt == KOption_ON)
+ {
+ iConfigCtr++;
+ iAGpsHandler->SendRequestClearAllModuleOptions();
+ }
+
+ TPtrC updateOpt;
+ GetStringFromConfig(ConfigSection(), KMultiUpdateOpt, updateOpt);
+ if (updateOpt == KOption_OFF)
+ {
+ iConfigCtr++;
+ iAGpsHandler->SendRequestModuleOption(ELbsHybridModuleOptions_MultiUpdatesOn, EFalse);
+ }
+ else if (updateOpt == KOption_ON)
+ {
+ iConfigCtr++;
+ iAGpsHandler->SendRequestModuleOption(ELbsHybridModuleOptions_MultiUpdatesOn, ETrue);
+ }
+
+ TPtrC assDataOpt;
+ GetStringFromConfig(ConfigSection(), KAssistanceDataOpt, assDataOpt);
+ if (assDataOpt == KOption_OFF)
+ {
+ iConfigCtr++;
+ iAGpsHandler->SendRequestModuleOption(ELbsHybridModuleOptions_AssistanceDataOn, EFalse);
+ }
+ else if (assDataOpt == KOption_ON)
+ {
+ iConfigCtr++;
+ iAGpsHandler->SendRequestModuleOption(ELbsHybridModuleOptions_AssistanceDataOn, ETrue);
+ }
+
+
+ TPtrC reqAssDataOpt;
+ GetStringFromConfig(ConfigSection(), KReqAssDatReqOpt, reqAssDataOpt);
+ if (reqAssDataOpt == KOption_OFF)
+ {
+ iConfigCtr++;
+ iAGpsHandler->SendRequestModuleOption(ELbsHybridModuleOptions_DisableReqAssistData, EFalse);
+ }
+ else if (reqAssDataOpt == KOption_ON)
+ {
+ iConfigCtr++;
+ iAGpsHandler->SendRequestModuleOption(ELbsHybridModuleOptions_DisableReqAssistData, ETrue);
+ }
+
+
+ TPtrC suplAssDataOpt;
+ GetStringFromConfig(ConfigSection(), KSuplAssDataOpt, suplAssDataOpt);
+ if (suplAssDataOpt == KOption_OFF)
+ {
+ iConfigCtr++;
+ iAGpsHandler->SendRequestModuleOption(ELbsHybridModuleOptions_DynamicAssistanceData, EFalse);
+ }
+ else if (suplAssDataOpt == KOption_ON)
+ {
+ iConfigCtr++;
+ iAGpsHandler->SendRequestModuleOption(ELbsHybridModuleOptions_DynamicAssistanceData, ETrue);
+ }
+
+
+
+ TPtrC setAllOpt;
+ GetStringFromConfig(ConfigSection(), KSetAllOpt, setAllOpt);
+ if (setAllOpt == KOption_ON)
+ {
+ iConfigCtr++;
+ iAGpsHandler->SendRequestSetAllModuleOptions();
+ }
+ TInt updateTimeout;
+ if (GetIntFromConfig(ConfigSection(), KUpdateTimeout, updateTimeout))
+ {
+ TTimeIntervalMicroSeconds timeoutVal(updateTimeout);
+
+ iConfigCtr++;
+ iAGpsHandler->SendRequestTimeOutMsg(timeoutVal);
+ }
+
+ // All the configuration requests sent, now start the active scheduler
+ if (iConfigCtr)
+ {
+ CActiveScheduler::Start();
+ }
+ }
+
+
+ INFO_PRINTF1(_L("<<CT_LbsStep_ConfigHybridModule::doTestStepL()")); //??
+
+ return TestStepResult();
+ }
+
+
+void CT_LbsStep_ConfigHybridModule::ProcessAGpsResponseMessage(const TT_LbsAGpsResponseMsg::TModuleResponseType aResponse)
+ {
+ iConfigCtr--;
+
+ if (TT_LbsAGpsResponseMsg::EModuleResponseOk == aResponse)
+ {
+ // If any of the previous responses has failed do not override the verdict
+ if (iVerdict != EFail)
+ {
+ iVerdict = EPass;
+ }
+ }
+ else
+ {
+ iVerdict = EFail;
+ }
+
+ if (!iConfigCtr)
+ {
+ SetTestStepResult(iVerdict);
+ CActiveScheduler::Stop();
+ }
+ }
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/common/src/ctlbsstepcreateupdateinfo.cpp Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,67 @@
+// Copyright (c) 2007-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 ctlbsstep_createupdateinfo.cpp
+// This is the class implementation for the Notify Position Update Tests
+//
+//
+
+#include "ctlbsstepcreateupdateinfo.h"
+
+#include "tlbsutils.h"
+
+
+_LIT(KUpdateInfoFile, "update_info_file");
+
+/**
+ * Constructor
+ */
+CT_LbsStep_CreateUpdateInfo::CT_LbsStep_CreateUpdateInfo(CT_LbsServer& aParent) : CT_LbsStep(aParent)
+ {
+ SetTestStepName(KLbsStep_CreateUpdateInfo);
+ }
+
+
+/**
+Static Constructor
+*/
+CT_LbsStep_CreateUpdateInfo* CT_LbsStep_CreateUpdateInfo::New(CT_LbsServer& aParent)
+ {
+ return new CT_LbsStep_CreateUpdateInfo(aParent);
+ // Note the lack of ELeave.
+ // This means that having insufficient memory will return NULL;
+ }
+
+
+/**
+ * @return - TVerdict code
+ * Override of base class pure virtual
+ * Our implementation only gets called if the base class doTestStepPreambleL() did
+ * not leave. That being the case, the current test result value will be EPass.
+ */
+TVerdict CT_LbsStep_CreateUpdateInfo::doTestStepL()
+ {
+ INFO_PRINTF1(_L(">>CT_LbsStep_CreateUpdateInfo::doTestStepL()"));
+
+ if (TestStepResult() == EPass)
+ {
+ TPtrC configFileName;
+ GetStringFromConfig(ConfigSection(), KUpdateInfoFile, configFileName);
+ RPointerArray<TAny>& updateInfoArr = iParent.iSharedData->iUpdateArr;
+ //Populate the array by extracting the data from the ini file
+ }
+
+ INFO_PRINTF1(_L("<<CT_LbsStep_CreateUpdateInfo::doTestStepL()"));
+
+ return TestStepResult();
+ }
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/common/src/ctlbsstepcreateverifymodinfo.cpp Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,80 @@
+// 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 ctlbsstep_createverifymodinfo.cpp
+// This is the class implementation for the module info tests
+//
+//
+
+#include "ctlbsstepcreateverifymodinfo.h"
+
+#include "tlbsutils.h"
+
+//module_id in ini file
+_LIT(KLbsModuleId, "module_id");
+
+/**
+ * Constructor
+ */
+CT_LbsStep_CreateVerifyModInfo::CT_LbsStep_CreateVerifyModInfo(CT_LbsServer& aParent) : CT_LbsStep(aParent)
+ {
+ SetTestStepName(KLbsStep_CreateVerifyModInfo);
+ }
+
+
+/**
+Static Constructor
+*/
+CT_LbsStep_CreateVerifyModInfo* CT_LbsStep_CreateVerifyModInfo::New(CT_LbsServer& aParent)
+ {
+ return new CT_LbsStep_CreateVerifyModInfo(aParent);
+ // Note the lack of ELeave.
+ // This means that having insufficient memory will return NULL;
+ }
+
+/**
+ * @return - TVerdict code
+ * Override of base class pure virtual
+ * Our implementation only gets called if the base class doTestStepPreambleL() did
+ * not leave. That being the case, the current test result value will be EPass.
+ */
+TVerdict CT_LbsStep_CreateVerifyModInfo::doTestStepL()
+ {
+ // Helper test step used to Create the Verify Mod Information
+ INFO_PRINTF1(_L(">>CT_LbsStep_CreateVerifyModInfo::doTestStepL()"));
+
+ if (TestStepResult() == EPass)
+ {
+ TInt moduleid;
+ TBool moduleid_exists;
+ moduleid_exists = GetIntFromConfig(ConfigSection(), KLbsModuleId, moduleid);
+ if(!moduleid_exists)
+ {
+ INFO_PRINTF1(_L("Could not get module Id from section"));
+ SetTestStepResult(EFail);
+ }
+
+ else
+ {
+ // Access the verify mod info and pass to utils func to be populated.
+ TPositionModuleInfo& modinfo = iParent.iSharedData->iVerifyModuleInfo;
+ T_LbsUtils utils;
+ TPositionModuleId moduleUid = TUid::Uid(moduleid);
+ utils.Create_ModuleInfoL(moduleUid,modinfo);
+ }
+ }
+
+ INFO_PRINTF1(_L("<<CT_LbsStep_CreateVerifyModInfo::doTestStepL()"));
+
+ return TestStepResult();
+ }
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/common/src/ctlbsstepcreateverifymoduledata.cpp Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,104 @@
+// 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 ctlbsstep_createverifymoduledata.cpp
+// This is the class implementation for the Notify Position Update Tests
+//
+//
+
+#include "ctlbsstepcreateverifymoduledata.h"
+
+#include "tlbsutils.h"
+
+/**
+ "module_data_file" = name of the .ini file containing the module data items including
+ position info array entries, module stauts, module update options.
+
+ If the file name is not present the module data will contain default items.
+ See tlbsutils.cpp for details of support ini file commands.
+*/
+_LIT(KModuleDataFile, "module_data_file");
+
+/**
+ * Constructor
+ */
+CT_LbsStep_CreateVerifyModuleData::CT_LbsStep_CreateVerifyModuleData(CT_LbsServer& aParent) : CT_LbsStep(aParent)
+ {
+ SetTestStepName(KLbsStep_CreateVerifyModuleData);
+ }
+
+
+/**
+Static Constructor
+*/
+CT_LbsStep_CreateVerifyModuleData* CT_LbsStep_CreateVerifyModuleData::New(CT_LbsServer& aParent)
+ {
+ return new CT_LbsStep_CreateVerifyModuleData(aParent);
+ // Note the lack of ELeave.
+ // This means that having insufficient memory will return NULL;
+ }
+
+
+/**
+ * @return - TVerdict code
+ * Override of base class pure virtual
+ * Our implementation only gets called if the base class doTestStepPreambleL() did
+ * not leave. That being the case, the current test result value will be EPass.
+ */
+TVerdict CT_LbsStep_CreateVerifyModuleData::doTestStepL()
+ {
+ // Helper test step used to Create the Verify Position Information Array.
+ INFO_PRINTF1(_L(">>CT_LbsStep_CreateVerifyModuleData::doTestStepL()"));
+
+ if (TestStepResult() == EPass)
+ {
+ TPtrC configFileName;
+ GetStringFromConfig(ConfigSection(), KModuleDataFile, configFileName);
+
+ // Access the verify pos array and pass to utils func to be populated.
+ RPointerArray<TAny>& posInfoArr = iParent.iSharedData->iVerifyPosInfoArr;
+ TPositionUpdateOptions& updateOpts = iParent.iSharedData->iVerifyUpdateOpts;
+ TPositionModuleStatus& modStatus = iParent.iSharedData->iVerifyModuleStatus;
+ T_LbsUtils utils;
+
+ // Populate the shared data items.
+ utils.GetConfigured_PosInfosL(configFileName, ConfigSection(), posInfoArr); // Note previous entries will be cleared.
+ utils.GetConfigured_ModuleStatusL(configFileName, ConfigSection(), modStatus);
+ utils.GetConfigured_ModuleUpdateOptionsL(configFileName, ConfigSection(), updateOpts);
+// remove aove module does not know abot update options...
+
+ // Notify the test module that it's required to update it's test data.
+ TPtrC modType;
+ GetStringFromConfig(ConfigSection(), KLbsModuleType, modType);
+ if (modType != KLbsModuleType_Real)
+ {
+
+ TModuleDataIn modDataIn;
+
+ modDataIn.iRequestType = TModuleDataIn::EModuleRequestConfig;
+ modDataIn.iConfigFileName = configFileName;
+ modDataIn.iConfigSection = ConfigSection();
+
+ // Now publish the ini file and section name to the test module - will block.
+ utils.NotifyModuleOfConfigChangeL(modDataIn);
+ }
+ else
+ {
+ iParent.iSharedData->iTestModuleInUse = EFalse; // Indicate to test harness the real A-GPS integration module is being used.
+ }
+ }
+
+ INFO_PRINTF1(_L("<<CT_LbsStep_CreateVerifyModuleData::doTestStepL()"));
+
+ return TestStepResult();
+ }
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/common/src/ctlbsstepcreateverifyposinfos.cpp Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,97 @@
+// 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 ctlbsstep_createverifyposinfos.cpp
+// This is the class implementation for the Notify Position Update Tests
+//
+//
+
+#include "ctlbsstepcreateverifyposinfos.h"
+
+#include "tlbsutils.h"
+
+/**
+ "pos_infos_file" = name of the .ini file containing the position info array entries.
+
+ If the file name is not present the array will contain a single default TPositionInfo entry.
+ See tlbsutils.cpp for details of support ini file commands.
+*/
+_LIT(KPosInfosFile, "pos_infos_file");
+
+/**
+ * Constructor
+ */
+CT_LbsStep_CreateVerifyPosInfos::CT_LbsStep_CreateVerifyPosInfos(CT_LbsServer& aParent) : CT_LbsStep(aParent)
+ {
+ SetTestStepName(KLbsStep_CreateVerifyPosInfos);
+ }
+
+
+/**
+Static Constructor
+*/
+CT_LbsStep_CreateVerifyPosInfos* CT_LbsStep_CreateVerifyPosInfos::New(CT_LbsServer& aParent)
+ {
+ return new CT_LbsStep_CreateVerifyPosInfos(aParent);
+ // Note the lack of ELeave.
+ // This means that having insufficient memory will return NULL;
+ }
+
+
+/**
+ * @return - TVerdict code
+ * Override of base class pure virtual
+ * Our implementation only gets called if the base class doTestStepPreambleL() did
+ * not leave. That being the case, the current test result value will be EPass.
+ */
+TVerdict CT_LbsStep_CreateVerifyPosInfos::doTestStepL()
+ {
+ // Helper test step used to Create the Verify Position Information Array.
+ INFO_PRINTF1(_L(">>CT_LbsStep_CreateVerifyPosInfos::doTestStepL()"));
+
+ if (TestStepResult() == EPass)
+ {
+ TPtrC configFileName;
+ GetStringFromConfig(ConfigSection(), KPosInfosFile, configFileName);
+
+ // Access the verify pos array and pass to utils func to be populated.
+ RPointerArray<TAny>& posInfoArr = iParent.iSharedData->iVerifyPosInfoArr;
+ T_LbsUtils utils;
+
+ utils.GetConfigured_PosInfosL(configFileName, ConfigSection(), posInfoArr); // Note previous entries will be cleared.
+
+ // Notify the test module that it's required to update it's test data.
+ TPtrC modType;
+ GetStringFromConfig(ConfigSection(), KLbsModuleType, modType);
+ if (modType != KLbsModuleType_Real)
+ {
+
+ TModuleDataIn modDataIn;
+
+ modDataIn.iRequestType = TModuleDataIn::EModuleRequestConfig;
+ modDataIn.iConfigFileName = configFileName;
+ modDataIn.iConfigSection = ConfigSection();
+
+ // Now publish the ini file and section name to the test module - will block.
+ utils.NotifyModuleOfConfigChangeL(modDataIn);
+ }
+ else
+ {
+ iParent.iSharedData->iTestModuleInUse = EFalse; // Indicate to test harness the real A-GPS integration module is being used.
+ }
+ }
+
+ INFO_PRINTF1(_L("<<CT_LbsStep_CreateVerifyPosInfos::doTestStepL()"));
+
+ return TestStepResult();
+ }
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/common/src/ctlbsstepinstallscheduler.cpp Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,64 @@
+// 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 ctlbsstep_installscheduler.cpp
+// This is the class implementation for the Install Active Scheduler Test Step
+//
+//
+
+
+
+/**
+ @file
+ @internalTechnology
+ @test
+*/
+
+#include "ctlbsstepinstallscheduler.h"
+
+CT_LbsStep_InstallScheduler::CT_LbsStep_InstallScheduler(CT_LbsServer& aParent) : CT_LbsStep(aParent)
+ {
+ SetTestStepName(KLbsStep_InstallScheduler);
+ }
+
+/**
+Static Constructor
+*/
+CT_LbsStep_InstallScheduler* CT_LbsStep_InstallScheduler::New(CT_LbsServer& aParent)
+ {
+ return new CT_LbsStep_InstallScheduler(aParent);
+ // Note the lack of ELeave.
+ // This means that having insufficient memory will return NULL;
+ }
+
+/**
+@pre No Active Scheduler installed in the worker test thread
+@return Test verdict
+@post Test server's Active Scheduler member installed in worker thread
+*/
+TVerdict CT_LbsStep_InstallScheduler::doTestStepL()
+ {
+ INFO_PRINTF1(_L(">>CT_LbsStep_InstallScheduler::doTestStepL()"));
+
+ if( CActiveScheduler::Current() )
+ {
+ INFO_PRINTF1(_L("Test Warning: Scheduler already installed in worker thread"));
+
+ return TestStepResult();
+ }
+ CActiveScheduler::Install( iParent.iScheduler );
+
+ INFO_PRINTF1(_L("<<CT_LbsStep_InstallScheduler::doTestStepL()"));
+
+ return TestStepResult();
+ }
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/common/src/ctlbsstepresetdefaultadmin.cpp Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,84 @@
+// 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 ctlbsstepresetdefaultadmin.cpp
+// This is the class implementation for the Reset Default Admin Test Step
+//
+//
+
+
+
+/**
+ @file
+ @internalTechnology
+ @test
+*/
+
+#include <centralrepository.h>
+#include "ctlbsstepresetdefaultadmin.h"
+#include <lbsadmin.h>
+
+CT_LbsStep_ResetDefaultAdmin::CT_LbsStep_ResetDefaultAdmin(CT_LbsServer& aParent) : CT_LbsStep(aParent)
+ {
+ SetTestStepName(KLbsStep_ResetDefaultAdmin);
+ }
+
+/**
+Static Constructor
+*/
+CT_LbsStep_ResetDefaultAdmin* CT_LbsStep_ResetDefaultAdmin::New(CT_LbsServer& aParent)
+ {
+ return new CT_LbsStep_ResetDefaultAdmin(aParent);
+ // Note the lack of ELeave.
+ // This means that having insufficient memory will return NULL;
+ }
+
+
+/**
+@pre
+@return Test verdict
+@post All admin settings reset to default
+*/
+TVerdict CT_LbsStep_ResetDefaultAdmin::doTestStepL()
+ {
+ INFO_PRINTF1(_L(">>CT_LbsStep_ResetDefaultAdmin::doTestStepL()"));
+
+ CLbsAdmin* adminApi = CLbsAdmin::NewL();
+ CleanupStack::PushL(adminApi);
+
+ TInt err = adminApi->ResetToDefault();
+
+ if(!KErrNone == err)
+ {
+ SetTestStepResult(EFail);
+ }
+
+ // Reset the LbsRoot cenrep also.
+ const TUid KLbsRootRepositoryUid = { 0x10282266 };
+ CRepository* rootRep = CRepository::NewLC(KLbsRootRepositoryUid);
+ err = rootRep->Reset();
+
+ if(!KErrNone == err)
+ {
+ SetTestStepResult(EFail);
+ }
+
+ INFO_PRINTF1(_L("<<CT_LbsStep_ResetDefaultAdmin::doTestStepL()"));
+
+ CleanupStack::PopAndDestroy(2, adminApi);
+
+ // Alow the change to be propagated
+ User::After(4000000);
+
+ return TestStepResult();
+ }
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/common/src/ctlbsstepsetatamode.cpp Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,99 @@
+// 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 ctlbsstepsetatamode.cpp
+// This is the class implementation for the Set Behaviour Mode Original Step
+//
+//
+
+
+
+/**
+ @file
+ @internalTechnology
+ @test
+*/
+
+#include "ctlbsstepsetatamode.h"
+#include <lbsadmin.h>
+
+CT_LbsStep_SetATAMode::CT_LbsStep_SetATAMode(CT_LbsServer& aParent) : CT_LbsStep(aParent)
+ {
+ SetTestStepName(KLbsStep_SetATAMode);
+ }
+
+/**
+Static Constructor
+*/
+CT_LbsStep_SetATAMode* CT_LbsStep_SetATAMode::New(CT_LbsServer& aParent)
+ {
+ return new CT_LbsStep_SetATAMode(aParent);
+ // Note the lack of ELeave.
+ // This means that having insufficient memory will return NULL;
+ }
+
+
+/**
+ */
+TBool CT_LbsStep_SetATAMode::SetAndVerifyATAModeL()
+ {
+ TBool ret = TRUE;
+ CLbsAdmin* adminApi = CLbsAdmin::NewL();
+ CleanupStack::PushL(adminApi);
+
+ TInt err = adminApi->Set(KLbsSettingRoamingGpsMode, CLbsAdmin::EGpsAlwaysTerminalAssisted);
+ User::LeaveIfError(err);
+ err = adminApi->Set(KLbsSettingHomeGpsMode, CLbsAdmin::EGpsAlwaysTerminalAssisted);
+ User::LeaveIfError(err);
+ // Alow he setting to be propagated
+ User::After(2000000);
+
+ CLbsAdmin::TGpsMode gpsMode;
+ err = adminApi->Get(KLbsSettingRoamingGpsMode, gpsMode);
+ User::LeaveIfError(err);
+ if(gpsMode != CLbsAdmin::EGpsAlwaysTerminalAssisted)
+ {
+ INFO_PRINTF1(_L("Admin setting didn't work"));
+ ret = FALSE;
+ }
+
+ err = adminApi->Get(KLbsSettingHomeGpsMode, gpsMode);
+ User::LeaveIfError(err);
+ if(gpsMode != CLbsAdmin::EGpsAlwaysTerminalAssisted)
+ {
+ INFO_PRINTF1(_L("Admin setting didn't work"));
+ ret = FALSE;
+ }
+ CleanupStack::PopAndDestroy(adminApi);
+
+ return ret;
+ }
+
+/**
+@pre
+@return Test verdict
+@post Lbs Behaviour mode set to "original"
+*/
+TVerdict CT_LbsStep_SetATAMode::doTestStepL()
+ {
+ INFO_PRINTF1(_L(">>CT_LbsStep_SetATAMode::doTestStepL()"));
+
+ if(!SetAndVerifyATAModeL())
+ {
+ SetTestStepResult(EFail);
+ }
+
+ INFO_PRINTF1(_L("<<CT_LbsStep_SetATAMode::doTestStepL()"));
+
+ return TestStepResult();
+ }
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/common/src/ctlbsstepsetautonomousmode.cpp Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,90 @@
+// 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 ctlbsstep_setautonomousmode.cpp
+// This is the class implementation for the Set Autonomous Moder Test Step
+//
+//
+
+
+
+/**
+ @file
+ @internalTechnology
+ @test
+*/
+
+#include "ctlbsstepsetautonomousmode.h"
+#include <lbsadmin.h>
+
+CT_LbsStep_SetAutonomousMode::CT_LbsStep_SetAutonomousMode(CT_LbsServer& aParent) : CT_LbsStep(aParent)
+ {
+ SetTestStepName(KLbsStep_SetAutonomousMode);
+ }
+
+/**
+Static Constructor
+*/
+CT_LbsStep_SetAutonomousMode* CT_LbsStep_SetAutonomousMode::New(CT_LbsServer& aParent)
+ {
+ return new CT_LbsStep_SetAutonomousMode(aParent);
+ // Note the lack of ELeave.
+ // This means that having insufficient memory will return NULL;
+ }
+
+
+/**
+ */
+TBool CT_LbsStep_SetAutonomousMode::SetAndVerifyAutonomousGpsModeL()
+ {
+ TBool ret = TRUE;
+ CLbsAdmin* adminApi = CLbsAdmin::NewL();
+ CleanupStack::PushL(adminApi);
+ CLbsAdmin::TGpsMode mode;
+
+ TInt err = adminApi->Set(KLbsSettingHomeGpsMode, CLbsAdmin::EGpsAutonomous);
+ User::LeaveIfError(err);
+ err = adminApi->Get(KLbsSettingHomeGpsMode, mode);
+ User::LeaveIfError(err);
+
+ if(mode != CLbsAdmin::EGpsAutonomous)
+ {
+ INFO_PRINTF1(_L("Admin setting didn't work"));
+ ret = FALSE;
+ }
+ CleanupStack::PopAndDestroy(adminApi);
+
+ // Alow he setting to be propagated
+ User::After(2000000);
+
+ return ret;
+ }
+
+/**
+@pre
+@return Test verdict
+@post GPSMode set to autonomous
+*/
+TVerdict CT_LbsStep_SetAutonomousMode::doTestStepL()
+ {
+ INFO_PRINTF1(_L(">>CT_LbsStep_SetAutonomousMode::doTestStepL()"));
+
+ if(!SetAndVerifyAutonomousGpsModeL())
+ {
+ SetTestStepResult(EFail);
+ }
+
+ INFO_PRINTF1(_L("<<CT_LbsStep_SetAutonomousMode::doTestStepL()"));
+
+ return TestStepResult();
+ }
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/common/src/ctlbsstepsetbehaviourmodeoriginal.cpp Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,91 @@
+// 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 ctlbsstepsetbehaviourmodeoriginal.cpp
+// This is the class implementation for the Set Behaviour Mode Original Step
+//
+//
+
+
+
+/**
+ @file
+ @internalTechnology
+ @test
+*/
+
+#include "ctlbsstepsetbehaviourmodeoriginal.h"
+#include <lbsadmin.h>
+
+CT_LbsStep_SetBehaviourModeOriginal::CT_LbsStep_SetBehaviourModeOriginal(CT_LbsServer& aParent) : CT_LbsStep(aParent)
+ {
+ SetTestStepName(KLbsStep_SetBehaviourModeOriginal);
+ }
+
+/**
+Static Constructor
+*/
+CT_LbsStep_SetBehaviourModeOriginal* CT_LbsStep_SetBehaviourModeOriginal::New(CT_LbsServer& aParent)
+ {
+ return new CT_LbsStep_SetBehaviourModeOriginal(aParent);
+ // Note the lack of ELeave.
+ // This means that having insufficient memory will return NULL;
+ }
+
+
+/**
+ */
+TBool CT_LbsStep_SetBehaviourModeOriginal::SetAndVerifyBehaviourModeOriginalL()
+ {
+ TBool ret = TRUE;
+ CLbsAdmin* adminApi = CLbsAdmin::NewL();
+ CleanupStack::PushL(adminApi);
+
+ CLbsAdmin::TLbsBehaviourMode behaviourMode;
+
+ TInt err = adminApi->Set(KLbsSettingBehaviourMode, CLbsAdmin::ELbsBehaviourModeOriginal);
+ User::LeaveIfError(err);
+ err = adminApi->Get(KLbsSettingBehaviourMode, behaviourMode);
+ User::LeaveIfError(err);
+
+ if(behaviourMode != CLbsAdmin::ELbsBehaviourModeOriginal)
+ {
+ INFO_PRINTF1(_L("Admin setting didn't work"));
+ ret = FALSE;
+ }
+ CleanupStack::PopAndDestroy(adminApi);
+
+ // Alow he setting to be propagated
+ User::After(2000000);
+
+ return ret;
+ }
+
+/**
+@pre
+@return Test verdict
+@post Lbs Behaviour mode set to "original"
+*/
+TVerdict CT_LbsStep_SetBehaviourModeOriginal::doTestStepL()
+ {
+ INFO_PRINTF1(_L(">>CT_LbsStep_SetBehaviourModeOriginal::doTestStepL()"));
+
+ if(!SetAndVerifyBehaviourModeOriginalL())
+ {
+ SetTestStepResult(EFail);
+ }
+
+ INFO_PRINTF1(_L("<<CT_LbsStep_SetBehaviourModeOriginal::doTestStepL()"));
+
+ return TestStepResult();
+ }
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/common/src/ctlbsstepsetprivhandler.cpp Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,119 @@
+// 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 ctlbsstepsetprivhandler.cpp
+// This is the class implementation for the Set Privacy Controller Test Step
+//
+//
+
+
+
+/**
+ @file
+ @internalTechnology
+ @test
+*/
+
+#include "ctlbsstepsetprivhandler.h"
+
+//Literals Used
+_LIT(KHandlerType, "privhandler_type");
+
+CT_LbsStep_SetPrivacyHandler::CT_LbsStep_SetPrivacyHandler(CT_LbsServer& aParent) : CT_LbsStep(aParent)
+ {
+ SetTestStepName(KLbsStep_SetPrivacyHandler);
+ }
+
+/**
+Static Constructor
+*/
+CT_LbsStep_SetPrivacyHandler* CT_LbsStep_SetPrivacyHandler::New(CT_LbsServer& aParent)
+ {
+ return new CT_LbsStep_SetPrivacyHandler(aParent);
+ // Note the lack of ELeave.
+ // This means that having insufficient memory will return NULL;
+ }
+
+
+/** Let LBS know whether we're using privacy controller or notifier:
+ */
+TBool CT_LbsStep_SetPrivacyHandler::SetAndVerifyPrivacyHandlerL(CLbsAdmin::TPrivacyHandler aPrivacyHandlerType)
+ {
+ TBool ret = TRUE;
+ CLbsAdmin* adminApi = CLbsAdmin::NewL();
+ CleanupStack::PushL(adminApi);
+ TInt err;
+
+ //CLbsAdmin::TPrivacyHandler privacyHandler = CLbsAdmin::EPrivacyHandleByController;
+ err = adminApi->Set(KLbsSettingPrivacyHandler, aPrivacyHandlerType);
+
+ User::LeaveIfError(err);
+ err = adminApi->Get(KLbsSettingPrivacyHandler, aPrivacyHandlerType);
+ User::LeaveIfError(err);
+
+ //Now we support 3 Privacy Handlers so need to comment out below check
+ //if(aPrivacyHandlerType != CLbsAdmin::EPrivacyHandleByController)
+ // {
+ // INFO_PRINTF1(_L("Admin setting didn't work"));
+ // ret = FALSE;
+ // }
+
+ CleanupStack::PopAndDestroy(adminApi);
+
+ // Allow he setting to be propagated
+ User::After(4 * 1000000);
+
+ return ret;
+ }
+
+/**
+@pre
+@return Test verdict
+@post GPSMode set to autonomous
+*/
+TVerdict CT_LbsStep_SetPrivacyHandler::doTestStepL()
+ {
+ INFO_PRINTF1(_L(">>CT_LbsStep_SetPrivacyHandler::doTestStepL()"));
+
+ CLbsAdmin::TPrivacyHandler privacyHandlerType = CLbsAdmin::EPrivacyHandleByController;
+ TInt privhandlerconfig;
+
+ if (GetIntFromConfig(ConfigSection(), KHandlerType, privhandlerconfig))
+ {
+ if(1 == privhandlerconfig)
+ {
+ privacyHandlerType = CLbsAdmin::EPrivacyHandleByController;
+ }
+ else if (2 == privhandlerconfig)
+ {
+ privacyHandlerType = CLbsAdmin::EPrivacyHandleByNotifier;
+ }
+ else if (3 == privhandlerconfig)
+ {
+ privacyHandlerType = CLbsAdmin::EPrivacyHandleByAdvancedNotifier;
+ }
+ else
+ {
+ INFO_PRINTF2(_L(">>Unrecognised privacyHandlerType: %d"), privacyHandlerType);
+ User::Invariant();
+ }
+
+ if(!SetAndVerifyPrivacyHandlerL(privacyHandlerType))
+ {
+ SetTestStepResult(EFail);
+ }
+ }
+ INFO_PRINTF1(_L("<<CT_LbsStep_SetPrivacyHandler::doTestStepL()"));
+
+ return TestStepResult();
+ }
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/common/src/ctlbsstepsetptamode.cpp Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,99 @@
+// 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 ctlbsstepsetptamode.cpp
+// This is the class implementation for the Set Behaviour Mode Original Step
+//
+//
+
+
+
+/**
+ @file
+ @internalTechnology
+ @test
+*/
+
+#include "ctlbsstepsetptamode.h"
+#include <lbsadmin.h>
+
+CT_LbsStep_SetPTAMode::CT_LbsStep_SetPTAMode(CT_LbsServer& aParent) : CT_LbsStep(aParent)
+ {
+ SetTestStepName(KLbsStep_SetPTAMode);
+ }
+
+/**
+Static Constructor
+*/
+CT_LbsStep_SetPTAMode* CT_LbsStep_SetPTAMode::New(CT_LbsServer& aParent)
+ {
+ return new CT_LbsStep_SetPTAMode(aParent);
+ // Note the lack of ELeave.
+ // This means that having insufficient memory will return NULL;
+ }
+
+
+/**
+ */
+TBool CT_LbsStep_SetPTAMode::SetAndVerifyPTAModeL()
+ {
+ TBool ret = TRUE;
+ CLbsAdmin* adminApi = CLbsAdmin::NewL();
+ CleanupStack::PushL(adminApi);
+
+ TInt err = adminApi->Set(KLbsSettingRoamingGpsMode, CLbsAdmin::EGpsPreferTerminalAssisted);
+ User::LeaveIfError(err);
+ err = adminApi->Set(KLbsSettingHomeGpsMode, CLbsAdmin::EGpsPreferTerminalAssisted);
+ User::LeaveIfError(err);
+ // Alow he setting to be propagated
+ User::After(2000000);
+
+ CLbsAdmin::TGpsMode gpsMode;
+ err = adminApi->Get(KLbsSettingRoamingGpsMode, gpsMode);
+ User::LeaveIfError(err);
+ if(gpsMode != CLbsAdmin::EGpsPreferTerminalAssisted)
+ {
+ INFO_PRINTF1(_L("Admin setting didn't work"));
+ ret = FALSE;
+ }
+
+ err = adminApi->Get(KLbsSettingHomeGpsMode, gpsMode);
+ User::LeaveIfError(err);
+ if(gpsMode != CLbsAdmin::EGpsPreferTerminalAssisted)
+ {
+ INFO_PRINTF1(_L("Admin setting didn't work"));
+ ret = FALSE;
+ }
+ CleanupStack::PopAndDestroy(adminApi);
+
+ return ret;
+ }
+
+/**
+@pre
+@return Test verdict
+@post Lbs Behaviour mode set to "original"
+*/
+TVerdict CT_LbsStep_SetPTAMode::doTestStepL()
+ {
+ INFO_PRINTF1(_L(">>CT_LbsStep_SetPTAMode::doTestStepL()"));
+
+ if(!SetAndVerifyPTAModeL())
+ {
+ SetTestStepResult(EFail);
+ }
+
+ INFO_PRINTF1(_L("<<CT_LbsStep_SetPTAMode::doTestStepL()"));
+
+ return TestStepResult();
+ }
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/common/src/ctlbsstepsetptbmode.cpp Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,99 @@
+// 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 ctlbsstepsetptbmode.cpp
+// This is the class implementation for the Set Gps Mode PTB
+//
+//
+
+
+
+/**
+ @file
+ @internalTechnology
+ @test
+*/
+
+#include "ctlbsstepsetptbmode.h"
+#include <lbsadmin.h>
+
+CT_LbsStep_SetPTBMode::CT_LbsStep_SetPTBMode(CT_LbsServer& aParent) : CT_LbsStep(aParent)
+ {
+ SetTestStepName(KLbsStep_SetPTBMode);
+ }
+
+/**
+Static Constructor
+*/
+CT_LbsStep_SetPTBMode* CT_LbsStep_SetPTBMode::New(CT_LbsServer& aParent)
+ {
+ return new CT_LbsStep_SetPTBMode(aParent);
+ // Note the lack of ELeave.
+ // This means that having insufficient memory will return NULL;
+ }
+
+
+/**
+ */
+TBool CT_LbsStep_SetPTBMode::SetAndVerifyPTBModeL()
+ {
+ TBool ret = TRUE;
+ CLbsAdmin* adminApi = CLbsAdmin::NewL();
+ CleanupStack::PushL(adminApi);
+
+ TInt err = adminApi->Set(KLbsSettingRoamingGpsMode, CLbsAdmin::EGpsPreferTerminalBased);
+ User::LeaveIfError(err);
+ err = adminApi->Set(KLbsSettingHomeGpsMode, CLbsAdmin::EGpsPreferTerminalBased);
+ User::LeaveIfError(err);
+ // Alow he setting to be propagated
+ User::After(2000000);
+
+ CLbsAdmin::TGpsMode gpsMode;
+ err = adminApi->Get(KLbsSettingRoamingGpsMode, gpsMode);
+ User::LeaveIfError(err);
+ if(gpsMode != CLbsAdmin::EGpsPreferTerminalBased)
+ {
+ INFO_PRINTF1(_L("Admin setting didn't work"));
+ ret = FALSE;
+ }
+
+ err = adminApi->Get(KLbsSettingHomeGpsMode, gpsMode);
+ User::LeaveIfError(err);
+ if(gpsMode != CLbsAdmin::EGpsPreferTerminalBased)
+ {
+ INFO_PRINTF1(_L("Admin setting didn't work"));
+ ret = FALSE;
+ }
+ CleanupStack::PopAndDestroy(adminApi);
+
+ return ret;
+ }
+
+/**
+@pre
+@return Test verdict
+@post Lbs Behaviour mode set to "original"
+*/
+TVerdict CT_LbsStep_SetPTBMode::doTestStepL()
+ {
+ INFO_PRINTF1(_L(">>CT_LbsStep_SetPTBMode::doTestStepL()"));
+
+ if(!SetAndVerifyPTBModeL())
+ {
+ SetTestStepResult(EFail);
+ }
+
+ INFO_PRINTF1(_L("<<CT_LbsStep_SetPTBMode::doTestStepL()"));
+
+ return TestStepResult();
+ }
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/common/src/ctlbsstepsetupprotocolstub.cpp Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,78 @@
+// 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 ctlbsstep_setupprotocolstub.cpp
+// This is the class implementation for the Set Autonomous Moder Test Step
+//
+//
+
+
+
+/**
+ @file
+ @internalTechnology
+ @test
+*/
+
+#include "ctlbsstepsetupprotocolstub.h"
+#include <lbsadmin.h>
+
+CT_LbsStep_SetupProtocolStub::CT_LbsStep_SetupProtocolStub(CT_LbsServer& aParent) : CT_LbsStep(aParent)
+ {
+ SetTestStepName(KLbsStep_SetupProtocolStub);
+ }
+
+/**
+Static Constructor
+*/
+CT_LbsStep_SetupProtocolStub* CT_LbsStep_SetupProtocolStub::New(CT_LbsServer& aParent)
+ {
+ return new CT_LbsStep_SetupProtocolStub(aParent);
+ // Note the lack of ELeave.
+ // This means that having insufficient memory will return NULL;
+ }
+
+
+/**
+@pre
+@return Test verdict
+@post GPSMode set to autonomous
+*/
+TVerdict CT_LbsStep_SetupProtocolStub::doTestStepL()
+ {
+ INFO_PRINTF1(_L(">>CT_LbsStep_SetupProtocolStub::doTestStepL()"));
+
+ CLbsAdmin* adminApi = CLbsAdmin::NewL();
+ CleanupStack::PushL(adminApi);
+ TUid uid;
+
+ TInt err = adminApi->Set(KLbsSettingHomeProtocolModule, TUid::Uid(0x10282293));
+ User::LeaveIfError(err);
+ err = adminApi->Get(KLbsSettingHomeProtocolModule, uid);
+ User::LeaveIfError(err);
+
+ if(uid.iUid != 0x10282293)
+ {
+ INFO_PRINTF1(_L("Admin setting didn't work"));
+ SetTestStepResult(EFail);
+ }
+
+ CleanupStack::PopAndDestroy(adminApi);
+
+ // Alow he setting to be propagated
+ User::After(2000000);
+
+ INFO_PRINTF1(_L("<<CT_LbsStep_SetupProtocolStub::doTestStepL()"));
+
+ return TestStepResult();
+ }
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/common/src/ctlbsstepsetuproamselflocate.cpp Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,94 @@
+// 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 ctlbsstepsetuproamlocate.cpp
+// This is the class implementation for the Set Autonomous Moder Test Step
+//
+//
+
+
+
+/**
+ @file
+ @internalTechnology
+ @test
+*/
+
+#include "ctlbsstepsetuproamselflocate.h"
+#include <lbsadmin.h>
+
+CT_LbsStep_SetupRoamSelfLocate::CT_LbsStep_SetupRoamSelfLocate(CT_LbsServer& aParent)
+:CT_LbsStep(aParent)
+ {
+ SetTestStepName(KLbsStep_SetupRoamSelfLocate);
+ }
+
+/**
+Static Constructor
+*/
+CT_LbsStep_SetupRoamSelfLocate* CT_LbsStep_SetupRoamSelfLocate::New(CT_LbsServer& aParent)
+ {
+ return new CT_LbsStep_SetupRoamSelfLocate(aParent);
+ // Note the lack of ELeave.
+ // This means that having insufficient memory will return NULL;
+ }
+
+
+/**
+@pre
+@return Test verdict
+@post GPSMode set to autonomous
+*/
+TVerdict CT_LbsStep_SetupRoamSelfLocate::doTestStepL()
+ {
+ INFO_PRINTF1(_L(">>CT_LbsStep_SetupRoamSelfLocate::doTestStepL()"));
+
+ CLbsAdmin* adminApi = CLbsAdmin::NewL();
+ CleanupStack::PushL(adminApi);
+
+ // Switch on the self locate API when roaming.
+ CLbsAdmin::TSelfLocateService serviceSetting = CLbsAdmin::ESelfLocateUnknown;
+
+ TInt err = adminApi->Set(KLbsSettingRoamingSelfLocate, CLbsAdmin::ESelfLocateOn);
+ User::LeaveIfError(err);
+ err = adminApi->Get(KLbsSettingRoamingSelfLocate, serviceSetting);
+ User::LeaveIfError(err);
+
+ if(serviceSetting != CLbsAdmin::ESelfLocateOn)
+ {
+ INFO_PRINTF1(_L("Self locate API admin setting didn't work"));
+ SetTestStepResult(EFail);
+ }
+
+ // Set gps mode when roaming.
+ CLbsAdmin::TGpsMode gpsModeSetting = CLbsAdmin::EGpsModeUnknown;
+
+ err = adminApi->Set(KLbsSettingRoamingGpsMode, CLbsAdmin::EGpsPreferTerminalBased);
+ User::LeaveIfError(err);
+ err = adminApi->Get(KLbsSettingRoamingGpsMode, gpsModeSetting);
+ User::LeaveIfError(err);
+
+ if (gpsModeSetting != CLbsAdmin::EGpsPreferTerminalBased)
+ {
+ INFO_PRINTF1(_L("Gps mode admin setting didn't work"));
+ SetTestStepResult(EFail);
+ }
+
+ CleanupStack::PopAndDestroy(adminApi);
+
+ // Alow he setting to be propagated
+ User::After(2000000);
+
+ INFO_PRINTF1(_L("<<CT_LbsStep_SetupRoamSelfLocate::doTestStepL()"));
+ return TestStepResult();
+ }
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/common/src/ctlbsstepsetupstandaloneprivacyandsimplectlr.cpp Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,160 @@
+// 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 ctlbsstep_setupstandaloneprivacyandsimplectlr.cpp
+// This is the class implementation for the Set Autonomous Mode Test Step
+//
+//
+
+
+
+/**
+ @file
+ @internalTechnology
+ @test
+*/
+
+#include "ctlbsstepsetupstandaloneprivacyandsimplectlr.h"
+#include <lbsadmin.h>
+#include <centralrepository.h>
+
+
+CT_LbsStep_SetupStandalonePrivacyAndSimpleCtlr::CT_LbsStep_SetupStandalonePrivacyAndSimpleCtlr(CT_LbsServer& aParent) : CT_LbsStep(aParent)
+ {
+ SetTestStepName(KLbsStep_SetupStandalonePrivacyAndSimpleCtlr);
+ }
+
+/**
+Static Constructor
+*/
+CT_LbsStep_SetupStandalonePrivacyAndSimpleCtlr* CT_LbsStep_SetupStandalonePrivacyAndSimpleCtlr::New(CT_LbsServer& aParent)
+ {
+ return new CT_LbsStep_SetupStandalonePrivacyAndSimpleCtlr(aParent);
+ // Note the lack of ELeave.
+ // This means that having insufficient memory will return NULL;
+ }
+
+
+/**
+@pre
+@return Test verdict
+@post LBS sub-system set to standalone privacy mode and using simple controller.
+*/
+TVerdict CT_LbsStep_SetupStandalonePrivacyAndSimpleCtlr::doTestStepL()
+ {
+
+ // lbsroot stuff (not ideal, currently defined in internal header file lbsrootcenrepdefs.h
+ const TUint KLbsCenRepUidValue = 0x10282266;
+ const TUid KLbsCenRepUid = {KLbsCenRepUidValue};
+
+ const TUint32 KLbsRootProcessNameFirstKey = 0x00001000;
+ const TUint32 KLbsRootProcessUidFirstKey = 0x00002000;
+ const TUint32 KLbsRootProcessIsServerFirstKey = 0x00003000;
+
+ const TUint32 KLbsSystemTransientKey = 0x00000001;
+ const TUint32 KLbsRootProcessTransientKey = 0x00000002;
+
+ const TUint32 KRootKeyMask = 0xFFFFF000; // don't care what the last 3 digits are
+
+ INFO_PRINTF1(_L(">>CT_LbsStep_SetupStandalonePrivacyAndSimpleCtlr::doTestStepL()"));
+
+ // Set the privacy protocol module as the protocol module to load in admin settings
+ CLbsAdmin* adminApi = CLbsAdmin::NewL();
+ CleanupStack::PushL(adminApi);
+
+ const TLbsProtocolModuleId KPrivacyPMUid = { 0x1028373C };
+ TInt err = adminApi->Set(KLbsSettingHomeProtocolModule, KPrivacyPMUid);
+ User::LeaveIfError(err);
+ TUid uid;
+ err = adminApi->Get(KLbsSettingHomeProtocolModule, uid);
+ User::LeaveIfError(err);
+
+ if(uid.iUid != KPrivacyPMUid.iUid)
+ {
+ INFO_PRINTF1(_L("Admin setting didn't work"));
+ SetTestStepResult(EFail);
+ }
+
+ //Get privacy handler type
+ CLbsAdmin::TPrivacyHandler privacyHandlerType;
+ err = adminApi->Get(KLbsSettingPrivacyHandler, privacyHandlerType);
+ User::LeaveIfError(err);
+
+ // Set the privacy timeout action as 'network defined'
+ err = adminApi->Set(KLbsSettingPrivacyTimeoutAction, CLbsAdmin::EPrivacyTimeoutNetworkDefined);
+ User::LeaveIfError(err);
+
+ // Set the maximum number of simultaneous privacy requests allowed
+ const TUint KMaxExternalLocateRequests(150);
+ err = adminApi->Set(KLbsSettingMaximumExternalLocateRequests, KMaxExternalLocateRequests);
+ User::LeaveIfError(err);
+
+ CleanupStack::PopAndDestroy(adminApi);
+
+ // Alow the setting to be propagated
+ User::After(2000000);
+
+ // Set-up the LbsRoot cenrep file so that:
+ // 1) LbsRoot is transient.
+ // 2) LbsRoot starts the LBS subsystem in transient mode
+ // 3) LbsRoot only starts the NRH and NG.
+
+ CRepository* rootRep = CRepository::NewLC(KLbsCenRepUid);
+
+ // Set Lbs system and LbsRoot process as transient.
+
+ // Start the LBS sub-system in transient mode.
+ User::LeaveIfError(rootRep->Set(KLbsSystemTransientKey, 1));
+ User::LeaveIfError(rootRep->Set(KLbsRootProcessTransientKey, 1));
+
+ // Set only NRH and NG to be started.
+ // First, clear out any existing startup entries.
+ TUint32 errorKey;
+ User::LeaveIfError(rootRep->Delete(KLbsRootProcessNameFirstKey, KRootKeyMask, errorKey));
+ User::LeaveIfError(rootRep->Delete(KLbsRootProcessUidFirstKey, KRootKeyMask, errorKey));
+ User::LeaveIfError(rootRep->Delete(KLbsRootProcessIsServerFirstKey, KRootKeyMask, errorKey));
+
+ // Set NRH and NG as startup entries.
+ _LIT(KNGProcessName, "lbsnetgateway.exe");
+ const TUid KLbsNetworkGatewayUid = { 0x10281D46 };
+ User::LeaveIfError(rootRep->Set(KLbsRootProcessNameFirstKey, KNGProcessName));
+ User::LeaveIfError(rootRep->Set(KLbsRootProcessUidFirstKey, TInt(KLbsNetworkGatewayUid.iUid)));
+ User::LeaveIfError(rootRep->Set(KLbsRootProcessIsServerFirstKey, EFalse));
+
+ _LIT(KNRHProcessName, "lbsnetworkrequesthandler.exe");
+ const TUid KLbsNetRequestHandlerUid = { 0x10281D45 };
+ User::LeaveIfError(rootRep->Set(KLbsRootProcessNameFirstKey+1, KNRHProcessName));
+ User::LeaveIfError(rootRep->Set(KLbsRootProcessUidFirstKey+1, TInt(KLbsNetRequestHandlerUid.iUid)));
+ User::LeaveIfError(rootRep->Set(KLbsRootProcessIsServerFirstKey+1, ETrue));
+
+ //If we are using Privacy Controller mode, start privacy controller as well
+ if(privacyHandlerType == CLbsAdmin::EPrivacyHandleByController)
+ {
+ _LIT(KPrivCtrlProcessName, "lbstestprivacycontrollersimple.exe");
+ const TUid KLbsPrivacyControllerUid = { 0x10283746 };
+ User::LeaveIfError(rootRep->Set(KLbsRootProcessNameFirstKey+2, KPrivCtrlProcessName));
+ User::LeaveIfError(rootRep->Set(KLbsRootProcessUidFirstKey+2, TInt(KLbsPrivacyControllerUid.iUid)));
+ User::LeaveIfError(rootRep->Set(KLbsRootProcessIsServerFirstKey+2, EFalse));
+ }
+ else
+ {
+ ERR_PRINTF1(_L("FAIL - Test Step is only useful with Privacy Controller"));
+ SetTestStepResult(EFail);
+ }
+
+ CleanupStack::PopAndDestroy(rootRep);
+
+ INFO_PRINTF1(_L("<<CT_LbsStep_SetupStandalonePrivacyAndSimpleCtlr::doTestStepL()"));
+
+ return TestStepResult();
+ }
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/common/src/ctlbsstepsetupstandaloneprivacymode.cpp Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,145 @@
+// 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 ctlbsstep_setupstandaloneprivacymode.cpp
+// This is the class implementation for the Set Autonomous Moder Test Step
+//
+//
+
+
+
+/**
+ @file
+ @internalTechnology
+ @test
+*/
+
+#include "ctlbsstepsetupstandaloneprivacymode.h"
+#include <lbsadmin.h>
+#include <centralrepository.h>
+
+
+CT_LbsStep_SetupStandalonePrivacyMode::CT_LbsStep_SetupStandalonePrivacyMode(CT_LbsServer& aParent) : CT_LbsStep(aParent)
+ {
+ SetTestStepName(KLbsStep_SetupStandalonePrivacyMode);
+ }
+
+/**
+Static Constructor
+*/
+CT_LbsStep_SetupStandalonePrivacyMode* CT_LbsStep_SetupStandalonePrivacyMode::New(CT_LbsServer& aParent)
+ {
+ return new CT_LbsStep_SetupStandalonePrivacyMode(aParent);
+ // Note the lack of ELeave.
+ // This means that having insufficient memory will return NULL;
+ }
+
+
+/**
+@pre
+@return Test verdict
+@post LBS sub-system set to standalone privacy mode.
+*/
+TVerdict CT_LbsStep_SetupStandalonePrivacyMode::doTestStepL()
+ {
+ INFO_PRINTF1(_L(">>CT_LbsStep_SetupStandalonePrivacyMode::doTestStepL()"));
+
+ // Set the privacy protocol module as the protocol module to load in admin settings
+ CLbsAdmin* adminApi = CLbsAdmin::NewL();
+ CleanupStack::PushL(adminApi);
+
+ const TLbsProtocolModuleId KPrivacyPMUid = { 0x1028373C };
+ TInt err = adminApi->Set(KLbsSettingHomeProtocolModule, KPrivacyPMUid);
+ User::LeaveIfError(err);
+ TUid uid;
+ err = adminApi->Get(KLbsSettingHomeProtocolModule, uid);
+ User::LeaveIfError(err);
+
+ if(uid.iUid != KPrivacyPMUid.iUid)
+ {
+ INFO_PRINTF1(_L("Admin setting didn't work"));
+ SetTestStepResult(EFail);
+ }
+
+ //Get privacy handler type
+ CLbsAdmin::TPrivacyHandler privacyHandlerType;
+ err = adminApi->Get(KLbsSettingPrivacyHandler, privacyHandlerType);
+ User::LeaveIfError(err);
+
+ // Turn off the LBS logger
+ err = adminApi->Set(KLbsSettingLogger, CLbsAdmin::ELoggerOff);
+ User::LeaveIfError(err);
+
+ // Set the privacy timeout action as 'network defined'
+ err = adminApi->Set(KLbsSettingPrivacyTimeoutAction, CLbsAdmin::EPrivacyTimeoutNetworkDefined);
+ User::LeaveIfError(err);
+
+ // Set the maximum number of simultaneous privacy requests allowed
+ const TUint KMaxExternalLocateRequests(150);
+ err = adminApi->Set(KLbsSettingMaximumExternalLocateRequests, KMaxExternalLocateRequests);
+ User::LeaveIfError(err);
+
+ CleanupStack::PopAndDestroy(adminApi);
+
+ // Alow the setting to be propagated
+ User::After(2000000);
+
+ // Set-up the LbsRoot cenrep file so that:
+ // 1) LbsRoot is transient.
+ // 2) LbsRoot starts the LBS subsystem in transient mode
+ // 3) LbsRoot only starts the NRH and NG.
+
+ CRepository* rootRep = CRepository::NewLC(KLbsCenRepUid);
+
+ // Set Lbs system and LbsRoot process as transient.
+
+ // Start the LBS sub-system in transient mode.
+ User::LeaveIfError(rootRep->Set(KLbsSystemTransientKey, 1));
+ User::LeaveIfError(rootRep->Set(KLbsRootProcessTransientKey, 1));
+
+ // Set only NRH and NG to be started.
+ // First, clear out any existing startup entries.
+ TUint32 errorKey;
+ User::LeaveIfError(rootRep->Delete(KLbsRootProcessNameFirstKey, KRootKeyMask, errorKey));
+ User::LeaveIfError(rootRep->Delete(KLbsRootProcessUidFirstKey, KRootKeyMask, errorKey));
+ User::LeaveIfError(rootRep->Delete(KLbsRootProcessIsServerFirstKey, KRootKeyMask, errorKey));
+
+ // Set NRH and NG as startup entries.
+ _LIT(KNGProcessName, "lbsnetgateway.exe");
+ const TUid KLbsNetworkGatewayUid = { 0x10281D46 };
+ User::LeaveIfError(rootRep->Set(KLbsRootProcessNameFirstKey, KNGProcessName));
+ User::LeaveIfError(rootRep->Set(KLbsRootProcessUidFirstKey, TInt(KLbsNetworkGatewayUid.iUid)));
+ User::LeaveIfError(rootRep->Set(KLbsRootProcessIsServerFirstKey, EFalse));
+
+ _LIT(KNRHProcessName, "lbsnetworkrequesthandler.exe");
+ const TUid KLbsNetRequestHandlerUid = { 0x10281D45 };
+ User::LeaveIfError(rootRep->Set(KLbsRootProcessNameFirstKey+1, KNRHProcessName));
+ User::LeaveIfError(rootRep->Set(KLbsRootProcessUidFirstKey+1, TInt(KLbsNetRequestHandlerUid.iUid)));
+ User::LeaveIfError(rootRep->Set(KLbsRootProcessIsServerFirstKey+1, ETrue));
+
+ //If we are using Privacy Controller mode, start privacy controller as well
+ if(privacyHandlerType == CLbsAdmin::EPrivacyHandleByController)
+ {
+ _LIT(KPrivCtrlProcessName, "lbstestprivacycontroller.exe");
+ const TUid KLbsPrivacyControllerUid = { 0x10283750 };
+ User::LeaveIfError(rootRep->Set(KLbsRootProcessNameFirstKey+2, KPrivCtrlProcessName));
+ User::LeaveIfError(rootRep->Set(KLbsRootProcessUidFirstKey+2, TInt(KLbsPrivacyControllerUid.iUid)));
+ User::LeaveIfError(rootRep->Set(KLbsRootProcessIsServerFirstKey+2, EFalse));
+ }
+
+ CleanupStack::PopAndDestroy(rootRep);
+
+ INFO_PRINTF1(_L("<<CT_LbsStep_SetupStandalonePrivacyMode::doTestStepL()"));
+
+ return TestStepResult();
+ }
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/common/src/ctlbsstepsetupstandaloneprivacywithnoctlr.cpp Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,145 @@
+// 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 ctlbsstep_setupstandaloneprivacywithnoctlr.cpp
+// This is the class implementation for the Set Autonomous Mode Test Step
+//
+//
+
+
+
+/**
+ @file
+ @internalTechnology
+ @test
+*/
+
+#include "ctlbsstepsetupstandaloneprivacywithnoctlr.h"
+#include <lbsadmin.h>
+#include <centralrepository.h>
+
+
+CT_LbsStep_SetupStandalonePrivacyWithNoCtlr::CT_LbsStep_SetupStandalonePrivacyWithNoCtlr(CT_LbsServer& aParent) : CT_LbsStep(aParent)
+ {
+ SetTestStepName(KLbsStep_SetupStandalonePrivacyWithNoCtlr);
+ }
+
+/**
+Static Constructor
+*/
+CT_LbsStep_SetupStandalonePrivacyWithNoCtlr* CT_LbsStep_SetupStandalonePrivacyWithNoCtlr::New(CT_LbsServer& aParent)
+ {
+ return new CT_LbsStep_SetupStandalonePrivacyWithNoCtlr(aParent);
+ // Note the lack of ELeave.
+ // This means that having insufficient memory will return NULL;
+ }
+
+
+/**
+@pre
+@return Test verdict
+@post LBS sub-system set to standalone privacy mode and using simple controller.
+*/
+TVerdict CT_LbsStep_SetupStandalonePrivacyWithNoCtlr::doTestStepL()
+ {
+
+ // lbsroot stuff (not ideal, currently defined in internal header file lbsrootcenrepdefs.h
+ const TUint KLbsCenRepUidValue = 0x10282266;
+ const TUid KLbsCenRepUid = {KLbsCenRepUidValue};
+
+ const TUint32 KLbsRootProcessNameFirstKey = 0x00001000;
+ const TUint32 KLbsRootProcessUidFirstKey = 0x00002000;
+ const TUint32 KLbsRootProcessIsServerFirstKey = 0x00003000;
+
+ const TUint32 KLbsSystemTransientKey = 0x00000001;
+ const TUint32 KLbsRootProcessTransientKey = 0x00000002;
+
+ const TUint32 KRootKeyMask = 0xFFFFF000; // don't care what the last 3 digits are
+
+ INFO_PRINTF1(_L(">>CT_LbsStep_SetupStandalonePrivacyWithNoCtlr::doTestStepL()"));
+
+ // Set the privacy protocol module as the protocol module to load in admin settings
+ CLbsAdmin* adminApi = CLbsAdmin::NewL();
+ CleanupStack::PushL(adminApi);
+
+ const TLbsProtocolModuleId KPrivacyPMUid = { 0x1028373C };
+ TInt err = adminApi->Set(KLbsSettingHomeProtocolModule, KPrivacyPMUid);
+ User::LeaveIfError(err);
+ TUid uid;
+ err = adminApi->Get(KLbsSettingHomeProtocolModule, uid);
+ User::LeaveIfError(err);
+
+ if(uid.iUid != KPrivacyPMUid.iUid)
+ {
+ INFO_PRINTF1(_L("Admin setting didn't work"));
+ SetTestStepResult(EFail);
+ }
+
+ //Get privacy handler type
+ CLbsAdmin::TPrivacyHandler privacyHandlerType;
+ err = adminApi->Get(KLbsSettingPrivacyHandler, privacyHandlerType);
+ User::LeaveIfError(err);
+
+ // Set the privacy timeout action as 'network defined'
+ err = adminApi->Set(KLbsSettingPrivacyTimeoutAction, CLbsAdmin::EPrivacyTimeoutNetworkDefined);
+ User::LeaveIfError(err);
+
+ // Set the maximum number of simultaneous privacy requests allowed
+ const TUint KMaxExternalLocateRequests(150);
+ err = adminApi->Set(KLbsSettingMaximumExternalLocateRequests, KMaxExternalLocateRequests);
+ User::LeaveIfError(err);
+
+ CleanupStack::PopAndDestroy(adminApi);
+
+ // Alow the setting to be propagated
+ User::After(2000000);
+
+ // Set-up the LbsRoot cenrep file so that:
+ // 1) LbsRoot is transient.
+ // 2) LbsRoot starts the LBS subsystem in transient mode
+ // 3) LbsRoot only starts the NRH and NG.
+
+ CRepository* rootRep = CRepository::NewLC(KLbsCenRepUid);
+
+ // Set Lbs system and LbsRoot process as transient.
+
+ // Start the LBS sub-system in transient mode.
+ User::LeaveIfError(rootRep->Set(KLbsSystemTransientKey, 1));
+ User::LeaveIfError(rootRep->Set(KLbsRootProcessTransientKey, 1));
+
+ // Set only NRH and NG to be started.
+ // First, clear out any existing startup entries.
+ TUint32 errorKey;
+ User::LeaveIfError(rootRep->Delete(KLbsRootProcessNameFirstKey, KRootKeyMask, errorKey));
+ User::LeaveIfError(rootRep->Delete(KLbsRootProcessUidFirstKey, KRootKeyMask, errorKey));
+ User::LeaveIfError(rootRep->Delete(KLbsRootProcessIsServerFirstKey, KRootKeyMask, errorKey));
+
+ // Set NRH and NG as startup entries.
+ _LIT(KNGProcessName, "lbsnetgateway.exe");
+ const TUid KLbsNetworkGatewayUid = { 0x10281D46 };
+ User::LeaveIfError(rootRep->Set(KLbsRootProcessNameFirstKey, KNGProcessName));
+ User::LeaveIfError(rootRep->Set(KLbsRootProcessUidFirstKey, TInt(KLbsNetworkGatewayUid.iUid)));
+ User::LeaveIfError(rootRep->Set(KLbsRootProcessIsServerFirstKey, EFalse));
+
+ _LIT(KNRHProcessName, "lbsnetworkrequesthandler.exe");
+ const TUid KLbsNetRequestHandlerUid = { 0x10281D45 };
+ User::LeaveIfError(rootRep->Set(KLbsRootProcessNameFirstKey+1, KNRHProcessName));
+ User::LeaveIfError(rootRep->Set(KLbsRootProcessUidFirstKey+1, TInt(KLbsNetRequestHandlerUid.iUid)));
+ User::LeaveIfError(rootRep->Set(KLbsRootProcessIsServerFirstKey+1, ETrue));
+
+ CleanupStack::PopAndDestroy(rootRep);
+
+ INFO_PRINTF1(_L("<<CT_LbsStep_SetupStandalonePrivacyWithNoCtlr::doTestStepL()"));
+
+ return TestStepResult();
+ }
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/common/src/ctlbsstepstartlbs.cpp Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,146 @@
+// 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 ctlbslocdatasrc.cpp
+// This is the class implementation for the step to start the lbs system
+// EPOC includes.
+// LBS includes.
+//
+//
+
+// LBS test includes.
+#include "ctlbsstepstartlbs.h"
+#include "tlbsutils.h"
+#include "lbstestclient.h"
+
+/**
+ * Destructor
+ */
+CT_LbsStep_StartLbs::~CT_LbsStep_StartLbs()
+ {
+ }
+
+
+/**
+ * Constructor
+ */
+CT_LbsStep_StartLbs::CT_LbsStep_StartLbs(CT_LbsServer& aParent) : CT_LbsStep(aParent)
+ {
+ SetTestStepName(KLbsStep_StartLbs);
+ }
+
+
+/**
+Static Constructor
+*/
+CT_LbsStep_StartLbs* CT_LbsStep_StartLbs::New(CT_LbsServer& aParent)
+ {
+ return new CT_LbsStep_StartLbs(aParent);
+ // Note the lack of ELeave.
+ // This means that having insufficient memory will return NULL;
+ }
+
+
+/**
+ * @return - TVerdict code
+ * Override of base class pure virtual
+ * Our implementation only gets called if the base class doTestStepPreambleL() did
+ * not leave. That being the case, the current test result value will be EPass.
+ */
+TVerdict CT_LbsStep_StartLbs::doTestStepL()
+ {
+ // Test step used to start the location manager.
+ INFO_PRINTF1(_L(">>CT_LbsStep_StartLbs::doTestStepL()"));
+
+ //*******************************************************************/
+ // for diagnostics print out important Admin settings that will
+ // determine how lbs bahaves
+
+ CLbsAdmin* adminApi = CLbsAdmin::NewL();
+ CleanupStack::PushL(adminApi);
+
+ CLbsAdmin::TGpsMode mode;
+ TInt err = adminApi->Get(KLbsSettingHomeGpsMode, mode);
+ if (err == KErrNone)
+ {
+ INFO_PRINTF2(_L("KLbsSettingHomeGpsMode = %d"),mode);
+ }
+ else
+ {
+ INFO_PRINTF1(_L("KLbsSettingHomeGpsMode not in Admin"));
+ }
+
+ CLbsAdmin::TSpecialFeature specialFeature;
+
+ err = adminApi->Get(KLbsSpecialFeatureIgnoreAccuracy, specialFeature);
+ if (err == KErrNone)
+ {
+ INFO_PRINTF2(_L("KLbsSpecialFeatureIgnoreAccuracy = %d"),specialFeature);
+ }
+ else
+ {
+ INFO_PRINTF1(_L("KLbsSpecialFeatureIgnoreAccuracy not in Admin"));
+ }
+
+ err = adminApi->Get(KLbsSpecialFeatureAllowTBFinalNetPos, specialFeature);
+ if (err == KErrNone)
+ {
+ INFO_PRINTF2(_L("KLbsSpecialFeatureAllowTBFinalNetPos = %d"),specialFeature);
+ }
+ else
+ {
+ INFO_PRINTF1(_L("KLbsSpecialFeatureAllowTBFinalNetPos not in Admin"));
+ }
+
+ err = adminApi->Get(KLbsSpecialFeatureWithholdDeliveryOfReferencePositions, specialFeature);
+ if (err == KErrNone)
+ {
+ INFO_PRINTF2(_L("KLbsSpecialFeatureWithholdDeliveryOfReferencePositions = %d"),specialFeature);
+ }
+ else
+ {
+ INFO_PRINTF1(_L("KLbsSpecialFeatureWithholdDeliveryOfReferencePositions not in Admin"));
+ }
+
+ err = adminApi->Get(KLbsSpecialFeatureIntermediateFutileUpdate, specialFeature);
+ if (err == KErrNone)
+ {
+ INFO_PRINTF2(_L("KLbsSpecialFeatureIntermediateFutileUpdate = %d"),specialFeature);
+ }
+ else
+ {
+ INFO_PRINTF1(_L("KLbsSpecialFeatureIntermediateFutileUpdate not in Admin"));
+ }
+
+
+ CleanupStack::PopAndDestroy(adminApi);
+
+ //*******************************************************************/
+
+ if (TestStepResult() == EPass)
+ {
+ // Create the test properties.
+ T_LbsUtils utils;
+ utils.CreateTestPropertiesL();
+
+ // Now start the LBS system
+ CLbsTestServer* testServer = CLbsTestServer::NewL();
+ CleanupStack::PushL(testServer);
+ User::LeaveIfError(testServer->StartLbsSystem());
+ CleanupStack::PopAndDestroy(testServer);
+ }
+
+ INFO_PRINTF1(_L("<<CT_LbsStep_StartLbs::doTestStepL()"));
+
+ return TestStepResult();
+ }
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/common/src/ctlbsstepstoplbs.cpp Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,76 @@
+// 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 ctlbslocdatasrc.cpp
+// This is the class implementation for the step to stop the lbs system
+// EPOC includes.
+// LBS includes.
+//
+//
+
+// LBS test includes.
+#include "ctlbsstepstoplbs.h"
+#include <lbstestclient.h>
+
+/**
+ * Destructor
+ */
+CT_LbsStep_StopLbs::~CT_LbsStep_StopLbs()
+ {
+ }
+
+
+/**
+ * Constructor
+ */
+CT_LbsStep_StopLbs::CT_LbsStep_StopLbs(CT_LbsServer& aParent) : CT_LbsStep(aParent)
+ {
+ SetTestStepName(KLbsStep_StopLbs);
+ }
+
+
+/**
+Static Constructor
+*/
+CT_LbsStep_StopLbs* CT_LbsStep_StopLbs::New(CT_LbsServer& aParent)
+ {
+ return new CT_LbsStep_StopLbs(aParent);
+ // Note the lack of ELeave.
+ // This means that having insufficient memory will return NULL;
+ }
+
+
+/**
+ * @return - TVerdict code
+ * Override of base class pure virtual
+ * Our implementation only gets called if the base class doTestStepPreambleL() did
+ * not leave. That being the case, the current test result value will be EPass.
+ */
+TVerdict CT_LbsStep_StopLbs::doTestStepL()
+ {
+ // Test step used to stop the lbs system
+ INFO_PRINTF1(_L(">>CT_LbsStep_StopLbs::doTestStepL()"));
+
+ if (TestStepResult() == EPass)
+ {
+ CLbsTestServer* testServer = CLbsTestServer::NewL();
+ CleanupStack::PushL(testServer);
+ User::LeaveIfError(testServer->StopLbsSystem());
+
+ CleanupStack::PopAndDestroy(testServer);
+ }
+
+ INFO_PRINTF1(_L("<<CT_LbsStep_StopLbs::doTestStepL()"));
+
+ return TestStepResult();
+ }
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/common/src/ctlbsstepverifyloginfo.cpp Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,1177 @@
+// 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 ctlbsstepverifyloginfo.cpp
+// This is the class implementation for the log verification test step
+//
+//
+
+#include "ctlbsstepverifyloginfo.h"
+
+_LIT(KLogType, "log_type");
+
+/**
+Public, non-leaving, static constructor
+*/
+CT_LbsStep_VerifyLogInfo* CT_LbsStep_VerifyLogInfo::New(CT_LbsServer& aParent)
+ {
+ CT_LbsStep_VerifyLogInfo* self = NULL;
+ // Note the lack of ELeave.
+ // This means that having insufficient memory will return NULL;
+ TRAPD(err, self = NewL(aParent));
+ if(KErrNone != err)
+ {
+ self = NULL;
+ }
+ return self;
+ }
+/**
+ * Static Constructor that may leave
+ */
+CT_LbsStep_VerifyLogInfo* CT_LbsStep_VerifyLogInfo::NewL(CT_LbsServer& aParent)
+ {
+ CT_LbsStep_VerifyLogInfo* verifyLog = new(ELeave) CT_LbsStep_VerifyLogInfo(aParent);
+ CleanupStack::PushL(verifyLog);
+ verifyLog->ConstructL();
+ CleanupStack::Pop(verifyLog);
+
+ return verifyLog;
+ }
+/**
+2nd phase Constructor that may leave
+*/
+void CT_LbsStep_VerifyLogInfo::ConstructL()
+ {
+
+ // Create everything for the right hand side of all compares
+ _LIT(KTheDest,"07712345678");
+ TPtrC theDest(KTheDest);
+
+ iX3PLogIntiailisedFromValues = CLbsTransmitLocationLogEvent::NewL(TUid::Uid(0), NULL, theDest);
+ iSelfLocateLogIntiailisedFromValues = CLbsSelfLocateLogEvent::NewL(TUid::Uid(0), NULL);
+ iExternalLocateLogIntiailisedFromValues = CLbsExternalLocateLogEvent::NewL(TUid::Uid(0), NULL, NULL);
+ iNetworkLocateLogIntiailisedFromValues = CLbsNetworkLocateLogEvent::NewL(TUid::Uid(0), NULL);
+ iAssistanceDataLogIntiailisedFromValuesFirst = CLbsAssistanceDataLogEvent::NewL(0, 0);
+
+ //Setup other reference position
+ iRefPosTwo = new TPositionInfo();
+ TPosition refpos;
+ refpos.SetCoordinate(REFPOS_LAT, REFPOS_LONG, REFPOS_ALT);
+ refpos.SetAccuracy(REFPOS_HORZ_ACCURACY, REFPOS_VERT_ACCURACY);
+ refpos.SetCurrentTime();
+ iRefPosTwo->SetPosition(refpos);
+
+
+ // read logs using CLogViewEvent
+ TInt ErrorCode = itheFs.Connect();
+ if(ErrorCode)
+ {
+ INFO_PRINTF1(_L("\t Error: Open FileServer failed."));
+ SetTestStepResult(EFail);
+ }
+
+ iclient = CLogClient::NewL(itheFs, CActive::EPriorityStandard);
+ iview = CLogViewEvent::NewL(*iclient, CActive::EPriorityStandard);
+
+ iActiveWaiter = CT_LbsAsyncWaiter::NewL(); // NEW iActiveWaiter
+
+ }
+/**
+ * Destructor
+ */
+CT_LbsStep_VerifyLogInfo::~CT_LbsStep_VerifyLogInfo()
+ {
+ iview->Cancel();
+ iclient->Cancel();
+ delete iview;
+ delete iclient;
+ itheFs.Close();
+ delete iActiveWaiter;
+ // Delete everything for the right hand side of all compares
+ delete iRefPosTwo;
+ delete iSelfLocateLogIntiailisedFromValues;
+ delete iExternalLocateLogIntiailisedFromValues;
+ delete iNetworkLocateLogIntiailisedFromValues;
+ delete iAssistanceDataLogIntiailisedFromValuesFirst;
+ delete iX3PLogIntiailisedFromValues;
+
+ }
+
+
+/**
+ * Constructor
+ */
+CT_LbsStep_VerifyLogInfo::CT_LbsStep_VerifyLogInfo(CT_LbsServer& aParent) : CT_LbsStep(aParent)
+ {
+ SetTestStepName(KLbsStep_VerifyLogInfo);
+ }
+
+
+TVerdict CT_LbsStep_VerifyLogInfo::doTestStepPreambleL()
+ {
+
+ return TestStepResult();
+ }
+
+TVerdict CT_LbsStep_VerifyLogInfo::doTestStepPostambleL()
+ {
+
+ return TestStepResult();
+ }
+
+
+/**
+ * @return - TVerdict code
+ * Override of base class pure virtual
+ * Our implementation only gets called if the base class doTestStepPreambleL() did
+ * not leave. That being the case, the current test result value will be EPass.
+ */
+TVerdict CT_LbsStep_VerifyLogInfo::doTestStepL()
+ {
+ // Helper test step used to Verify the Position Information Array.
+ INFO_PRINTF1(_L(">>CT_LbsStep_VerifyLogInfo::doTestStepL()"));
+
+ if (TestStepResult() == EPass)
+ {
+
+ // Left and right parameters of compare functions.
+ if (GetIntFromConfig(ConfigSection(), KLogType, iLogType))
+ {
+
+
+ if(iParent.iSharedData->iTestModuleInUse)
+ {
+ iWhatAccuracyToUse = T_LbsUtils::EExactAccuracy;
+ }
+ else
+ {
+ iWhatAccuracyToUse = T_LbsUtils::ERoughAccuracy;
+ }
+
+ InitialiseRHS();
+
+ switch(iLogType)
+ {
+ case EAutonomousSelfLocateRequest: // Enum 0
+ {
+ AutonomousSelfLocateLogTest();
+ }
+ break;
+
+ case EMOLRSelfLocateRequest: // Enum 1
+ {
+ MOLRSelfLocateRequest();
+ }
+ break;
+
+ case EMOLRCellBasedLocationRequest: // Enum 2
+ {
+ MOLRCellBasedLocationRequest();
+ }
+ break;
+
+ case EMOLRTransmitTo3rdPartyLocationRequest: // Enum 3
+ {
+ MOLRTransmitTo3rdPartyLocationRequest();
+ }
+ break;
+
+ case EMTLR: // Enum 4
+ {
+ MTLR();
+ }
+ break;
+
+ case EMOLRTrackingLocationRequest: // Enum 5
+ {
+ MOLRTrackingLocationRequest();
+ }
+ break;
+
+ case EAutonomousTrackingLocationRequest: // Enum 6
+ {
+ AutonomousTrackingLocationRequest();
+ }
+ break;
+
+ default:
+ {
+ INFO_PRINTF1(_L("<FONT><B>Failed to match a test case Id.</B></FONT>"));
+ SetTestStepResult(EFail);
+ }
+ break;
+ }// End of switch
+
+ ClearLog();
+ }// End of GetIntFromConfig()...
+
+ } // End of "If TestStepResult..."
+
+
+ INFO_PRINTF1(_L("<<CT_LbsStep_VerifyLogInfo::doTestStepL()"));
+
+ return TestStepResult();
+ }
+TVerdict CT_LbsStep_VerifyLogInfo::ReadFromLogL(TInt aUidForTheLogType)
+ {
+
+ /**
+ * Filter the type of log we are looking for based on UID
+ */
+ CLogFilter* filter = CLogFilter::NewL(); // NEW FILTER
+ CleanupStack::PushL(filter);
+ filter->SetEventType(TUid::Uid(aUidForTheLogType));
+
+ /*
+ * Obtain the last added event from LBS logger
+ */
+ TBool res = iview->SetFilterL(*filter, iActiveWaiter->iStatus);
+ if (res == EFail)
+ {
+ INFO_PRINTF1(_L("\t Error: Set filter failed."));
+ return EFail;
+ }
+
+ iActiveWaiter->StartAndWait();
+ if (iActiveWaiter->iStatus != KErrNone)
+ {
+ INFO_PRINTF1(_L("\t Error: Create Log iview failed."));
+ return EFail;
+ }
+
+ /*
+ * Count how many of these events there are and
+ * store each event in the relevant array
+ */
+
+ TInt count = iview->CountL();
+ TLinearOrder<CLbsSelfLocateLogEvent> selfLocLogOrder(SelfLocateLogEventTimestampCompare);
+ for(int i=0 ; i<count ; i++)
+ {
+ // Start at first event to have occured...
+ if(i==0 && count > 0)
+ {
+ // Get first event in order of occurance
+ if(!iview->LastL(iActiveWaiter->iStatus))
+ {
+ INFO_PRINTF2(_L("\t Error: Read last log failed with error %d."), iActiveWaiter->iStatus.Int());
+ return EFail;
+ }
+ }
+
+ if(i>0 && i<count)
+ {
+ // Cancel outstanding request...
+ iActiveWaiter->Cancel();
+ iActiveWaiter->StartAndWait();
+ if (iActiveWaiter->iStatus != KErrNone)
+ {
+ INFO_PRINTF1(_L("\t Error: Failed to cancel outstanding request."));
+ return EFail;
+ }
+
+ // Move onto the next event in order of occurance and store it in succession
+ if(!iview->PreviousL(iActiveWaiter->iStatus))
+ {
+ INFO_PRINTF2(_L("\t Error: Read previous log failed with error %d."), iActiveWaiter->iStatus.Int());
+ return EFail;
+ }
+ }
+
+ CLogEvent* logEvent = CLogEvent::NewL(); // NEW LOGEVENT
+ CleanupStack::PushL(logEvent);
+ logEvent->CopyL(iview->Event());
+
+ // Pass ownership to the relevant array
+ switch(aUidForTheLogType)
+ {
+ case KLogLbsSelfLocateEventType:
+ {
+ RPointerArray<CLbsSelfLocateLogEvent>& logInfoArr = iParent.iSharedData->iSelfLocateLogInfoArr;
+ CLbsSelfLocateLogEvent* selfLocateEv = static_cast<CLbsSelfLocateLogEvent*>(CLbsLogEvent::NewL(*logEvent));
+ CleanupStack::PushL(selfLocateEv);
+ // SelfLoc Log events seem to be returned out of order, so wee need to sort them
+ logInfoArr.InsertInOrder(selfLocateEv, selfLocLogOrder);
+ CleanupStack::Pop(selfLocateEv);
+ }
+ break;
+
+ case KLogLbsNetworkLocateEventType:
+ {
+ RPointerArray<CLbsNetworkLocateLogEvent>& logInfoArr = iParent.iSharedData->iNetworkLocateLogInfoArr;
+ CLbsNetworkLocateLogEvent* networkLocateEv = static_cast<CLbsNetworkLocateLogEvent*>(CLbsLogEvent::NewL(*logEvent));
+ CleanupStack::PushL(networkLocateEv);
+ logInfoArr.AppendL(networkLocateEv); // Store it in the array
+ CleanupStack::Pop(networkLocateEv); }
+ break;
+
+ case KLogLbsExternalLocateEventType:
+ {
+ RPointerArray<CLbsExternalLocateLogEvent>& logInfoArr = iParent.iSharedData->iExternalLocateLogInfoArr;
+ CLbsExternalLocateLogEvent* externalLocateEv = static_cast<CLbsExternalLocateLogEvent*>(CLbsLogEvent::NewL(*logEvent));
+ CleanupStack::PushL(externalLocateEv);
+ logInfoArr.AppendL(externalLocateEv); // Store it in the array
+ CleanupStack::Pop(externalLocateEv);
+ }
+ break;
+
+ case KLogLbsTransmitLocationEventType:
+ {
+ RPointerArray<CLbsTransmitLocationLogEvent>& logInfoArr = iParent.iSharedData->iX3PLocateLogInfoArr;
+ CLbsTransmitLocationLogEvent* x3pLocateEv = static_cast<CLbsTransmitLocationLogEvent*>(CLbsLogEvent::NewL(*logEvent));
+ CleanupStack::PushL(x3pLocateEv);
+ logInfoArr.AppendL(x3pLocateEv); // Store it in the array
+ CleanupStack::Pop(x3pLocateEv);
+ }
+ break;
+
+ case KLogLbsAssistanceDataEventType:
+ {
+ RPointerArray<CLbsAssistanceDataLogEvent>& logInfoArr = iParent.iSharedData->iAssistanceDataLogInfoArr;
+ CLbsAssistanceDataLogEvent* assistanceLogEv = static_cast<CLbsAssistanceDataLogEvent*>(CLbsLogEvent::NewL(*logEvent));
+ CleanupStack::PushL(assistanceLogEv);
+ logInfoArr.AppendL(assistanceLogEv); // Store it in the array
+ CleanupStack::Pop(assistanceLogEv);
+ }
+ break;
+
+ default:
+ {
+ INFO_PRINTF1(_L("\t Error: Couldnt match UID to a testable logtype."));
+ i = count; // Force loop exit
+ SetTestStepResult(EFail);
+ }
+ }
+
+ // Cleanup scoped variables
+ CleanupStack::PopAndDestroy(logEvent);
+ }// End of for loop
+
+ // Cancel outstanding request...
+ iActiveWaiter->Cancel();
+ iActiveWaiter->StartAndWait();
+ if (iActiveWaiter->iStatus != KErrNone)
+ {
+ INFO_PRINTF1(_L("\t Error: Failed to cancel any outstanding requests."));
+ return EFail;
+ }
+
+ // Cleanup local variables
+ CleanupStack::PopAndDestroy(filter);
+
+ return EPass;
+ }
+
+void CT_LbsStep_VerifyLogInfo::SelfLocateLogTest()
+ {
+
+ INFO_PRINTF1(_L("* * * * * * * * * * * * * * * * * * * * * *"));
+ INFO_PRINTF1(_L("SelfLocateLogTest>>"));
+ TVerdict res;
+ TBool compareResult;
+
+ // Empty SharedData values between update options tests
+ iParent.iSharedData->iSelfLocateLogInfoArr.Reset();
+
+ // reads all self-locate log entries into iSelfLocateLogInfoArr:
+ res = ReadFromLogL(KLogLbsSelfLocateEventType);
+
+ if (res == EFail) // if readfromlog fails...
+ {
+ INFO_PRINTF1(_L("<FONT><b>SelfLocateRequest > ReadFromLog Failed</b></font>"));
+ SetTestStepResult(EFail);
+ }
+ else
+ {
+
+ // Compare DB log event and expected log event
+ INFO_PRINTF1(_L("SelfLocateRequest > About to compare..."));
+
+
+ RPointerArray<CLbsSelfLocateLogEvent>& logInfoArr = iParent.iSharedData->iSelfLocateLogInfoArr;
+
+ TInt sizeOfArray = logInfoArr.Count();
+
+ if( ((sizeOfArray != 2) && (iLogType == EAutonomousTrackingLocationRequest)) ||
+ ((sizeOfArray != 3) && (iLogType == EMOLRTrackingLocationRequest))
+ )
+ {
+ INFO_PRINTF2(_L("<FONT><b>Update Log test failed, there were %d Self Locate events</b></font>"),sizeOfArray);
+ SetTestStepResult(EFail);
+ }
+ else
+ {
+ // Change reference location to be expected value
+ TPositionInfo* posInfoSecond = new TPositionInfo();
+ SecondPositionFromArray(posInfoSecond);
+
+ for(TInt i = 0 ; i < sizeOfArray ; i++)
+ {
+ // note that events are in reverse order, therefore the reference position is last rather than first of 2
+ if(iLogType == EMOLRTrackingLocationRequest && i == 2)
+ {
+ iSelfLocateLogIntiailisedFromValues->SetPositionInfo(posInfoSecond);
+ }
+
+
+ if(iLogType == EMOLRSelfLocateRequest && i == 1)
+ {
+ iSelfLocateLogIntiailisedFromValues->SetPositionInfo(posInfoSecond);
+ }
+
+ compareResult = iUtils.Compare_SelfLocateLog( *(reinterpret_cast<CLbsSelfLocateLogEvent*>(logInfoArr[i])) ,
+ *iSelfLocateLogIntiailisedFromValues
+ );
+ if(!compareResult)
+ {
+ INFO_PRINTF2(_L("<FONT><b>SelfLocateRequest > compare returns false for element %d...</b></font>"),i);
+ SetTestStepResult(EFail);
+ }
+ else
+ {
+ INFO_PRINTF1(_L("SelfLocateRequest > compare returns true..."));
+ }
+ }
+
+ delete posInfoSecond;
+
+ }
+ }
+
+ INFO_PRINTF1(_L("SelfLocateLogTest<<"));
+ INFO_PRINTF1(_L("* * * * * * * * * * * * * * * * * * * * * *"));
+ }
+
+
+void CT_LbsStep_VerifyLogInfo::NetworkLocateLogTest()
+ {
+ INFO_PRINTF1(_L("* * * * * * * * * * * * * * * * * * * * * *"));
+ INFO_PRINTF1(_L("NetworkLocateLogTest>>"));
+ TVerdict res;
+ TBool compareResult;
+
+ res = ReadFromLogL(KLogLbsNetworkLocateEventType);
+
+ if (res == EFail) // if readfromlog fails...
+ {
+ INFO_PRINTF1(_L("<FONT><b>NetworkLocateRequest > Readfrom log failed</b></font>"));
+ SetTestStepResult(EFail);
+ }
+ else
+ {
+ // Compare DB log event and expected log event
+ INFO_PRINTF1(_L("NetworkSelfLocateRequest > About to compare..."));
+
+ RPointerArray<CLbsNetworkLocateLogEvent>& logInfoArr = iParent.iSharedData->iNetworkLocateLogInfoArr;
+
+ TInt sizeOfArray = logInfoArr.Count();
+
+
+ for(TInt i = 0 ; i < sizeOfArray ; i++)
+ {
+
+ compareResult = iUtils.Compare_NetworkLocateLog( *(reinterpret_cast<CLbsNetworkLocateLogEvent*>(logInfoArr[i])) ,
+ *iNetworkLocateLogIntiailisedFromValues
+ );
+ if(!compareResult)
+ {
+ INFO_PRINTF2(_L("<FONT><b>NetworkLocateRequest > compare returns false for element %d...</b></font>"),i);
+ SetTestStepResult(EFail);
+ }
+ else
+ {
+ INFO_PRINTF1(_L("NetworkLocateRequest > compare returns true..."));
+ }
+ }
+
+ }
+
+ INFO_PRINTF1(_L("NetworkLocateLogTest<<"));
+ INFO_PRINTF1(_L("* * * * * * * * * * * * * * * * * * * * * *"));
+ }
+
+void CT_LbsStep_VerifyLogInfo::ExternalLocateLogTest()
+ {
+
+ INFO_PRINTF1(_L("* * * * * * * * * * * * * * * * * * * * * *"));
+ INFO_PRINTF1(_L("ExternalLocateLogTest>>"));
+ TVerdict res;
+ TBool compareResult;
+
+ res = ReadFromLogL(KLogLbsExternalLocateEventType);
+
+ if (res == EFail) // if readfromlog fails...
+ {
+ INFO_PRINTF1(_L("<FONT><b>ExternalLocateRequest > ReadFromLog Failed</b></font>"));
+ SetTestStepResult(EFail);
+ }
+ else
+ {
+ // Compare DB log event and expected log event
+ INFO_PRINTF1(_L("NetworkSelfLocateRequest > About to compare..."));
+
+ RPointerArray<CLbsExternalLocateLogEvent>& logInfoArr = iParent.iSharedData->iExternalLocateLogInfoArr;
+
+ TInt sizeOfArray = logInfoArr.Count();
+ TPositionInfo* posInfoSecond = new TPositionInfo();
+ TPositionInfo* commonPosinfo = CommonPositionInfo();
+ for(TInt i = 0 ; i < sizeOfArray ; i++)
+ {
+ if(iLogType==EMOLRTrackingLocationRequest && i%2==1)
+ {
+ TInt gatewayId = 271064388; // KLbsGpsLocManagerUidValue
+ TUid gatewayUid = TUid::Uid(gatewayId);
+ iExternalLocateLogIntiailisedFromValues->SetRequestOriginator(gatewayUid);
+
+ TLbsRequestOutcome tweakedOutcome = ELbsRequestOutcomeInconclusive;
+ iExternalLocateLogIntiailisedFromValues->SetRequestOutcome(tweakedOutcome);
+
+ SecondPositionFromArray(posInfoSecond);
+ iExternalLocateLogIntiailisedFromValues->SetReferenceLocation(posInfoSecond);
+ iExternalLocateLogIntiailisedFromValues->SetPositionInfo(commonPosinfo);
+ }
+
+ // logtype 5
+ if(iLogType==EMOLRTrackingLocationRequest && i%2==0)
+ {
+ TInt gatewayId = 271064388; // KLbsGpsLocManagerUidValueS
+ TUid gatewayUid = TUid::Uid(gatewayId);
+ iExternalLocateLogIntiailisedFromValues->SetRequestOriginator(gatewayUid);
+
+ // Change outcome to expected value
+ TLbsRequestOutcome tweakedOutcome = ELbsRequestOutcomeSuccess;
+ iExternalLocateLogIntiailisedFromValues->SetRequestOutcome(tweakedOutcome);
+
+ // Change reference location to be expected value
+ // Set the reference position, which also be used for any required verification.
+ TPosition refPos;
+ TPositionInfo* posInfo = new TPositionInfo();
+ refPos.SetCoordinate(REFPOS_LAT_OTHER, REFPOS_LONG_OTHER, REFPOS_ALT_OTHER);
+ refPos.SetAccuracy(REFPOS_HORZ_ACCURACY_OTHER, REFPOS_VERT_ACCURACY_OTHER);
+ refPos.SetCurrentTime();
+ static_cast<TPositionInfo*>(posInfo)->SetPosition(refPos);
+
+ iExternalLocateLogIntiailisedFromValues->SetReferenceLocation(posInfo);
+ delete posInfo;
+ }
+
+ // logtype 1
+ if(iLogType==EMOLRSelfLocateRequest)
+ {
+ TInt locManagerId = 271064388; // KLbsGpsLocManagerUidValue
+ TUid locManagerUid = TUid::Uid(locManagerId);
+ iExternalLocateLogIntiailisedFromValues->SetRequestOriginator(locManagerUid);
+
+ // Change outcome to expected value
+ TLbsRequestOutcome tweakedOutcome = ELbsRequestOutcomeSuccess;
+ iExternalLocateLogIntiailisedFromValues->SetRequestOutcome(tweakedOutcome);
+
+ // Expect position to be NULL for first event
+ // Set expected outcome of second External event
+ if(i==1)
+ {
+ TLbsRequestOutcome tweakedOutcome = ELbsRequestOutcomeInconclusive;
+ iExternalLocateLogIntiailisedFromValues->SetRequestOutcome(tweakedOutcome);
+ iExternalLocateLogIntiailisedFromValues->SetPositionInfo(commonPosinfo);
+ iExternalLocateLogIntiailisedFromValues->SetReferenceLocation(iRefPosTwo);
+ }
+ }
+
+ if(iLogType==EMOLRTransmitTo3rdPartyLocationRequest && i==1)
+ {
+ TLbsRequestOutcome tweakedOutcome = ELbsRequestOutcomeInconclusive;
+ iExternalLocateLogIntiailisedFromValues->SetRequestOutcome(tweakedOutcome);
+ SecondPositionFromArray(posInfoSecond);
+ iExternalLocateLogIntiailisedFromValues->SetReferenceLocation(posInfoSecond);
+ }
+
+ if(iLogType==EMOLRTransmitTo3rdPartyLocationRequest && i==1)
+ {
+ iExternalLocateLogIntiailisedFromValues->SetPositionInfo(commonPosinfo);
+ }
+
+
+ if(iLogType == EMTLR)
+ {
+ iExternalLocateLogIntiailisedFromValues->SetPositionInfo(commonPosinfo);
+ InitialiseRHSforMTLR();
+ }
+
+
+ compareResult = iUtils.Compare_ExternalLocateLog( *(reinterpret_cast<CLbsExternalLocateLogEvent*>(logInfoArr[i])) ,
+ *iExternalLocateLogIntiailisedFromValues
+ );
+ if(!compareResult)
+ {
+ INFO_PRINTF2(_L("<FONT><b>ExternalLocateLog > compare returns false for element %d...</b></font>"),i);
+ SetTestStepResult(EFail);
+ }
+ else
+ {
+ INFO_PRINTF1(_L("ExternalLocateLog > compare returns true..."));
+ }
+ } // End for loop
+ delete commonPosinfo;
+ delete posInfoSecond;
+ }
+
+ INFO_PRINTF1(_L("ExternalLocateLogTest<<"));
+ INFO_PRINTF1(_L("* * * * * * * * * * * * * * * * * * * * * *"));
+
+ }
+
+void CT_LbsStep_VerifyLogInfo::X3PLocateLogTest()
+ {
+ INFO_PRINTF1(_L("* * * * * * * * * * * * * * * * * * * * * *"));
+ INFO_PRINTF1(_L("X3PLocateLogTest>>"));
+ TVerdict res;
+ TBool compareResult;
+
+ res = ReadFromLogL(KLogLbsTransmitLocationEventType);
+
+ if (res == EFail) // if readfromlog fails...
+ {
+ INFO_PRINTF1(_L("<FONT><b>X3PLocateRequest > ReadFromLog Failed</B></FONT>"));
+ SetTestStepResult(EFail);
+ }
+ else
+ {
+ // Compare DB log event and expected log event
+ INFO_PRINTF1(_L("X3PLocateLog > About to compare..."));
+
+ RPointerArray<CLbsTransmitLocationLogEvent>& logInfoArr = iParent.iSharedData->iX3PLocateLogInfoArr;
+
+ TInt sizeOfArray = logInfoArr.Count();
+
+ for(TInt i = 0 ; i < sizeOfArray ; i++)
+ {
+ compareResult = iUtils.Compare_TransmitLocationLog( *(reinterpret_cast<CLbsTransmitLocationLogEvent*>(logInfoArr[i])) ,
+ *iX3PLogIntiailisedFromValues
+ );
+ if(!compareResult)
+ {
+ INFO_PRINTF2(_L("<FONT><b>X3PLocateLogTest > compare returns false for element %d...</b></font>"),i);
+ SetTestStepResult(EFail);
+ }
+ else
+ {
+ INFO_PRINTF1(_L("X3PLocateLogTest > compare returns true..."));
+ }
+ }
+ }
+
+ INFO_PRINTF1(_L("X3PLocateLogTest<<"));
+ INFO_PRINTF1(_L("* * * * * * * * * * * * * * * * * * * * * *"));
+ }
+
+void CT_LbsStep_VerifyLogInfo::AssistanceDataLogTest()
+ {
+
+ INFO_PRINTF1(_L("* * * * * * * * * * * * * * * * * * * * * *"));
+ INFO_PRINTF1(_L("AssistanceDataLogTest>>"));
+ TVerdict res;
+ TBool compareResult = ETrue;
+
+ res = ReadFromLogL(KLogLbsAssistanceDataEventType);
+
+ if (res == EFail) // if readfromlog fails...
+ {
+ INFO_PRINTF1(_L("<FONT><b>AssistanceDataLog > ReadFromLog Failed</b></font>"));
+ SetTestStepResult(EFail);
+ }
+ else
+ {
+ // Compare DB log event and expected log event
+ INFO_PRINTF1(_L("AssistanceDataLog > About to compare..."));
+
+ RPointerArray<CLbsAssistanceDataLogEvent>& logInfoArr = iParent.iSharedData->iAssistanceDataLogInfoArr;
+
+ TInt sizeOfArray = logInfoArr.Count();
+ TPositionInfo* commonPosinfo = CommonPositionInfo();
+ for(TInt i = 0 ; i < sizeOfArray ; i++)
+ {
+
+ if( iLogType == EMOLRTrackingLocationRequest ||
+ iLogType ==EMOLRTransmitTo3rdPartyLocationRequest )
+ {
+ iAssistanceDataLogIntiailisedFromValuesFirst->SetRequestAssistanceDataType(0);
+ }
+
+
+ /*
+ * If we run X3P log test on its own we get logs that are different than when its run
+ * in sequence with other tests.
+ */
+ if(sizeOfArray > 1 && iLogType ==EMOLRTransmitTo3rdPartyLocationRequest)
+ {
+ if(i==1)
+ {
+ // Second log has a mask of 0
+ iAssistanceDataLogIntiailisedFromValuesFirst->SetRequestAssistanceDataType(0);
+ compareResult = iUtils.Compare_AssistanceDataLog( *(reinterpret_cast<CLbsAssistanceDataLogEvent*>(logInfoArr[i])) ,
+ *iAssistanceDataLogIntiailisedFromValuesFirst
+ );
+ }
+ else
+ {
+ iAssistanceDataLogIntiailisedFromValuesFirst->SetRequestAssistanceDataType(8);
+ compareResult = iUtils.Compare_AssistanceDataLog( *(reinterpret_cast<CLbsAssistanceDataLogEvent*>(logInfoArr[i])) ,
+ *iAssistanceDataLogIntiailisedFromValuesFirst
+ );
+ }
+ }
+
+ if(!compareResult)
+ {
+ INFO_PRINTF2(_L("<FONT><b>AssistanceDataLogTest > compare returns false for element %d...</b></FONT>"),i);
+ SetTestStepResult(EFail);
+ }
+ else
+ {
+ INFO_PRINTF1(_L("AssistanceDataLogTest > compare returns true..."));
+ }
+ }// End of for loop
+ delete commonPosinfo;
+ }
+
+ INFO_PRINTF1(_L("AssistanceDataLogTest<<"));
+ INFO_PRINTF1(_L("* * * * * * * * * * * * * * * * * * * * * *"));
+ }
+
+
+
+// Top level functionality
+
+void CT_LbsStep_VerifyLogInfo::AutonomousSelfLocateLogTest()
+ {
+ SelfLocateLogTest();
+ }
+
+void CT_LbsStep_VerifyLogInfo::MOLRSelfLocateRequest() // ** Similar **
+ {
+ ExternalLocateLogTest();
+ AssistanceDataLogTest();
+ SelfLocateLogTest();
+ }
+
+void CT_LbsStep_VerifyLogInfo::MOLRCellBasedLocationRequest()
+ {
+ NetworkLocateLogTest();
+ }
+
+void CT_LbsStep_VerifyLogInfo::MOLRTransmitTo3rdPartyLocationRequest()
+ {
+ AssistanceDataLogTest();
+ ExternalLocateLogTest();
+ X3PLocateLogTest();
+ }
+
+void CT_LbsStep_VerifyLogInfo::MTLR() // ** Similar **
+ {
+ // SelfLocateLogTest();
+ ExternalLocateLogTest();
+ AssistanceDataLogTest();
+ }
+
+void CT_LbsStep_VerifyLogInfo::MOLRTrackingLocationRequest() // ** Similar **
+ {
+ SelfLocateLogTest();
+ AssistanceDataLogTest();
+ ExternalLocateLogTest();
+ }
+
+void CT_LbsStep_VerifyLogInfo::AutonomousTrackingLocationRequest()
+ {
+ SelfLocateLogTest();
+ }
+
+
+
+
+void CT_LbsStep_VerifyLogInfo::InitialiseRHS()
+ {
+ // Variables needed for all reads
+ // CommonToAll
+ TBool direction; // Inbound or outbound
+
+ // wont be filled in components ELbsRequestOutcomeSuccess/ELbsRequestOutcomeFailed/...Inconclusive etc
+ TLbsRequestOutcome theSelfLocateRequestOutcome;
+ TLbsRequestOutcome theX3PRequestOutcome;
+ TLbsRequestOutcome theExternalLocateRequestOutcome;
+ TLbsRequestOutcome theNetworkLocateRequestOutcome;
+ TLbsRequestOutcome theAssistanceDataRequestOutcome;
+
+ // Common to 4/5 but not assistance
+ TInt theCost; // not implemented
+
+ // Common to 4/5 but not external
+ TUid theLocalAppUid; // work out from PID
+
+ // Common only to External Locate
+ TInt theOriginator; // From network gateway
+ TInt theSessionNum; // TNetLocSessionID?
+ TInt theSessionOwner; // TNetLocSessionID?
+ TInt theAction; // Set within privacy request
+ TInt theAdvice; // Set within privacy request
+ TPtrC theClientName; // Set within privacy request
+ TPtrC theExternalId; // Set within privacy request
+ TPtrC theRequestor; // Set within privacy request
+ TInt theResult; // ENum within privacy response
+
+ // Common only to X3P Locate
+ TUid theX3PUid; // work out from PID
+
+ // Common only to Assistance
+ TInt theFirstRequestMask; // Set within GPSlocmanager // Set within GPSlocmanager for wanted
+ TInt theReceiveMask; // Set within GPSlocmanager // Set within GPSlocmanager for recieved
+
+
+ // Specialised variables
+ theCost = 0;
+ theLocalAppUid = TUid::Uid(RProcess().SecureId()); // Get this from ProcessId each time
+ TInt testX3PserverId = 271065697;
+ theX3PUid = TUid::Uid(testX3PserverId); // Id of NRH
+ TInt locServerAppId = 271064387;
+ TUid locServerAppUid = TUid::Uid(locServerAppId);
+
+ direction = EFalse;
+
+ theSelfLocateRequestOutcome = ELbsRequestOutcomeSuccess; // or ELbsRequestOutcomeFailed or Inconclusive etc
+ theX3PRequestOutcome = ELbsRequestOutcomeSuccess;// Set it to this for X3P test
+ theExternalLocateRequestOutcome = ELbsRequestOutcomeSuccess;
+ theNetworkLocateRequestOutcome = ELbsRequestOutcomeSuccess;
+ theAssistanceDataRequestOutcome = ELbsRequestOutcomeInconclusive; // Set it to this for X3P test
+
+ TPositionInfo* commonPosinfo = CommonPositionInfo();
+
+
+ // Set up relevant 5 Log variables for comparison using position info etc
+ // SELF LOCATE LOG
+ iSelfLocateLogIntiailisedFromValues->SetPositionInfo(commonPosinfo);
+ iSelfLocateLogIntiailisedFromValues->SetDirection(direction);
+ iSelfLocateLogIntiailisedFromValues->SetLocalApp(theLocalAppUid); // This apps UID
+ iSelfLocateLogIntiailisedFromValues->SetCostInformation(theCost); // set cost information if there are any;
+ iSelfLocateLogIntiailisedFromValues->SetRequestOutcome(theSelfLocateRequestOutcome); // by passing the location request outcome;
+
+
+ // EXTERNAL LOG
+ iExternalLocateLogIntiailisedFromValues->SetDirection(direction);
+ iExternalLocateLogIntiailisedFromValues->SetCostInformation(theCost);
+ iExternalLocateLogIntiailisedFromValues->SetRequestOutcome(theExternalLocateRequestOutcome); // by passing the location request outcome;
+ // No local app id to set for external log
+ // Common only to External Locate
+ theOriginator = 271064389; // From Network request handler
+ theSessionOwner = 0; // 268440115 TNetLocSessionID?
+ theSessionNum = 0; // TNetLocSessionID?
+ theAction = 0; // Set within privacy request 0
+ theAdvice = 0; // Set within privacy request 0 = ERequestAdviceNotUsed, 1 = ERequestActionAllow
+
+ _LIT(KClientName,"");
+ _LIT(KRequestor,"");
+ _LIT(KExternalId,"");
+ theClientName.Set(KClientName); // Set within privacy request
+ theRequestor.Set(KRequestor); // Set within privacy request
+ theExternalId.Set(KExternalId); // Set within privacy request
+ theResult = 0; // ENum within privacy response, 1 = ERequestAccepted
+
+ // set privacy request parameters
+ TLbsLoggingPrivacyRequestParams reqParams;
+ TLbsNetSessionId sessionId(TUid::Uid(0), (TUint32)theSessionNum);
+ reqParams.iSessionId.SetSessionOwner(TUid::Uid(theSessionOwner));
+ reqParams.iSessionId.SetSessionNum(theSessionNum);
+ reqParams.iRequestPrivacy.SetRequestAction((TLbsNetPosRequestPrivacy::TLbsRequestAction)theAction);
+ reqParams.iRequestPrivacy.SetRequestAdvice((TLbsNetPosRequestPrivacy::TLbsRequestAdvice)theAdvice);
+
+ TPtrC8 ptrReq((TUint8*)theRequestor.Ptr(), theRequestor.Size());
+ TPtrC8 ptrClient((TUint8*)theClientName.Ptr(), theClientName.Size());
+ TPtrC8 ptrId((TUint8*)theExternalId.Ptr(), theExternalId.Size());
+ reqParams.iRequestInfo.SetRequesterId(reinterpret_cast<const TDesC8&>(ptrReq));
+ reqParams.iRequestInfo.SetClientName(reinterpret_cast<const TDesC8&>(ptrClient));
+ reqParams.iRequestInfo.SetClientExternalId(reinterpret_cast<const TDesC8&>(ptrId));
+
+ // set privacy response parameters
+ TLbsLoggingPrivacyResponseParams respParams;
+ respParams.iSessionId.SetSessionOwner(TUid::Uid(0));
+ respParams.iSessionId.SetSessionNum(0);
+ respParams.iResult = static_cast<CLbsNetworkProtocolBase::TLbsPrivacyResponse>(theResult);
+
+ iExternalLocateLogIntiailisedFromValues->SetRequestOriginator(TUid::Uid(theOriginator));
+ iExternalLocateLogIntiailisedFromValues->SetPrivacyRequestParams(reqParams); // set privacy request parameters from request originator
+ iExternalLocateLogIntiailisedFromValues->SetPrivacyResponseParams(respParams); // set privacy response parameters from privacy controller
+ iExternalLocateLogIntiailisedFromValues->SetReferenceLocation(commonPosinfo);
+
+
+ // X3P LOG
+ iX3PLogIntiailisedFromValues->SetPositionInfo(commonPosinfo);
+ iX3PLogIntiailisedFromValues->SetDirection(direction);
+ iX3PLogIntiailisedFromValues->SetCostInformation(theCost); // set cost information if there are any;
+ iX3PLogIntiailisedFromValues->SetRequestOutcome(theX3PRequestOutcome); // by passing the location request outcome;
+ // X3P log only
+ iX3PLogIntiailisedFromValues->SetX3PApp(theX3PUid); // This apps Uid
+
+
+
+ // FIRST ASSISTANCE DATA LOG
+ iAssistanceDataLogIntiailisedFromValuesFirst->SetDirection(direction);
+ iAssistanceDataLogIntiailisedFromValuesFirst->SetRequestOutcome(theAssistanceDataRequestOutcome); // by passing the location request outcome;
+ // No cost to set for assistance log
+ // Common only to Assistance
+ theFirstRequestMask = 8; // Set within GPSlocmanager for wanted (8 for first in array, 0 for second)
+ theReceiveMask = 8; // Set within GPSlocmanager for recieved
+ iAssistanceDataLogIntiailisedFromValuesFirst->SetRequestAssistanceDataType(theFirstRequestMask);
+ iAssistanceDataLogIntiailisedFromValuesFirst->SetReceiveAssistanceDataType(theReceiveMask);
+
+
+
+ // NETWORK LOCATE LOG
+ commonPosinfo->SetModuleId(TUid::Uid(0));
+
+ iNetworkLocateLogIntiailisedFromValues->SetPositionInfo(commonPosinfo);
+ iNetworkLocateLogIntiailisedFromValues->SetDirection(direction);
+ iNetworkLocateLogIntiailisedFromValues->SetCostInformation(theCost); // set cost information if there are any;
+ iNetworkLocateLogIntiailisedFromValues->SetRequestOutcome(theNetworkLocateRequestOutcome); // by passing the location request outcome;
+ iNetworkLocateLogIntiailisedFromValues->SetLocalApp(locServerAppUid); // This apps UID
+
+ delete commonPosinfo;
+ }
+
+void CT_LbsStep_VerifyLogInfo::InitialiseRHSforMTLR()
+ {
+ // For MTLR, most of the expected external logs values need to be completely different.
+
+ TInt theOriginator; // From network gateway
+ TInt theSessionNum; // TNetLocSessionID?
+ TInt theSessionOwner; // TNetLocSessionID?
+ TInt theAction; // Set within privacy request
+ TInt theAdvice; // Set within privacy request
+ TPtrC8 theClientName; // Set within privacy request
+ TPtrC8 theExternalId; // Set within privacy request
+ TPtrC8 theRequestor; // Set within privacy request
+ TInt theRequestResult; // ENum within privacy response
+
+ theOriginator = 271064432; // From Protocol Module
+ theSessionOwner = 271064432; // Protocol Module
+ theSessionNum = 1; // TNetLocSessionID?
+ theAction = 1; // Set within privacy request 0
+ theAdvice = 1; // Set within privacy request 0 = ERequestAdviceNotUsed, 1 = ERequestActionAllow
+
+ _LIT8(KMTLRClientName,"MT-LR test client name");
+ _LIT8(KMTLRRequestor,"MT-LR test requester id");
+ _LIT8(KMTLRExternalId,"MT-LR test client external id");
+ theClientName.Set(KMTLRClientName); // Set within privacy request
+ theRequestor.Set(KMTLRRequestor); // Set within privacy request
+ theExternalId.Set(KMTLRExternalId); // Set within privacy request
+ theRequestResult = 1; // ENum within privacy response, 1 = ERequestAccepted
+
+
+ // set privacy request parameters
+ TLbsLoggingPrivacyRequestParams reqParams;
+ TLbsNetSessionId sessionId(TUid::Uid(0), (TUint32)theSessionNum);
+ reqParams.iSessionId.SetSessionOwner(TUid::Uid(theSessionOwner));
+ reqParams.iSessionId.SetSessionNum(theSessionNum);
+ reqParams.iRequestPrivacy.SetRequestAction((TLbsNetPosRequestPrivacy::TLbsRequestAction)theAction);
+ reqParams.iRequestPrivacy.SetRequestAdvice((TLbsNetPosRequestPrivacy::TLbsRequestAdvice)theAdvice);
+
+ TPtrC8 ptrReq((TUint8*)theRequestor.Ptr(), theRequestor.Size());
+ TPtrC8 ptrClient((TUint8*)theClientName.Ptr(), theClientName.Size());
+ TPtrC8 ptrId((TUint8*)theExternalId.Ptr(), theExternalId.Size());
+ reqParams.iRequestInfo.SetRequesterId(reinterpret_cast<const TDesC8&>(ptrReq));
+ reqParams.iRequestInfo.SetClientName(reinterpret_cast<const TDesC8&>(ptrClient));
+ reqParams.iRequestInfo.SetClientExternalId(reinterpret_cast<const TDesC8&>(ptrId));
+
+ // set privacy response parameters
+ TLbsLoggingPrivacyResponseParams respParams;
+ respParams.iSessionId.SetSessionOwner(TUid::Uid(theSessionOwner ));
+ respParams.iSessionId.SetSessionNum(theSessionNum );
+ respParams.iResult = static_cast<CLbsNetworkProtocolBase::TLbsPrivacyResponse>(theRequestResult);
+
+ iExternalLocateLogIntiailisedFromValues->SetRequestOriginator(TUid::Uid(theOriginator));
+ iExternalLocateLogIntiailisedFromValues->SetPrivacyRequestParams(reqParams); // set privacy request parameters from request originator
+ iExternalLocateLogIntiailisedFromValues->SetPrivacyResponseParams(respParams); // set privacy response parameters from privacy controller
+ }
+
+void CT_LbsStep_VerifyLogInfo::ClearLog()
+ {
+ // Setup a time in the future, before which all events will be deleted
+ _LIT(KDateCorrect1,"20900101:");
+ TTime time;
+ TBuf <10> theDate(KDateCorrect1);
+ TInt err=time.Set(theDate);
+
+ // Ensure time has been set correctly
+ if(err != KErrNone)
+ {
+ INFO_PRINTF1(_L("Failed to set time"));
+ }
+
+ if(err == KErrGeneral)
+ {
+ INFO_PRINTF1(_L("Time syntax is incorrect"));
+ }
+
+ // Set the filter to view ALL logs
+ CLogFilter* filter = CLogFilter::NewL(); // NEW FILTER
+ CleanupStack::PushL(filter);
+ TBool res = iview->SetFilterL(*filter, iActiveWaiter->iStatus);
+ if (res == EFalse)
+ {
+ INFO_PRINTF1(_L("\t No such events to filter in the view."));
+ iclient->Cancel();
+ }
+ else
+ {
+ // else If there are logs, flush them
+
+ // Cancel outstanding requests
+ iclient->Cancel();
+ iActiveWaiter->StartAndWait();
+ if (iActiveWaiter->iStatus != KErrNone)
+ {
+ INFO_PRINTF2(_L("\t Error: Cancel returned error %d."),iActiveWaiter->iStatus.Int());
+ SetTestStepResult(EFail);
+ }
+
+ // Clear ALL logs
+ iclient->ClearLog(time, iActiveWaiter->iStatus);
+ iActiveWaiter->StartAndWait();
+ if (iActiveWaiter->iStatus != KErrNone)
+ {
+ INFO_PRINTF2(_L("\t Error: Clear log returned error %d."),iActiveWaiter->iStatus.Int());
+ SetTestStepResult(EFail);
+ }
+
+ //Confirm log is cleared
+ if(iview->CountL() != 0)
+ {
+ INFO_PRINTF2(_L("<FONT><B>ERROR: Log still has %d entries</B></FONT>"),iview->CountL());
+ SetTestStepResult(EFail);
+ }
+
+ }
+
+ CleanupStack::PopAndDestroy(filter);
+
+ }
+void CT_LbsStep_VerifyLogInfo::SecondPositionFromArray(TPositionInfo* aPosInfoSecond)
+{
+
+ //All this in TPosInfo Structure
+ TUid theModuleId; // use from VerifyLogInfo array
+ TPositionModuleInfo::TTechnologyType theTechType;
+ TPositionModeReason theModeReason;
+ TReal32 theVerAccuracy;
+ TReal32 theHorAccuracy;
+ TReal64 theLat;
+ TReal64 theLong;
+ TReal theAltitude;
+
+ // Initialise variables from Verify array
+ RPointerArray<TAny>& logInfoArr = iParent.iSharedData->iVerifyPosInfoArr;
+ TPositionInfo* tPosInfo = (reinterpret_cast<TPositionInfo*>(logInfoArr[0]));
+ TPosition tPos;
+ tPosInfo->GetPosition(tPos);
+
+ theModuleId = TUid::Uid(271064388); // 271064388;
+ theTechType = tPosInfo->PositionMode();
+ theModeReason = tPosInfo->PositionModeReason();
+ theVerAccuracy = REFPOS_VERT_ACCURACY; // For second x3p reference position comparison
+ theHorAccuracy = REFPOS_HORZ_ACCURACY; // For second x3p reference position comparison
+ theLat = REFPOS_LAT; // For second x3p reference position comparison
+ theLong = REFPOS_LONG; // For second x3p reference position comparison
+ theAltitude = REFPOS_ALT; // For second x3p reference position comparison
+
+
+ // Setup position information using intialised variables
+ aPosInfoSecond->SetModuleId(theModuleId);
+ aPosInfoSecond->SetUpdateType(EPositionUpdateGeneral);
+ aPosInfoSecond->SetPositionMode((TPositionModuleInfo::TTechnologyType)theTechType);
+ aPosInfoSecond->SetPositionModeReason((TPositionModeReason)theModeReason);
+ TPosition position;
+ position.SetCurrentTime();
+ position.SetAccuracy(theHorAccuracy,theVerAccuracy);
+ position.SetCoordinate(theLat,theLong, theAltitude);
+ static_cast<TPositionInfo*>(aPosInfoSecond)->SetPosition(position);
+}
+
+
+TPositionInfo* CT_LbsStep_VerifyLogInfo::CommonPositionInfo()
+{
+ //All this in TPosInfo Structure
+ TUid theModuleId; // use from VerifyLogInfo array
+ TPositionModuleInfo::TTechnologyType theTechType;
+ TPositionModeReason theModeReason;
+ TReal32 theVerAccuracy;
+ TReal32 theHorAccuracy;
+ TReal64 theLat;
+ TReal64 theLong;
+ TReal theAltitude;
+
+ // All this in TPosInfo Structure use from VerifyLogInfo array
+ RPointerArray<TAny>& logInfoArr = iParent.iSharedData->iVerifyPosInfoArr;
+
+ // Initialise variables from Verify array
+ TPositionInfo* tPosInfo = (reinterpret_cast<TPositionInfo*>(logInfoArr[0]));
+ TPosition tPos;
+ tPosInfo->GetPosition(tPos);
+
+ theModuleId = TUid::Uid(271064388); // 271064388;
+ theTechType = tPosInfo->PositionMode();
+ theModeReason = tPosInfo->PositionModeReason();
+ theVerAccuracy = tPos.VerticalAccuracy();
+ theHorAccuracy = tPos.HorizontalAccuracy();
+ theLat = tPos.Latitude();
+ theLong = tPos.Longitude();
+ theAltitude = tPos.Altitude();
+
+
+ // Setup position information using intialised variables
+ TPositionInfo* posInfo = new TPositionInfo();
+ posInfo->SetModuleId(theModuleId);
+ posInfo->SetUpdateType(EPositionUpdateGeneral);
+ posInfo->SetPositionMode((TPositionModuleInfo::TTechnologyType)theTechType);
+ posInfo->SetPositionModeReason((TPositionModeReason)theModeReason);
+ TPosition position;
+ position.SetCurrentTime();
+ position.SetAccuracy(theHorAccuracy,theVerAccuracy);
+ position.SetCoordinate(theLat,theLong, theAltitude);
+ static_cast<TPositionInfo*>(posInfo)->SetPosition(position);
+
+ return posInfo;
+}
+
+/** Compares the timestamps of two log events
+ returns 1 if the lhs is newer, -1 if the lhs is older or 0 if both are the same */
+TInt CT_LbsStep_VerifyLogInfo::SelfLocateLogEventTimestampCompare(const CLbsSelfLocateLogEvent& aLog1,
+ const CLbsSelfLocateLogEvent& aLog2)
+ {
+ TPositionInfo* tPosInfo1 = static_cast<TPositionInfo*>(aLog1.PositionInfo());
+ TPositionInfo* tPosInfo2 = static_cast<TPositionInfo*>(aLog2.PositionInfo());
+ TPosition tPos1;
+ TPosition tPos2;
+ tPosInfo1->GetPosition(tPos1);
+ tPosInfo2->GetPosition(tPos2);
+ TInt64 t1 = tPos1.Time().Int64();
+ TInt64 t2 = tPos2.Time().Int64();
+ if(t1 < t2)
+ {
+ // lhs is Newer
+ return 1;
+ }
+ else if(t1 > t2)
+ {
+ // lhs is Older
+ return -1;
+ }
+ // the same
+ return 0;
+ }
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/common/src/ctlbsstepverifymodinfo.cpp Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,75 @@
+// 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 ctlbsstepverifymodinfo.cpp
+// This is the class implementation for the Verify Module Information test step
+//
+//
+
+#include "ctlbsstepverifymodinfo.h"
+
+#include "tlbsutils.h"
+
+
+/**
+ * Constructor
+ */
+CT_LbsStep_VerifyModInfo::CT_LbsStep_VerifyModInfo(CT_LbsServer& aParent) : CT_LbsStep(aParent)
+ {
+ SetTestStepName(KLbsStep_VerifyModInfo);
+ }
+
+
+/**
+Static Constructor
+*/
+CT_LbsStep_VerifyModInfo* CT_LbsStep_VerifyModInfo::New(CT_LbsServer& aParent)
+ {
+ return new CT_LbsStep_VerifyModInfo(aParent);
+ // Note the lack of ELeave.
+ // This means that having insufficient memory will return NULL;
+ }
+
+
+/**
+ * @return - TVerdict code
+ * Override of base class pure virtual
+ * Our implementation only gets called if the base class doTestStepPreambleL() did
+ * not leave. That being the case, the current test result value will be EPass.
+ */
+TVerdict CT_LbsStep_VerifyModInfo::doTestStepL()
+ {
+ // Helper test step used to verify module information.
+ INFO_PRINTF1(_L(">>CT_LbsStep_VerifyModInfo::doTestStepL()"));
+
+ if (TestStepResult() == EPass)
+ {
+ // Access the module infos to be compared.
+ TPositionModuleInfo& verifyModInfo = iParent.iSharedData->iVerifyModuleInfo;
+ TPositionModuleInfo& currentModInfo = iParent.iSharedData->iCurrentModuleInfo;
+ T_LbsUtils utils;
+
+ // Verify module informations are equal.
+ TBool res = utils.Compare_ModuleInfo(verifyModInfo, currentModInfo);
+
+ // Fail test if they do not match.
+ if (!res)
+ {
+ SetTestStepResult(EFail);
+ }
+ }
+
+ INFO_PRINTF1(_L("<<CT_LbsStep_VerifyModInfo::doTestStepL()"));
+
+ return TestStepResult();
+ }
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/common/src/ctlbsstepverifymodstatus.cpp Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,76 @@
+// 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 ctlbsstepverifymodinfo.cpp
+// This is the class implementation for the Verify Module Status test step
+//
+//
+
+#include "ctlbsstepverifymodstatus.h"
+#include "tlbsutils.h"
+
+
+/**
+ * Constructor
+ */
+CT_LbsStep_VerifyModStatus::CT_LbsStep_VerifyModStatus(CT_LbsServer& aParent) : CT_LbsStep(aParent)
+ {
+ SetTestStepName(KLbsStep_VerifyModuleStatus);
+ }
+
+
+/**
+Static Constructor
+*/
+CT_LbsStep_VerifyModStatus* CT_LbsStep_VerifyModStatus::New(CT_LbsServer& aParent)
+ {
+ return new CT_LbsStep_VerifyModStatus(aParent);
+ // Note the lack of ELeave.
+ // This means that having insufficient memory will return NULL;
+ }
+
+
+/**
+ * @return - TVerdict code
+ * Override of base class pure virtual
+ * Our implementation only gets called if the base class doTestStepPreambleL() did
+ * not leave. That being the case, the current test result value will be EPass.
+ */
+TVerdict CT_LbsStep_VerifyModStatus::doTestStepL()
+ {
+ // Helper test step used to verify module information.
+ INFO_PRINTF1(_L(">>CT_LbsStep_VerifyModStatus::doTestStepL()"));
+
+ if (TestStepResult() == EPass)
+ {
+ // Access the module infos to be compared.
+ TPositionModuleStatus& verifyModStatus = iParent.iSharedData->iVerifyModuleStatus;
+ TPositionModuleStatus& currentModStatus = iParent.iSharedData->iCurrentModuleStatus;
+ T_LbsUtils utils;
+
+ // Verify module informations are equal.
+ TBool res;
+
+ res = utils.Compare_ModuleStatus(verifyModStatus, currentModStatus);
+
+ // Fail test if they do not match.
+ if (!res)
+ {
+ SetTestStepResult(EFail);
+ }
+ }
+
+ INFO_PRINTF1(_L("<<CT_LbsStep_VerifyModStatus::doTestStepL()"));
+
+ return TestStepResult();
+ }
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/common/src/ctlbsstepverifyposinfos.cpp Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,73 @@
+// 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 ctlbsstep_verifyposinfos.cpp
+// This is the class implementation for the Notify Position Update Tests
+//
+//
+
+#include "ctlbsstepverifyposinfos.h"
+
+#include "tlbsutils.h"
+
+
+/**
+ * Constructor
+ */
+CT_LbsStep_VerifyPosInfos::CT_LbsStep_VerifyPosInfos(CT_LbsServer& aParent) : CT_LbsStep(aParent)
+ {
+ SetTestStepName(KLbsStep_VerifyPosInfos);
+ }
+
+
+/**
+Static Constructor
+*/
+CT_LbsStep_VerifyPosInfos* CT_LbsStep_VerifyPosInfos::New(CT_LbsServer& aParent)
+ {
+ return new CT_LbsStep_VerifyPosInfos(aParent);
+ // Note the lack of ELeave.
+ // This means that having insufficient memory will return NULL;
+ }
+
+
+/**
+ * @return - TVerdict code
+ * Override of base class pure virtual
+ * Our implementation only gets called if the base class doTestStepPreambleL() did
+ * not leave. That being the case, the current test result value will be EPass.
+ */
+TVerdict CT_LbsStep_VerifyPosInfos::doTestStepL()
+ {
+ // Helper test step used to Verify the Position Information Array.
+ INFO_PRINTF1(_L(">>CT_LbsStep_VerifyPosInfos::doTestStepL()"));
+
+ if (TestStepResult() == EPass)
+ {
+ // Access the arrays to be compared.
+ RPointerArray<TAny>& verifyPosInfoArr = iParent.iSharedData->iVerifyPosInfoArr;
+ RPointerArray<TAny>& currentPosInfoArr = iParent.iSharedData->iCurrentPosInfoArr;
+ T_LbsUtils utils;
+
+ // Verify arrays are equal.
+ TBool res = utils.Compare_PosInfoArr(verifyPosInfoArr, currentPosInfoArr, T_LbsUtils::EExactAccuracy);
+
+ // Fail test if arrays do not match.
+ if (!res)
+ SetTestStepResult(EFail);
+ }
+
+ INFO_PRINTF1(_L("<<CT_LbsStep_VerifyPosInfos::doTestStepL()"));
+
+ return TestStepResult();
+ }
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/common/src/ctlbsstepverifyroughposinfos.cpp Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,73 @@
+// 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 ctlbsstep_verifyposinfos.cpp
+// This is the class implementation for the Notify Position Update Tests
+//
+//
+
+#include "ctlbsstepverifyroughposinfos.h"
+
+#include "tlbsutils.h"
+
+
+/**
+ * Constructor
+ */
+CT_LbsStep_VerifyRoughPosInfos::CT_LbsStep_VerifyRoughPosInfos(CT_LbsServer& aParent) : CT_LbsStep(aParent)
+ {
+ SetTestStepName(KLbsStep_VerifyRoughPosInfos);
+ }
+
+
+/**
+Static Constructor
+*/
+CT_LbsStep_VerifyRoughPosInfos* CT_LbsStep_VerifyRoughPosInfos::New(CT_LbsServer& aParent)
+ {
+ return new CT_LbsStep_VerifyRoughPosInfos(aParent);
+ // Note the lack of ELeave.
+ // This means that having insufficient memory will return NULL;
+ }
+
+
+/**
+ * @return - TVerdict code
+ * Override of base class pure virtual
+ * Our implementation only gets called if the base class doTestStepPreambleL() did
+ * not leave. That being the case, the current test result value will be EPass.
+ */
+TVerdict CT_LbsStep_VerifyRoughPosInfos::doTestStepL()
+ {
+ // Helper test step used to Verify the Position Information Array.
+ INFO_PRINTF1(_L(">>CT_LbsStep_VerifyRoughPosInfos::doTestStepL()"));
+
+ if (TestStepResult() == EPass)
+ {
+ // Access the arrays to be compared.
+ RPointerArray<TAny>& verifyPosInfoArr = iParent.iSharedData->iVerifyPosInfoArr;
+ RPointerArray<TAny>& currentPosInfoArr = iParent.iSharedData->iCurrentPosInfoArr;
+ T_LbsUtils utils;
+
+ // Verify arrays are equal.
+ TBool res = utils.Compare_PosInfoArr(verifyPosInfoArr, currentPosInfoArr, T_LbsUtils::ERoughAccuracy);
+
+ // Fail test if arrays do not match.
+ if (!res)
+ SetTestStepResult(EFail);
+ }
+
+ INFO_PRINTF1(_L("<<CT_LbsStep_VerifyRoughPosInfos::doTestStepL()"));
+
+ return TestStepResult();
+ }
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/group/bld.inf Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,21 @@
+// 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:
+//
+
+#include "../lbstestutils/group/bld.inf"
+#include "../internal/lbstestserver/group/bld.inf"
+#include "../lbsclient/group/bld.inf"
+
+// Hybrid mode support
+#include "../lbstestchannel/group/bld.inf"
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/internal/lbstestserver/BWINS/lbstestclientU.DEF Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,6 @@
+EXPORTS
+ ?NewL@CLbsTestServer@@SAPAV1@XZ @ 1 NONAME ; class CLbsTestServer * CLbsTestServer::NewL(void)
+ ?StopLbsSystem@CLbsTestServer@@QAEHXZ @ 2 NONAME ; int CLbsTestServer::StopLbsSystem(void)
+ ?ResetLbsSystem@CLbsTestServer@@QAEHXZ @ 3 NONAME ; int CLbsTestServer::ResetLbsSystem(void)
+ ?StartLbsSystem@CLbsTestServer@@QAEHXZ @ 4 NONAME ; int CLbsTestServer::StartLbsSystem(void)
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/internal/lbstestserver/EABI/lbstestclientU.DEF Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,6 @@
+EXPORTS
+ _ZN14CLbsTestServer13StopLbsSystemEv @ 1 NONAME
+ _ZN14CLbsTestServer4NewLEv @ 2 NONAME
+ _ZN14CLbsTestServer14ResetLbsSystemEv @ 3 NONAME
+ _ZN14CLbsTestServer14StartLbsSystemEv @ 4 NONAME
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/internal/lbstestserver/group/bld.inf Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,22 @@
+// 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:
+//
+
+
+PRJ_TESTEXPORTS
+../inc/lbstestclient.h /epoc32/include/lbs/test/lbstestclient.h
+
+PRJ_TESTMMPFILES
+lbstestclient.mmp
+lbstestserver.mmp
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/internal/lbstestserver/group/lbstestclient.mmp Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,32 @@
+//
+// lbstestclient.mmp
+//
+// Project file for the LBS test client dll
+//
+
+TARGET lbstestclient.dll
+TARGETTYPE dll
+
+UID 0x1000007A 0x10282282
+
+CAPABILITY All -Tcb
+
+SOURCEPATH ../src
+SOURCE lbstestclient.cpp
+SOURCE lbstestclientimpl.cpp
+
+// Generic server framework
+//SOURCEPATH ../../../../../locationmgmt/locationcore/LbsLocCommon/ServerFramework/src
+SOURCE cserverlaunch.cpp
+SOURCE rsecuresessionbase.cpp
+SOURCE tserverstartparams.cpp
+SOURCE tstartparamsbase.cpp
+
+
+USERINCLUDE ../inc
+//USERINCLUDE ../../../../../locationmgmt/locationcore/LbsLocCommon/ServerFramework/inc
+
+SYSTEMINCLUDE /epoc32/include
+SYSTEMINCLUDE /epoc32/include/lbs
+
+LIBRARY euser.lib
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/internal/lbstestserver/group/lbstestserver.mmp Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,42 @@
+//
+// lbstestserver.mmp
+//
+// Project file for the LBS test server
+//
+
+TARGET lbstestserver.exe
+TARGETTYPE exe
+
+UID 0x1000007A 0x10282283
+
+CAPABILITY All -Tcb
+
+SOURCEPATH ../src
+SOURCE lbstestservermain.cpp
+SOURCE lbstestserver.cpp
+SOURCE lbstestsession.cpp
+
+// Generic server framework
+//SOURCEPATH ../../../../../locationmgmt/locationcore/LbsLocCommon/ServerFramework/src
+SOURCE csecureasbase.cpp
+SOURCE csecureserverbase.cpp
+SOURCE csecuresessionbase.cpp
+SOURCE cshutdowntimer.cpp
+SOURCE messageutils.cpp
+SOURCE tserverstartparams.cpp
+SOURCE tprocessstartparams.cpp
+SOURCE cprocesslaunch.cpp
+SOURCE tstartparamsbase.cpp
+
+
+USERINCLUDE ../inc
+//USERINCLUDE ../../../../../locationmgmt/locationcore/lbsrootapi/inc
+//USERINCLUDE ../../../../../locationmgmt/locationcore/LbsLocCommon/ServerFramework/inc
+
+SYSTEMINCLUDE /epoc32/include
+SYSTEMINCLUDE /epoc32/include/lbs
+
+LIBRARY euser.lib
+LIBRARY efsrv.lib
+LIBRARY lbsrootapi.lib
+LIBRARY lbspartnercommon.lib
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/internal/lbstestserver/inc/claunchedprocess.h Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,47 @@
+// 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:
+// Definition of class used to launch a LBS processes (non-server)
+//
+//
+
+
+
+/**
+ @file
+ @internalTechnology
+*/
+
+#ifndef __LBSPROCESSLAUNCH_H__
+#define __LBSPROCESSLAUNCH_H__
+
+#include <e32base.h>
+#include "tprocessstartparams.h"
+
+/**
+@internalTechnology
+@released
+
+CBase based Class, presents the launch process of the server side
+ */
+ class CLaunchedProcess : public CBase
+ {
+public:
+ static TInt CompleteProcessLaunch();
+ static TInt CompleteProcessLaunch(TProcessStartParams& aParams);
+protected:
+ static TInt DoCompleteProcessLaunchL();
+ static TInt DoCompleteProcessLaunchL(TProcessStartParams& aParams);
+ };
+
+#endif // __LBSPROCESSLAUNCH_H__
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/internal/lbstestserver/inc/cprocesslaunch.h Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,49 @@
+// 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:
+// Definition of class used to launch a LBS processes (non-server)
+//
+//
+
+
+
+/**
+ @file
+ @internalTechnology
+*/
+
+#ifndef __LBSPROCESSLAUNCH_H__
+#define __LBSPROCESSLAUNCH_H__
+
+#include <e32base.h>
+#include "tprocessstartparams.h"
+
+/**
+@internalTechnology
+@released
+
+CBase based Class, presents the launch process of the server side
+ */
+ class CProcessLaunch : public CBase
+ {
+public:
+ static TInt CreateProcess();
+ static TInt CreateProcess(TProcessStartParams& aParams);
+ static TInt ProcessLaunch(TProcessStartParams& aParams);
+protected:
+ static TInt DoCreateProcessL();
+ static TInt DoCreateProcessL(TProcessStartParams& aParams);
+ static TInt DoProcessLaunch(TProcessStartParams& aParams);
+ };
+
+#endif // __LBSPROCESSLAUNCH_H__
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/internal/lbstestserver/inc/cquietus.h Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,70 @@
+// 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:
+//
+
+/*
+Quietus is Medieval Latin for discharged from an obligation, which comes form the Latin
+(he is) at rest. So its a synonym for death :). See teh references below.
+Which is exaclt what this object is all about - it starts the process that will kill any
+process based around a CActiveScheduler.
+
+from Dictionary.com
+
+qui·e·tus
+
+ 1. Something that serves to suppress, check, or eliminate.
+ 2. Release from life; death.
+ 3. A final discharge, as of a duty or debt.
+[Short for Middle English quietus (est), (he is) discharged (of an obligation),
+from Medieval Latin quitus (est), from Latin, (he is) at rest. See quiet.]
+
+from thesaurus.com
+Main Entry: death
+Part of Speech: noun
+Definition: end
+Synonyms: afterlife, annihilation, bereavement, casualty, cessation, curtains*, darkness, decease, demise, departure, destruction, dissolution, downfall, dying, end, ending, eradication, eternal rest, euthanasia, exit, expiration, extermination, extinction, fatality, finis*, finish, future home, grave, grim reaper*, heaven, loss, mortality, necrosis, obliteration, oblivion, paradise, parting, passing, passing over, quietus, release, repose, ruin, ruination, silence, sleep, termination, tomb, un
+Antonyms: being, birth, existence, life, living, nascency
+Source: Roget's New Millennium™ Thesaurus, First Edition (v 1.2.1)
+Copyright © 2006 by Lexico Publishing Group, LLC. All rights reserved.
+* = informal or slang
+
+*/
+
+#ifndef __LBSQUIETUS_H__
+#define __LBSQUIETUS_H__
+
+#include <e32base.h>
+
+/**
+@internalTechnology
+@released
+
+CActive object, starts the process to kill any
+process based around a CActiveScheduler.
+*/
+
+class CQuietus : public CActive
+ {
+public:
+ static CQuietus* NewL();
+ ~CQuietus();
+ void CoupDeGrace();
+private:
+ CQuietus(); // make this private.
+ // from CActive
+ void RunL();
+ void DoCancel();
+ };
+
+#endif // __LBSQUIETUS_H__
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/internal/lbstestserver/inc/csecureasbase.h Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,74 @@
+// 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:
+// Definition of class used to start a LBS server process
+//
+//
+
+
+
+/**
+ @file
+ @internalTechnology
+*/
+
+#ifndef __LBSSECUREASBASE_H__
+#define __LBSSECUREASBASE_H__
+
+#include <e32base.h>
+
+// forward classes
+class TServerStartParams;
+
+/**
+@internalTechnology
+@released
+
+ Interface to create server
+ */
+class MCreateServerImpl
+ {
+public:
+ virtual void CreateServerLC(TServerStartParams& aParams) = 0;
+ };
+
+/**
+@internalTechnology
+@released
+
+CActiveScheduler Class.
+ */
+class CSecureASBase : public CActiveScheduler
+ {
+public:
+ enum TSecureASBasePanic
+ {
+ ECreateServerLCNotOverridden = 0
+ };
+public:
+ CSecureASBase();
+ static TInt ServerLaunch(TServerStartParams& aParams);
+ static TInt ServerMain(TServerStartParams& aParams);
+protected:
+ static TInt RunServerL(TServerStartParams& aParams);
+ TInt CreateServer();
+
+ // create the derived server object and leave it on the cleanup stack
+ //virtual void CreateServerLC(TServerStartParams& aParams);
+ MCreateServerImpl* GetImplLC();
+ void Panic(const TSecureASBasePanic aPanic);
+ };
+
+
+
+#endif // __LBSSECUREASBASE_H__
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/internal/lbstestserver/inc/csecureprocessasbase.h Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,53 @@
+// 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:
+// Definition of class used to start a LBS non-server process
+//
+//
+
+
+
+/**
+ @file
+ @internalTechnology
+*/
+
+#ifndef __LBSSECUREPROCESSASBASE_H__
+#define __LBSSECUREPROCESSASBASE_H__
+
+#include <e32base.h>
+
+/**
+@internalTechnology
+@released
+
+CActiveScheduler Class.
+ */
+class CSecureProcessASBase : public CActiveScheduler
+ {
+public:
+ /** Secure process panic type */
+ enum TSecureProcessASBasePanic
+ {
+ ECreateRootObjectNotOverridden = 1,
+ EEntryPointNotOverridden = 2
+ };
+public:
+ // new bits for processes
+ virtual CBase* CreateRootObjectL();
+ virtual TInt EntryPointL(CBase* aObj);
+ virtual void Final();
+ void Panic(const TSecureProcessASBasePanic aPanic);
+ };
+
+#endif //__LBSSECUREPROCESSASBASE_H__
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/internal/lbstestserver/inc/csecureserverbase.h Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,100 @@
+// 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:
+// csesureserverbase.h
+// Definition of class used to encapsulate a LBS server
+// (for example, LbsLocServer.exe)
+//
+//
+
+
+
+/**
+ @file
+ @internalTechnology
+*/
+
+
+#ifndef __LBSSECURESERVERBASE_H__
+#define __LBSSECURESERVERBASE_H__
+
+#include <e32base.h>
+
+// forward classes
+class CShutdownTimer;
+
+/** default server shutdown delay */
+const TTimeIntervalMicroSeconds32 KDefaultShutdownDelay = 2*1000*1000;
+
+// NB this and the panic list should be pblisghed all + released...
+/** Liternal used as the panic catageory by the server framework */
+_LIT(KServerFrameworkPanic, "ServerFramework");
+enum TServerFrameWorkPanics
+ {
+ ESecureSubSessionBaseUnknownSubSessionType = 1 // the sever does not reognise the session type.
+ };
+
+/**
+@internalTechnology
+@released
+@see CShutdownTimer
+@see CPolicyServer
+
+CPolicy based class to provde security functionalities to the server base
+ */
+class CSecureServerBase : public CPolicyServer
+ {
+public:
+ /** Secure server base panic type */
+ enum ESecureServerBasePanic
+ {
+ EBaseConstructNotCalled = 0,
+ EBaseCreateNotCalled = 1
+ };
+public:
+ // creation - called from CPolicyServer
+ virtual CSession2* NewSessionL(const TVersion &aVersion, const RMessage2& aMessage) const;
+ // secondary creation - called by the implementaion of NewSessionL above
+ virtual CSession2* DoNewSessionL(const TVersion &aVersion, const RMessage2& aMessage) const = 0;
+ virtual TVersion GetServerVersion() const = 0;
+ // destruction
+ virtual ~CSecureServerBase();
+public:
+ void IncSession();
+ void DecSession();
+
+ TInt GetSessionCount() const;
+ TTimeIntervalMicroSeconds32 GetShutdownDelay() const;
+ void SetShutdownDelay(const TTimeIntervalMicroSeconds32 aDelay);
+ // must be public to the sessions can so this is required.
+ void PanicServer(TInt aPanicCode) const;
+protected:
+ CSecureServerBase(TInt aPriority, const TPolicy& aSecurityPolicy);
+ void BaseConstructL(TBool aShutdownTimerRequired = ETrue);
+protected:
+ // property
+ // protected in case a derived class ever has to overload
+ /** number of sessions to the server */
+ TInt iSessionCount;
+ /** shut down timer for the server */
+ CShutdownTimer* iShutdownTimer;
+ /** shut down time delay */
+ TTimeIntervalMicroSeconds32 iShutdownDelay;
+private:
+ // property - really do mean private here
+ /** indicate whether the base construct has been called */
+ TBool iBaseConstructCalled;
+ };
+
+
+#endif // __LBSSECURESERVERBASE_H__
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/internal/lbstestserver/inc/csecuresessionbase.h Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,54 @@
+// 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:
+// csesuresessionbase.h
+// CSession2 based secure session to the server
+//
+//
+
+
+
+/**
+ @file
+ @internalTechnology
+*/
+
+#ifndef __LBSSECURESESSIONBASE_H__
+#define __LBSSECURESESSIONBASE_H__
+
+#include <e32base.h>
+
+/**
+@internalTechnology
+@released
+
+CSession2 based secure session to the server
+ */
+class CSecureSessionBase : public CSession2
+ {
+public:
+ CSecureSessionBase();
+ virtual ~CSecureSessionBase();
+ virtual void CreateL();
+ virtual void Disconnect(const RMessage2& aMessage);
+ virtual void ServiceL(const RMessage2& aMessage);
+ virtual void ServiceError(const RMessage2& aMessage, TInt aError);
+protected:
+ // Helpers
+ virtual void DispatchL(const RMessage2& aMessage) = 0;
+ virtual void DispatchError(const RMessage2& aMessage, const TInt aError) = 0; // force people to think about errors!
+ virtual void ConstructSubSessionL();
+ virtual void DestroySubSession();
+ };
+
+#endif // __LBSSECURESESSIONBASE_H__
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/internal/lbstestserver/inc/csecuresessionsubsessionbase.h Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,71 @@
+// 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:
+// Definition of secure subsession base class
+//
+//
+
+
+
+/**
+ @file
+ @internalTechnology
+*/
+
+#ifndef __LBSSECURESESSIONSUBSESSIONBASE_H__
+#define __LBSSECURESESSIONSUBSESSIONBASE_H__
+
+#include <e32base.h> // for CObject etc.
+#include "csecuresessionbase.h"
+#include "csecureserverbase.h"
+
+
+/**
+@internalTechnology
+@released
+
+Subsession base class
+ */
+class CSecureSessionSubSessionBase : public CSecureSessionBase
+ {
+public:
+ CSecureSessionSubSessionBase();
+ virtual ~CSecureSessionSubSessionBase();
+ virtual void CreateL();
+ virtual void CreateSubSessionL(const RMessage2& aMessage);
+ virtual void DestroySubSession(const RMessage2& aMessage);
+protected:
+ virtual void DispatchMessageL(const RMessage2& aMesssage);
+ const CSecureServerBase* Server() const;
+ // Helpers
+ virtual void DispatchL(const RMessage2& aMessage);
+ virtual void DispatchError(const RMessage2& aMessage, const TInt aError); // force people to think about errors!
+ virtual void ServiceMessageL(const RMessage2& aMessage) = 0;
+ virtual void ServiceMessageError(const RMessage2& aMessage, const TInt aError) = 0;
+protected:
+ // property
+ /** the array to store subsession object handles */
+ CObjectIx* iObjectIx;
+ /** the array container to store subsessions */
+ CObjectConIx* iContainerIx;
+ /** array to store subsessions */
+ CObjectCon* iObjectCon;
+private:
+ // property - really do mean private here
+ /** indicate whether the base construct has been called */
+ TBool iBaseCreateCalled;
+ };
+
+
+
+#endif // __LBSSECURESESSIONSUBSESSIONBASE_H__
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/internal/lbstestserver/inc/cserverlaunch.h Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,42 @@
+// 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:
+// Definition of class used to launch a LBS server
+//
+//
+
+
+
+/**
+ @file
+ @internalTechnology
+*/
+
+
+#ifndef __LBSSERVERLAUNCH_H__
+#define __LBSSERVERLAUNCH_H__
+
+#include <e32base.h>
+
+// forward classes
+class TServerStartParams;
+
+class CServerLaunch : public CBase
+ {
+public:
+ static TInt ServerLaunch(TServerStartParams& aParams);
+protected:
+ static TInt CreateServerProcess(TServerStartParams& aParams);
+ };
+
+#endif // __LBSSERVERLAUNCH_H__
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/internal/lbstestserver/inc/cshutdowntimer.h Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,49 @@
+// 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:
+// Definition of class used to shut down a server after a specified time
+//
+//
+
+
+
+/**
+ @file
+ @internalTechnology
+*/
+
+#ifndef __LBSSHUTDOWNTIMER_H__
+#define __LBSSHUTDOWNTIMER_H__
+
+#include <e32base.h>
+
+/**
+@internalTechnology
+@released
+
+ CTimer base class, it is used to shut down the server in specified time span
+ */
+class CShutdownTimer : public CTimer
+ {
+public:
+ CShutdownTimer();
+ ~CShutdownTimer();
+ void ConstructL();
+ void Start(const TTimeIntervalMicroSeconds32 aDelay);
+ void Stop();
+protected:
+ // from CActive
+ void RunL();
+ };
+
+#endif // __LBSSHUTDOWNTIMER_H__
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/internal/lbstestserver/inc/csubsessionbase.h Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,124 @@
+// 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:
+// Definition of Subsession base object
+//
+//
+
+
+
+/**
+ @file
+ @internalTechnology
+*/
+
+#ifndef __LBSSUBSESSIONBASE_H__
+#define __LBSSUBSESSIONBASE_H__
+
+#include <e32base.h>
+
+// forward classes
+class CSecureServerBase;
+
+/**
+@internalTechnology
+@released
+
+Interface for release resource
+ */
+class MRelease
+ {
+public:
+ virtual void VirtualRelease() = 0; // THIS MUST delete any implementation!
+ };
+
+/**
+@internalTechnology
+
+MRelease interface function pointer
+ */
+typedef void (MRelease::* TReleaseFunc)();
+
+
+/**
+@internalTechnology
+@released
+
+static class for push the resource needed to be released to stack
+ */
+class CleanupVirtualRelease
+ {
+public:
+ inline static void PushL(MRelease& aRef);
+private:
+ static void Release(TAny *aPtr);
+ };
+
+void CleanupVirtualReleasePushL(MRelease& aRef);
+
+
+/**
+@internalTechnology
+@released
+@see MRelease
+
+/**
+@internalTechnology
+@released
+@see MRelease
+
+MRelease based Interface, interface for subsession
+ */
+class MSubSessionImpl : public MRelease
+ {
+public:
+ virtual void DispatchL(const RMessage2& aMessage) = 0;
+ virtual void DispatchError(const RMessage2& aMessage, TInt aError) = 0;
+ virtual void CreateSubSessionL(const RMessage2& aMessage, const CSecureServerBase* aServer) = 0;
+ virtual void CloseSubSession() = 0;
+ };
+
+/**
+@internalTechnology
+@released
+@see MSubSessionImpl
+
+ Subsession base object
+ */
+class CSubSessionBase : public CObject
+ {
+public:
+ /** Panic type for subsession objects */
+ enum TSubSessionBasePanic
+ {
+ EDispatchLNotOverriden = 1,
+ EDispatchErrorNotOverriden = 2,
+ ECreateSubSessionLNotOverriden = 3,
+ ECloseSubSessionNotOverriden = 4
+ };
+public:
+ CSubSessionBase();
+ virtual ~CSubSessionBase();
+ MSubSessionImpl* GetImplL(const RMessage2& aMessage);
+ void SetImpl(MSubSessionImpl* aImpl);
+ MSubSessionImpl* Impl();
+protected:
+ void Panic(const TSubSessionBasePanic aPanic);
+protected:
+ // property - later derived class may wish to acess so protected, not private
+ /** Generic interface pointer to subsession implemetations */
+ MSubSessionImpl* iImpl;
+ };
+
+
+#endif // __LBSSUBSESSIONBASE_H__
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/internal/lbstestserver/inc/lbsprocesssupervisor.h Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,126 @@
+// 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:
+// lbsrootapi.h
+//
+//
+
+
+
+/**
+ @file
+ @internalTechnology
+ @released
+*/
+
+#ifndef __LBS_PROCESSSUPERVISOR_H__
+#define __LBS_PROCESSSUPERVISOR_H__
+
+#include <e32base.h>
+#include <e32def.h>
+#include <e32cmn.h>
+#include <e32std.h>
+#include <e32property.h>
+#include "lbsprocessuiddefs.h"
+
+/**
+ * Class which allows processes to register to be notified for closedown,
+ * and to confirm closedown when it is completed.
+ */
+class RLbsProcessSupervisor
+ {
+public:
+ /**
+ * Values for closedown request property which indicate whether the
+ * process is to close itself down or reset itself.
+ */
+ enum TProcessSignal
+ {
+ EProcessSignalUnknown = 0,
+ EProcessCloseDown,
+ EProcessReset
+ };
+
+public:
+ IMPORT_C static void InitializeL();
+ IMPORT_C static void ShutDownL();
+
+ IMPORT_C RLbsProcessSupervisor();
+ IMPORT_C void OpenL(TUid aModuleId);
+ IMPORT_C void Close();
+
+ IMPORT_C void CloseDownProcess();
+ IMPORT_C void ResetProcess();
+
+ void NotifyCloseDownRequest(TRequestStatus& aStatus);
+ IMPORT_C void CancelNotifyCloseDownRequest();
+
+ TInt ProcessSignal();
+
+private:
+ RProperty iRequestCloseDown;
+ TUid iModuleId;
+ };
+
+/**
+ * Mixin class defining a function implemented by LBS processes/servers started
+ * by LBS Root and which is called when the process/server is to close itself
+ * down
+ */
+class MLbsProcessCloseDown
+ {
+public:
+ virtual void OnProcessCloseDown() = 0;
+ };
+
+/**
+ * Mixin class defining a function implemented by LBS processes/servers started
+ * by LBS Root and which is called when the process/server is to 'reset' itself
+ * (e.g. clear internal cache, state variable). This is expected mainly to be
+ * used for test purposes.
+ */
+class MLbsProcessReset
+ {
+public:
+ virtual void OnProcessReset() = 0;
+ };
+
+
+class CLbsCloseDownRequestDetector : public CActive
+ {
+public:
+ // Not all process need to implement a reset function, so allow a default
+ // value of NULL for the reset observer.
+ IMPORT_C static CLbsCloseDownRequestDetector* NewL(
+ MLbsProcessCloseDown* aCloseDownObserver,
+ TUid aProcessUid,
+ MLbsProcessReset* aResetObserver = NULL);
+ ~CLbsCloseDownRequestDetector();
+
+protected:
+ CLbsCloseDownRequestDetector(MLbsProcessCloseDown* aCloseDown,
+ MLbsProcessReset* aResetObserver);
+ void ConstructL(TUid aProcessUid);
+
+protected:
+ //From CActive
+ virtual void RunL();
+ virtual void DoCancel();
+
+private:
+ RLbsProcessSupervisor iLbsSupervisor;
+ MLbsProcessCloseDown* iCloseDownObserver;
+ MLbsProcessReset* iResetObserver;
+ };
+
+#endif //__LBS_PROCESSSUPERVISOR_H__
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/internal/lbstestserver/inc/lbspropertykeydefs.h Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,102 @@
+// 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
+ @internalTechnology
+ @released
+*/
+
+#ifndef LBSPROPERTYKEYDEFS_H
+#define LBSPROPERTYKEYDEFS_H
+
+#include <e32def.h>
+
+
+
+
+//This header splits up the key space for the process that defines the LBS P&S properties.
+//It then goes on to map ModuleId-Property type pairs to individual key vaules.
+
+
+//We offset from 0 - this is to make debugging easier (0 means a lot of things, 1000 is a better clue).
+//Also, several places in the implementation use the fact that 0 is NEVER a valid key value.
+
+const TUint KLbsPowerModeAdviceKeyBase = 0x00001000; //Base value for RLbsManagerPowerModeAdvice keys
+const TUint KLbsModuleInfoKeyBase = 0x01001000; //Base value for LbsModuleInfo keys
+const TUint KLbsModuleStatusKayBase = 0x02001000; //Base value for RLbsModuleStatus keys
+const TUint KLbsPositionUpdatesKeyBase = 0x03001000; //Base value for RLbsPositionUpdates keys
+const TUint KLbsGpsMeasurementUpdatesKeyBase = 0x03001100; //Base value for RLbsGpsMeasurementUpdates keys
+const TUint KLbsPositionUpdateRequestsKeyBase = 0x04001000; //Base value for RLbsPositionUpdateRequests keys
+const TUint KLbsSystemModuleEventKeyBase = 0x05001000; //Base value for RLbsSystemModuleEvent keys
+
+// The following section lists the keys used by lbsnetinternalapi
+
+/* Key value used to publish message data */
+const TUint KNetGatewayMessageKey = 0x06001000;
+
+/* Key value used to publish the 'message read' acknowledgement */
+const TUint KNetGatewayMessageReadAckKey = 0x06001010;
+
+/* Key value used to publish message data */
+const TUint KNetRequestMessageKey = 0x06001020;
+
+/* Key value used to publish the 'message read' acknowledgement */
+const TUint KNetRequestMessageReadAckKey = 0x06001030;
+
+/* Key value used to publish message data */
+const TUint KNetworkLocationRequestMessageKey = 0x06001040;
+
+/* Key value used to publish message data */
+const TUint KNetworkLocationResponseMessageKey = 0x06001060;
+
+/* Key value used to publish network reference position data */
+const TUint KNetworkReferencePositionUpdateKey = 0x06001080;
+
+/* Key value used to publish network final position data */
+const TUint KNetworkFinalPositionUpdateKey = 0x06001088;
+
+/* Key value used to publish messages from AGPS Manager to Network Gateway
+ and the corresponding acknowledgement */
+const TUint KNetAGPS2NGMessageKey = 0x06001090;
+const TUint KNetAGPS2NGMessageReadAckKey = 0x060010a0;
+
+/* Key value used to publish messages from the Network Gateway to the AGPS Manager
+ and the corresponding acknowledgement */
+const TUint KNetNG2AGPSMessageKey = 0x060010b0;
+const TUint KNetNG2AGPSMessageReadAckKey = 0x060010c0;
+
+/* Key value used to publish network registration status */
+const TUint KNetworkRegistrationStatusKey = 0x060010d0;
+
+/* Key value used to support LS to NRH communication for client/network
+ * symmetry requirement*/
+const TUint KLSToNRHKey = 0x060010e0;
+
+/* Key value used to support NRH to LScommunication for client/network
+ * symmetry requirement */
+const TUint KNRHToLSKey = 0x060010f0;
+
+// End of section keys used by lbsnetinternalapi
+
+
+const TUint KLbsRootProcessKeyBase = 0x07001000; //Base value for LBS Root Api keys
+const TUint KLbsAssistDataApiBase = 0x08001000; //Base value for Assistance Data Api keys
+const TUint KLbsQualityProfileKeyBase = 0x09001000; //Base value for Quality Profile keys
+const TUint KLbsSuplPushAPIBase = 0x0A001000; //Base value for SUPL Push API keys
+
+#endif //LBSPROPERTYKEYDEFS_H
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/internal/lbstestserver/inc/lbsrootapi.h Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,54 @@
+// 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
+ @internalTechnology
+ @released
+*/
+
+#ifndef __LBSROOTAPI_H__
+#define __LBSROOTAPI_H__
+
+#include "lbspropertykeydefs.h"
+#include "lbsprocesssupervisor.h"
+#include "lbssystemcontroller.h"
+#include "lbsprocessuiddefs.h"
+
+enum
+ {
+ KLbsStartupRequestKey = KLbsRootProcessKeyBase,
+ KLbsStartupCompleteKey,
+ KLbsCloseDownRequestKey,
+ KLbsCloseDownCompleteKey,
+ /**
+ * Make sure this is the last one, as it's used as the base for
+ * the definition of n * 2 properties
+ */
+ KLbsCloseDownBaseKey
+ };
+
+_LIT(KLbsRootProcessName, "lbsroot.exe");
+
+// Full path of lbsroot executable
+_LIT(KLbsRootFileName, "\\sys\\bin\\lbsroot.exe");
+
+// Need a wildcard when checking to see whether a process is open, to cope
+// with system-derived accretions e.g. lbsroot.exe[0001]
+_LIT(KLbsRootProcessSearchString, "lbsroot.exe*");
+
+#endif //__LBSROOTAPI_H__
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/internal/lbstestserver/inc/lbssystemcontroller.h Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,169 @@
+// 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
+ @internalTechnology
+ @released
+*/
+#ifndef __LBS_SYSTEMSTARTER_H__
+#define __LBS_SYSTEMSTARTER_H__
+
+#include <e32base.h>
+#include <e32def.h>
+#include <e32cmn.h>
+#include <e32std.h>
+#include <e32property.h>
+#include "lbstimer.h"
+
+class CLbsSystemStarter;
+
+
+const TInt KDefaultStartupTimeout = 30;
+
+// Responses to a request to start the LBS system
+enum
+ {
+ ELbsStartupSuccess,
+ ELbsStartupFail,
+ ELbsStartupRootNotFound
+ };
+// Responses to a request to close down the LBS system
+enum
+ {
+ ELbsCloseDownRejected,
+ ELbsCloseDownInProgress,
+ ELbsCloseDownComplete,
+ ELbsCloseDownRootNotFound
+ };
+
+class RLbsSystemController
+ {
+public:
+enum
+ {
+ ELbsCloseDown = 1,
+ ELbsCloseDownAndConfirm,
+ ELbsResetOnly, // Just tell the process to clear the cache etc. rather than close down completely
+ ELbsTotalCloseDown // Close the LBS Root process as well.
+ };
+public:
+ IMPORT_C static void InitializeL();
+ IMPORT_C static void ShutDownL();
+
+ IMPORT_C RLbsSystemController();
+ IMPORT_C void OpenL(TUid aModuleId);
+ IMPORT_C void Close();
+
+ IMPORT_C void NotifySystemStartRequest(TRequestStatus& aStatus);
+ IMPORT_C TInt RequestSystemStartup();
+ IMPORT_C void SystemStartComplete(TInt aStartupResult);
+ IMPORT_C void NotifySystemCloseDownRequest(TRequestStatus& aStatus);
+ IMPORT_C TInt RequestSystemCloseDown();
+ IMPORT_C TInt RequestSystemCloseDown(TBool aNoWaitForResponse);
+ IMPORT_C void SystemCloseDownResponse(TInt aResponse);
+ IMPORT_C TInt GetCloseDownType();
+ IMPORT_C void RequestSystemReset();
+ IMPORT_C TInt RequestCompleteCloseDown();
+
+ TInt GetStartupData(TDes8& aData);
+
+private:
+ TBool CheckLbsRootProcessIsUp();
+
+private:
+ RProperty iLbsStartupRequest;
+ RProperty iLbsStartupComplete;
+ RProperty iLbsCloseDownRequest;
+ RProperty iLbsCloseDownComplete;
+ };
+
+/*
+ *
+ * Observer used to pass system startup requests to the LBS Root process
+ */
+class MLbsSystemStartupObserver
+ {
+public:
+ virtual void OnStartupRequest() = 0;
+ };
+
+/*
+ * Active object which monitors the property which signals
+ * when startup is required.
+ */
+class CLbsSystemStartupRequestHandler : public CActive
+ {
+public:
+ IMPORT_C static CLbsSystemStartupRequestHandler* NewL(
+ MLbsSystemStartupObserver* aObserver,
+ TUid aProcessUid);
+ IMPORT_C ~CLbsSystemStartupRequestHandler();
+ IMPORT_C void ConfirmStartup(TInt aStartupStatus);
+
+protected:
+ CLbsSystemStartupRequestHandler(MLbsSystemStartupObserver* aObserver);
+ void ConstructL(TUid aProcessUid);
+
+protected: // From CActive
+ void RunL();
+ void DoCancel();
+
+private:
+ MLbsSystemStartupObserver* iObserver;
+ RLbsSystemController iLbsSystemController;
+ };
+
+/*
+ *
+ * Observer used to pass system startup requests to the LBS Root process
+ */
+class MLbsSystemCloseDownObserver
+ {
+public:
+ virtual void OnCloseDownRequest(TBool aConfirmCloseDownComplete) = 0;
+ virtual void OnResetRequest() = 0;
+ virtual void OnCompleteCloseDownRequest() = 0;
+ };
+
+/*
+ * Active object which monitors the property which signals
+ * when closedown is required.
+ */
+class CLbsSystemCloseDownRequestHandler : public CActive
+ {
+public:
+ IMPORT_C static CLbsSystemCloseDownRequestHandler* NewL(
+ MLbsSystemCloseDownObserver* aObserver,
+ TUid aProcessUid);
+ IMPORT_C ~CLbsSystemCloseDownRequestHandler();
+ IMPORT_C void ConfirmCloseDown(TInt aResponse);
+
+protected:
+ CLbsSystemCloseDownRequestHandler(MLbsSystemCloseDownObserver* aObserver);
+ void ConstructL(TUid aProcessUid);
+
+protected: // From CActive
+ void RunL();
+ void DoCancel();
+
+private:
+ MLbsSystemCloseDownObserver* iObserver;
+ RLbsSystemController iLbsSystemController;
+ };
+
+#endif //__LBS_SYSTEMSTARTER_H__
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/internal/lbstestserver/inc/lbstestclient.h Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,55 @@
+// 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:
+// Client-side code for the Lbs test server
+//
+//
+
+
+
+/**
+ @file
+ @internalTechnology
+ @test
+*/
+
+#ifndef LBSERVERCLIENT_H__
+#define LBSERVERCLIENT_H__
+
+
+class CLbsTestServerImpl;
+
+/** Class used to access the LBS test server.
+*/
+NONSHARABLE_CLASS(CLbsTestServer) : public CBase
+ {
+public:
+ IMPORT_C static CLbsTestServer* NewL();
+ ~CLbsTestServer();
+
+public:
+ IMPORT_C TInt StopLbsSystem();
+ IMPORT_C TInt StartLbsSystem();
+ IMPORT_C TInt ResetLbsSystem();
+
+protected:
+ CLbsTestServer();
+ void ConstructL();
+
+private:
+ CLbsTestServerImpl* iImpl;
+
+ TUint8 iReserved[12]; // reserved for future use (to preserve BC).
+ };
+
+#endif // LBSERVERCLIENT_H__
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/internal/lbstestserver/inc/lbstestclientimpl.h Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,56 @@
+// 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:
+// Header for the implementation of the client-side code
+// for the Lbs test server.
+//
+//
+
+#include "rsecuresessionbase.h"
+#include "tserverstartparams.h"
+
+
+/* Session class that derives from the server framework session.
+*/
+NONSHARABLE_CLASS(RLbsTestSession) : public RSecureSessionBase
+ {
+public:
+ TVersion Version();
+
+ TInt StopLbsSystem();
+ TInt StartLbsSystem();
+ TInt ResetLbsSystem();
+ };
+
+/* Implementation of the client code.
+*/
+NONSHARABLE_CLASS(CLbsTestServerImpl) : public CBase
+ {
+public:
+ static CLbsTestServerImpl* NewL();
+ ~CLbsTestServerImpl();
+
+ TInt StopLbsSystem();
+ TInt StartLbsSystem();
+ TInt ResetLbsSystem();
+
+protected:
+ CLbsTestServerImpl();
+
+private:
+ void ConstructL();
+
+private:
+ RLbsTestSession iSession;
+ TServerStartParams iParams; // MUST live for as long as the client
+ };
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/internal/lbstestserver/inc/lbstestmessageenums.h Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,46 @@
+// 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:
+// The message enums/opcodes shared between the client and the server sides
+//
+//
+
+#ifndef LBSTESTMESSAGEENUMS_H__
+#define LBSTESTMESSAGEENUMS_H__
+
+#include "lbsmessageenums.h"
+
+enum ELbsTestClientServerMessageEnums
+ {
+ //
+ // If you need to add any more message Ids, add them between
+ // EFirstLbsTestServerMessage and ELastLbsTestServerMessage.
+ // (Otherwise the security policy in lbstestserver.cpp may not
+ // allow the new message.)
+ //
+
+ // Start of lbstest specific messages after the last of the
+ // basic server framework messages, ELastSessionMessageId,
+ // which is defined as KMaxInt32/2 aka 16383 (0x3FFFFFFF)
+ // in lbsmessageenums.h
+ EFirstLbsTestServerMessage = 0x40000000,
+
+ ELbsTestStopLbsSystem = EFirstLbsTestServerMessage,
+ ELbsTestStartLbsSystem = 0x40000001,
+ ELbsTestResetLbsSystem = 0x40000002,
+
+ ELastLbsTestServerMessage,
+
+ };
+
+#endif //LBSTESTMESSAGEENUMS_H__
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/internal/lbstestserver/inc/lbstestopensessionparams.h Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,62 @@
+// 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:
+// opensessionparams.h
+//
+//
+
+#ifndef __OPENSESSIONPARAMS_H__
+#define __OPENSESSIONPARAMS_H__
+
+#include <e32std.h>
+#include <e32base.h>
+
+// class used to pass data about the sub session type to/from the client/server
+class TSubSessionType
+ {
+public:
+ enum TSubSessionTypeEnum
+ {
+ EExInvalidSubsession = 0,
+ EExTimeSubSession = 1,
+ EExServerNameSubSession = 2
+ };
+public:
+ TSubSessionType()
+ {
+ };
+ TSubSessionType(const TSubSessionTypeEnum aSubSessionType) : iSubSessionType(aSubSessionType)
+ {
+ };
+ const TSubSessionTypeEnum GetSubSessionType() const
+ {
+ return iSubSessionType;
+ };
+protected:
+ TSubSessionTypeEnum iSubSessionType;
+ };
+
+
+// this is a sample calss, to to show that you can pass
+// blocks of data around
+class TTimeOpenSessionParams
+ {
+public:
+ TInt iDummyNumberParam;
+ TBuf<32> iDummyBufParam;
+ };
+
+// this is another sample to prove that you don't need a class
+typedef TInt TServerNameOpenSessionParams;
+
+#endif // __ OPENSESSIONPARAMS_H__
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/internal/lbstestserver/inc/lbstestserver.h Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,50 @@
+// 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:
+// serverside.h
+// server side exmaple of how to use the abstract server framework
+//
+//
+
+#ifndef LBSTESTSERVER_H__
+#define LBSTESTSERVER_H__
+
+#include "tserverstartparams.h"
+#include "csecureasbase.h"
+#include "csecureserverbase.h"
+
+
+/*
+*/
+class CLbsTestServerImpl : public CBase, public MCreateServerImpl
+ {
+public:
+ virtual void CreateServerLC(TServerStartParams& aParams);
+ };
+
+/* Main server class
+*/
+class CLbsTestServer : public CSecureServerBase
+ {
+public:
+ CLbsTestServer(TInt aPriority, const CPolicyServer::TPolicy& aSecurityPolicy);
+ ~CLbsTestServer();
+ void ConstructL(const TDesC& aServerName);
+ CSession2* DoNewSessionL(const TVersion &aVersion, const RMessage2& aMessage) const;
+ TVersion GetServerVersion() const;
+protected:
+ // property
+ TVersion iVersion;
+ };
+
+#endif //LBSTESTSERVER_H__
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/internal/lbstestserver/inc/lbstestserverdata.h Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,36 @@
+// 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:
+// data which identifies the server used to communicate with the LBS
+// Network Request Handler
+//
+//
+
+#ifndef LBSTESTSERVERDATA_H__
+#define LBSTESTSERVERDATA_H__
+
+// Define the file and process of the Lbs test server
+_LIT(KTestServerFileName, "\\sys\\bin\\lbstestserver.exe");
+_LIT(KTestServerName, "lbstestserver.exe");
+
+// Current version number of the Lbs test server.
+const TInt8 KTestServerMajorVersionNumber = 1;
+const TInt8 KTestServerMinorVersionNumber = 0;
+const TInt16 KTestServerBuildVersionNumber = 0;
+
+// Uid3 of the Lbs test server
+const TUint KLbsTestServerUidValue = 0x10282281;
+const TUid KLbsTestServerUid = {KLbsTestServerUidValue};
+
+
+#endif // LBSTESTSERVERDATA_H__
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/internal/lbstestserver/inc/lbstestsession.h Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,47 @@
+// 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:
+// serverside.h
+// server side exmaple of how to use the abstract server framework
+//
+//
+
+#ifndef LBSTESTSESSION_H__
+#define LBSTESTSESSION_H__
+
+#include "csecuresessionbase.h"
+#include "csecuresessionsubsessionbase.h"
+#include "csubsessionbase.h"
+#include "messageutils.h"
+
+
+/* Session class that implements the actual functions.
+*/
+class CLbsTestSession : public CSecureSessionBase
+ {
+public:
+ void CreateL();
+
+protected:
+ void DispatchL(const RMessage2& aMessage);
+ void DispatchError(const RMessage2& aMessage, const TInt aError);
+
+private:
+ void StopLbsSystem(const RMessage2& aMessage);
+ void StartLbsSystem(const RMessage2& aMessage);
+ void ResetLbsSystem(const RMessage2& aMessage);
+
+ TBool FindRootProcess(RProcess& aProcess);
+ };
+
+#endif //LBSTESTSESSION_H__
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/internal/lbstestserver/inc/messageutils.h Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,46 @@
+// 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:
+// Definition of utilty class used to write ans read RMessage2 and send panic message
+//
+//
+
+
+
+/**
+ @file
+ @internalTechnology
+*/
+
+#ifndef __LBSMESSAGEUTILS_H__
+#define __LBSMESSAGEUTILS_H__
+
+#include <e32base.h>
+
+/**
+@internalTechnology
+@released
+
+Message object handling class, include message writing, reading and send panic message to client.
+ */
+class MessageUtils
+ {
+public:
+ static TInt Write(const RMessage2& aMessage, const TInt aIndex, const TDesC16& aBuf);
+ static TInt Write(const RMessage2& aMessage, const TInt aIndex, const TDesC8& aBuf);
+ static TInt Read(const RMessage2& aMessage, const TInt aIndex, TDes16& aBuf);
+ static TInt Read(const RMessage2& aMessage, const TInt aIdnex, TDes8& aBuf);
+ static void PanicClient(const RMessage2&, const TDesC& aCat, const TInt aReason);
+ };
+
+#endif // __LBSMESSAGEUTILS_H__
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/internal/lbstestserver/inc/rsecuresessionbase.h Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,64 @@
+// 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:
+// rsecureasbase.h
+// Definition of base class for secure sessions
+//
+//
+
+
+
+/**
+ @file
+ @internalTechnology
+*/
+
+
+#ifndef __LBSSECURESESSIONBASE_H__
+#define __LBSSECURESESSIONBASE_H__
+
+#include <e32std.h>
+#include "tserverstartparams.h"
+#include "lbsmessageenums.h"
+
+NONSHARABLE_CLASS(RSecureSessionBase) : public RSessionBase
+ {
+public:
+ TInt Connect(TServerStartParams& aParams);
+ virtual void Close();
+ virtual TVersion Version() = 0;
+ virtual TInt StartServer(TServerStartParams& aParams);
+ };
+
+NONSHARABLE_CLASS(RSecureSubSessionBase) : public RSubSessionBase
+ {
+public:
+ // template code MUST be inlined
+ template <class S, class T>
+ inline TInt Open(RSecureSessionBase& aServer, S& aSubSessionType, T& aOpenData);
+ //TInt Open(RSecureSessionBase& aServer, const TInt& aOpenData);
+ virtual void Close();
+ };
+
+template<class S, class T>
+TInt RSecureSubSessionBase::Open(RSecureSessionBase& aServer, S& aSubSessionType, T& aOpenData)
+ {
+ TPckg<S> subSessPckg(aSubSessionType);
+ TPckg<T> openPckg(aOpenData);
+ //TPckg<TInt> openPckg(aOpenData);
+ TIpcArgs args(&subSessPckg, &openPckg);
+ return CreateSubSession(aServer, ESecureSubSessionBaseOpen, args);
+ }
+
+
+#endif // __LBSSECURESESSSIONBASE_H__
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/internal/lbstestserver/inc/tprocessstartparams.h Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,63 @@
+// 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:
+// Definition of class used to define process start parameters
+//
+//
+
+
+
+/**
+ @file
+ @internalTechnology
+*/
+
+
+#ifndef __LBSPROCESSSTARTPARAMS_H__
+#define __LBSPROCESSSTARTPARAMS_H__
+
+#include <e32std.h>
+#include <e32base.h>
+#include "tstartparamsbase.h"
+
+/**
+@internalTechnology
+@released
+
+Parameters for starting the server process
+ */
+NONSHARABLE_CLASS(TProcessStartParams) : public TStartParamsBase
+ {
+public:
+ TProcessStartParams();
+ void SetProcessFileName(const TDesC& aExeName);
+ void SetProcessName(const TDesC& aProcessName);
+ void SetRendezvousRequired(TBool aRendezvousRequired);
+ TBool GetRendezvousRequired() const;
+ const TDesC& GetProcessFileName() const;
+ const TDesC& GetProcessName() const;
+ TPtrC GetAsCommandLine() const;
+private:
+ // from TStartParamsBase
+ void SetType();
+private:
+ // property and really do mean private here
+ /** whether or not the process Rendezvous is required */
+ TBool iRendezvousRequired;
+ /** server process file name */
+ TFileName iProcessFileName;
+ /** server process name */
+ TFileName iProcessName;
+ };
+
+#endif // __LBSPROCESSSTARTPARAMS_H__
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/internal/lbstestserver/inc/tserverstartparams.h Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,69 @@
+// 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:
+// Definition of class used to define server start parameters
+//
+//
+
+
+
+/**
+ @file
+ @internalTechnology
+*/
+
+#ifndef __SERVERSTARTPARAMS_H__
+#define __SERVERSTARTPARAMS_H__
+
+#include <e32std.h>
+#include <e32base.h>
+#include "tstartparamsbase.h"
+
+const TInt KServerFrameworkDefaultMessageSlots = 4;
+
+
+/**
+@internalTechnology
+@released
+
+Parameters for starting server
+ */
+NONSHARABLE_CLASS(TServerStartParams) : public TStartParamsBase
+ {
+public:
+ TServerStartParams();
+ void SetServerFileName(const TDesC& aExeName);
+ void SetServerName(const TDesC& aServerName);
+ void SetNumberOfServerSlots(TInt aSlots);
+ void SetServerUids(TUid aUid1, TUid aUid2, TUid aUid3);
+ const TDesC& GetServerFileName();
+ const TDesC& GetServerName();
+ TInt GetNumberOfServerSlots();
+ TPtrC GetAsCommandLine() const;
+ TUidType& GetServerUids();
+private:
+ // from TStartParamsBase
+ void SetType();
+private:
+ // property and really do mean private here
+ /** Server file name */
+ TFileName iServerFileName;
+ /** Server name */
+ TFileName iServerName;
+ /** Number of slots in server */
+ TInt iNumberOfSlots;
+ /** a set of three unique identifiers (UIDs) identify the server */
+ TUidType iUids;
+ };
+
+#endif // __SERVERSTARTPARAMS_H__
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/internal/lbstestserver/inc/tstartparamsbase.h Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,51 @@
+// 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:
+// Definition of class used to define server start parameters
+//
+//
+
+
+
+/**
+ @file
+ @internalTechnology
+*/
+
+#ifndef __STARTPARAMSBASE_H__
+#define __STARTPARAMSBASE_H__
+
+#include <e32std.h>
+#include <e32base.h>
+
+
+const TUint KServerStartParamsTypeValue = 0x10282243;
+const TUid KServerStartParamsTypeUid = {KServerStartParamsTypeValue};
+
+const TUint KProcessStartParamsTypeValue = 10282242;
+const TUid KProcessStartParamsTypeUid = {KProcessStartParamsTypeValue};
+
+
+NONSHARABLE_CLASS(TStartParamsBase)
+ {
+public:
+ virtual ~TStartParamsBase();
+ const TUid GetType() const;
+protected:
+ void SetType(const TUid& aType);
+ virtual void SetType() = 0;
+private:
+ TUid iType;
+ };
+
+#endif // __STARTPARAMSBASE_H__
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/internal/lbstestserver/src/claunchedprocess.cpp Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,172 @@
+// 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:
+//
+
+#include "lbsmemlogger.h"
+#include "claunchedprocess.h"
+#include "csecureprocessasbase.h"
+
+
+/** Create instance of trap handler and cleanup stack
+called by the launched process!
+
+@return Symbian error code
+@internalTechnology
+@released
+ */
+ TInt CLaunchedProcess::CompleteProcessLaunch()
+ {
+ __UHEAP_MARK;
+ CTrapCleanup* cleanup=CTrapCleanup::New();
+ TInt r=KErrNoMemory;
+ if (cleanup)
+ {
+ TRAP(r,DoCompleteProcessLaunchL());
+ delete cleanup;
+ }
+ __UHEAP_MARKEND;
+ return r;
+
+ }
+
+
+/** Create the server process, create, install and run the active scheduler
+wait for scheduler to be stopped to return process
+
+@return Symbian error code
+@internalTechnology
+@released
+ */
+ TInt CLaunchedProcess::DoCompleteProcessLaunchL()
+ {
+ TInt r = KErrNone;
+ // create and install the active scheduler we need
+ CSecureProcessASBase* s=new(ELeave) CSecureProcessASBase();
+ CleanupStack::PushL(s);
+ CActiveScheduler::Install(s);
+
+ // Create the memory logger object for monitoring memory
+ LBSMEMLOG_BEGIN();
+
+ CBase* baseObj = s->CreateRootObjectL();
+
+ CleanupStack::PushL(baseObj);
+
+ r = s->EntryPointL(baseObj);
+
+ RProcess().Rendezvous(KErrNone);
+
+ // Ready to run
+ CActiveScheduler::Start();
+
+ //
+ // Cleanup the client
+ CleanupStack::PopAndDestroy(1);
+
+ // Cleanup the mem logger
+ LBSMEMLOG_END();
+
+ //
+ // do any _FINAL _ operations. If anything.. default does nothing
+ s->Final();
+ // Cleanup the scheduler
+ CleanupStack::PopAndDestroy(s);
+ return r;
+ }
+
+
+/** Create instance of trap cleanup stack and the process by specified parameters
+
+@param aParams A reference to TProcessStartParams object
+@return Symbian error code
+@see TProcessStartParams
+@internalTechnology
+@released
+ */
+ TInt CLaunchedProcess::CompleteProcessLaunch(TProcessStartParams& aParams)
+ {
+ __UHEAP_MARK;
+ CTrapCleanup* cleanup=CTrapCleanup::New();
+ TInt r=KErrNoMemory;
+ if (cleanup)
+ {
+ TRAP(r,DoCompleteProcessLaunchL(aParams));
+ delete cleanup;
+ }
+ __UHEAP_MARKEND;
+ return r;
+
+ }
+
+/** Create the server process by specified parameters, create, install and run the active scheduler
+wait for scheduler to be stopped to return process
+
+@param aParams A reference to TProcessStartParams object
+@return Symbian error code
+@see TProcessStartParams
+@internalTechnology
+@released
+ */
+ TInt CLaunchedProcess::DoCompleteProcessLaunchL(TProcessStartParams& aParams)
+ {
+ // first check that we are about to create the right type of server
+ if(aParams.GetType() != KProcessStartParamsTypeUid)
+ {
+ // this is not a process type that we understand. Has the caller
+ // pass TServerStartParams by mistake?
+ User::Leave(KErrArgument); // this aborts the server startup
+ }
+
+ // rename our main thread
+ User::LeaveIfError(User::RenameThread(aParams.GetProcessName()));
+
+ TInt r = KErrNone;
+ // create and install the active scheduler we need
+ CSecureProcessASBase* s=new(ELeave) CSecureProcessASBase();
+ CleanupStack::PushL(s);
+ CActiveScheduler::Install(s);
+
+ // Create the memory logger object for monitoring memory
+ LBSMEMLOG_BEGIN();
+
+ CBase* baseObj = s->CreateRootObjectL();
+
+ CleanupStack::PushL(baseObj);
+
+ r = s->EntryPointL(baseObj);
+
+ // is the process that started us interested in known that we are alive and well
+ if(aParams.GetRendezvousRequired())
+ {
+ // tell any starting process that we have started successfully and are
+ // now ready to receieve mesages or process events
+ RProcess::Rendezvous(KErrNone);
+ }
+ // Ready to run
+ CActiveScheduler::Start();
+ //
+ // Cleanup the client
+ CleanupStack::PopAndDestroy(1);
+
+ // Cleanup the mem logger
+ LBSMEMLOG_END();
+
+ //
+ // do any _FINAL _ operations. If anything.. default does nothing
+ s->Final();
+ // Cleanup the scheduler
+ CleanupStack::PopAndDestroy(s);
+ return r;
+ }
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/internal/lbstestserver/src/cprocesslaunch.cpp Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,102 @@
+// 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:
+// processlaunch.cpp
+//
+//
+
+#include <f32file.h>
+#include "cprocesslaunch.h"
+
+//----------------------------------------------------------------------------
+
+/** called by the launcher! Launch the process by specified parameters
+find the process and launch it
+
+@param aParams A reference to TProcessStartParams object
+@return Symbian error code
+@see TProcessStartParams
+@internalTechnology
+@released
+ */
+TInt CProcessLaunch::ProcessLaunch(TProcessStartParams& aParams)
+// now prevents multiple instances of the same image being launched!
+// So P&S servers now look like realCServer2 servers.
+ {
+ TFullName fullName;
+ _LIT(KStar, "*");
+ TParse parser;
+ parser.SetNoWild(aParams.GetProcessFileName(), NULL, NULL);
+ fullName.Append(parser.NameAndExt());
+ fullName.Append(KStar);
+
+ TFindProcess processFinder(fullName);
+ TInt err = KErrNotFound;
+ while (err = processFinder.Next(fullName), err == KErrNone)
+ {
+ RProcess process;
+ TInt processOpenErr = process.Open(processFinder);
+ if (processOpenErr == KErrNone)
+ {
+ TExitType exitType = process.ExitType();
+ if (exitType == EExitPending)
+ {
+ // Found a running instance of the process,
+ // so return without starting another instance.
+ process.Close();
+ return KErrNone;
+ }
+ }
+ process.Close();
+ }
+
+ // No running instance found, so start one.
+ return (DoProcessLaunch(aParams));
+ }
+
+/** Create the process by specified parameters and wait for the request
+
+@param aParams A reference to TProcessStartParams object
+@return Symbian error code
+@see TProcessStartParams
+@internalTechnology
+@released
+ */
+TInt CProcessLaunch::DoProcessLaunch(TProcessStartParams& aParams)
+ {
+ RProcess process;
+
+ TInt r=process.Create(aParams.GetProcessFileName(),aParams.GetAsCommandLine());
+ if (r!=KErrNone)
+ {
+ return r;
+ }
+ // are we expecing to rendezvous with the process we have created above
+ if(aParams.GetRendezvousRequired())
+ {
+ TRequestStatus stat;
+ process.Rendezvous(stat);
+ if (stat!=KRequestPending)
+ {
+ process.Kill(0);
+ }
+ else
+ {
+ process.Resume();
+ }
+ User::WaitForRequest(stat);
+ r=(process.ExitType()==EExitPanic) ? KErrGeneral : stat.Int();
+ }
+ process.Close();
+ return r;
+ }
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/internal/lbstestserver/src/cquietus.cpp Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,86 @@
+// 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:
+//
+
+#include "cquietus.h"
+
+/** static method to create CQuietus object
+
+@return The singleton CQuietus object
+@internalTechnology
+@released
+ */
+CQuietus* CQuietus::NewL()
+ {
+ CQuietus* self = new(ELeave) CQuietus();
+ return self;
+ }
+
+/** destructor, cancel any outstanding request
+
+@internalTechnology
+@released
+ */
+CQuietus::~CQuietus()
+ {
+ Cancel();
+ }
+
+/** constructor, create CActive object with standard priority and add itself to AS
+
+@return The singleton CQuietus object
+@internalTechnology
+@released
+ */
+CQuietus::CQuietus() : CActive(CActive::EPriorityStandard)
+ {
+ CActiveScheduler::Add(this);
+ }
+
+/** setactive itself and issue a message to force complete the request to enter into RunL
+
+@internalTechnology
+@released
+ */
+void CQuietus::CoupDeGrace()
+ {
+ // kill out active scheduler. thsi can only be done under a RunL, so we'll
+ // force ourselves into the active scheduler Q and kill ourseleves when we run
+ SetActive();
+ TRequestStatus* trs = &iStatus;
+ User::RequestComplete(trs, KErrNone);
+ }
+
+/** All it does is to kill the process!
+
+@internalTechnology
+@released
+ */
+void CQuietus::RunL()
+ {
+ // kill the controlling AS
+ CActiveScheduler::Stop();
+ }
+
+/** Do the cancel job if cancel is issued to cancel an outstanding request
+
+@internalTechnology
+@released
+ */
+void CQuietus::DoCancel()
+ {
+ // no operation!!
+ // This operationin NOT CANCELABLE by defination and design
+ // No this is NOT a bug :)
+ }
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/internal/lbstestserver/src/csecureasbase.cpp Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,131 @@
+// 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:
+//
+
+#include <e32debug.h>
+#include <lbsmemlogger.h>
+#include "lbsdevloggermacros.h"
+#include "csecureasbase.h"
+#include "tserverstartparams.h"
+
+/**
+Default constructor
+
+@internalTechnology
+@released
+ */
+CSecureASBase::CSecureASBase()
+ {
+ }
+
+/**
+The main sever entry point with sever start parameters, create the cleanup stack
+
+@param aParams A reference to TServerStartParams object
+@see TServerStartParams
+@return Symbian Standard Error code
+@internalTechnology
+@released
+ */
+TInt CSecureASBase::ServerMain(TServerStartParams& aParams)
+ {
+ // called from the server process from E32Main
+ __UHEAP_MARK;
+ //
+ CTrapCleanup* cleanup=CTrapCleanup::New();
+ TInt r=KErrNoMemory;
+ if (cleanup)
+ {
+ TRAP(r,RunServerL(aParams));
+ delete cleanup;
+ }
+ //
+ __UHEAP_MARKEND;
+ return r;
+
+ }
+
+/**
+start sever with parameters, create ActiveScheduler and install it
+create a server implementation and signal the client when initialisation completes
+start the AS object and wait to destroy.
+
+@param aParams A reference to TServerStartParams object
+@see TServerStartParams
+@return Symbian Standard Error code
+@internalTechnology
+@released
+ */
+TInt CSecureASBase::RunServerL(TServerStartParams& aParams)
+ {
+ LBSLOG(ELogP3, "->CSecureASBase::RunServerL");
+
+ // first check that we are about to create the right type of server
+ if(aParams.GetType() != KServerStartParamsTypeUid)
+ {
+ // this is not a process type that we understand. Has the caller
+ // pass TProcessStartParams by mistake?
+ User::Leave(KErrArgument); // this aborts the server startup
+ }
+ User::LeaveIfError(User::RenameThread(aParams.GetServerName()));
+ //
+ // create and install the active scheduler we need
+ CSecureASBase* s = new (ELeave) CSecureASBase();
+ CleanupStack::PushL(s);
+ CActiveScheduler::Install(s);
+
+ LBSMEMLOG_BEGIN();
+
+ // test with the impl
+ MCreateServerImpl* impl = s->GetImplLC();
+ //
+ // create the server (leave it on the cleanup stack)
+ impl->CreateServerLC(aParams);
+ //
+ // Initialisation complete, now signal the client
+ RProcess().Rendezvous(KErrNone);
+ //
+ // Ready to run
+ LBSLOG(ELogP3, "Calling CActiveScheduler::Start");
+ CActiveScheduler::Start();
+ //
+ // Cleanup the impl, server and scheduler. Impl is destroyed via ~CBase not the M class
+ LBSLOG(ELogP3, "Calling CleanupStack::PopAndDestroy(3)");
+
+ CleanupStack::PopAndDestroy(3);
+
+ LBSLOG(ELogP3, "<-CSecureASBase::RunServerL");
+
+ LBSMEMLOG_END();
+
+ return KErrNone;
+ }
+
+
+/**
+Panic the server with CSecureASBase category
+
+@param aPanic Reason to painc
+@see TSecureASBasePanic
+@internalTechnology
+@released
+ */
+void CSecureASBase::Panic(const TSecureASBasePanic aPanic)
+ {
+ _LIT(KSecureAsBase, "CSecureASBase");
+ User::Panic(KSecureAsBase, aPanic);
+ }
+
+
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/internal/lbstestserver/src/csecureprocessasbase.cpp Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,30 @@
+// 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:
+//
+
+#include "csecureprocessasbase.h"
+
+/** Panic the secure process
+
+@param aPanic A reference to TSecureProcessASBasePanic object
+@see TSecureProcessASBasePanic
+@internalTechnology
+@released
+ */
+void CSecureProcessASBase::Panic(const TSecureProcessASBasePanic aPanic)
+ {
+ _LIT(KSecureProcessAsBase, "CSecureProcessASBase");
+ User::Panic(KSecureProcessAsBase, aPanic);
+ }
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/internal/lbstestserver/src/csecureserverbase.cpp Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,189 @@
+// 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:
+// csesuresessionbase.cpp
+//
+//
+
+#include "csecureserverbase.h"
+#include "cshutdowntimer.h"
+#include <e32debug.h>
+/// Lbs
+#include "lbsdevloggermacros.h"
+
+/**
+Create a new session, called from CPolicyServer
+
+@param aVersion TVersion reference
+@param aMessage RMessage2 object reference
+@return CSession2 based object pointer
+@internalTechnology
+@released
+ */
+CSession2* CSecureServerBase::NewSessionL(const TVersion &aVersion, const RMessage2& aMessage) const
+ {
+ TVersion v = GetServerVersion();
+ if(!User::QueryVersionSupported(v, aVersion))
+ {
+ User::Leave(KErrNotSupported);
+ }
+ CSession2* session = DoNewSessionL(aVersion, aMessage);
+ return session;
+ }
+
+/**
+destrcutor, cancel if any outstanding request of shutdown timer and release it.
+
+@internalTechnology
+@released
+ */
+CSecureServerBase::~CSecureServerBase()
+ {
+ LBSLOG(ELogP1,"->CSecureServerBase::~CSecureServerBase");
+ if(iShutdownTimer)
+ {
+ if(iShutdownTimer->IsActive())
+ iShutdownTimer->Cancel();
+ }
+ delete iShutdownTimer;
+ iShutdownTimer = NULL;
+ LBSLOG(ELogP1,"->CSecureServerBase::~CSecureServerBase");
+ }
+
+/**
+Create shut down timer
+
+@internalTechnology
+@released
+ */
+void CSecureServerBase::BaseConstructL(TBool aShutdownTimerRequired)
+ {
+ LBSLOG(ELogP1,"->CSecureServerBase::BaseConstructL");
+ iBaseConstructCalled = ETrue;
+ if(aShutdownTimerRequired)
+ {
+ iShutdownTimer = new (ELeave) CShutdownTimer();
+ iShutdownTimer->ConstructL();
+ }
+ LBSLOG(ELogP1,"<-CSecureServerBase::BaseConstructL");
+ }
+
+/**
+constructor, create server base with specified priority and policy, default shut down time delay
+
+@param aPriority Defined server priority
+@param aSecurityPolicy A TPolicy object reference, to define server security policy
+@internalTechnology
+@released
+ */
+CSecureServerBase::CSecureServerBase(TInt aPriority, const TPolicy& aSecurityPolicy) : CPolicyServer(aPriority, aSecurityPolicy),
+ iShutdownDelay(KDefaultShutdownDelay)
+ {
+ // nothing to do?
+ }
+
+/**
+Increase the session count by 1
+The function is called whenever a new session is created, cancel the current outstanding request of shutdown timer
+
+@internalTechnology
+@released
+ */
+void CSecureServerBase::IncSession()
+ {
+ LBSLOG(ELogP1,"->CSecureServerBase::IncSession");
+ __ASSERT_ALWAYS(iBaseConstructCalled, PanicServer(EBaseConstructNotCalled));
+ ++iSessionCount;
+ if(iShutdownTimer)
+ {
+ iShutdownTimer->Cancel();
+ }
+ LBSLOG(ELogP1,"<-CSecureServerBase::IncSession");
+ }
+
+/**
+Decrease the session count by 1
+The function is called whenever a new session is released, start shutdown timer with current shut down timer delay
+
+@internalTechnology
+@released
+ */
+void CSecureServerBase::DecSession()
+ {
+ LBSLOG(ELogP1,"->CSecureServerBase::DecSession");
+
+ __ASSERT_ALWAYS(iBaseConstructCalled, PanicServer(EBaseConstructNotCalled));
+ --iSessionCount;
+ if(iSessionCount > 0)
+ return; // bail out early
+ // ~CSecureSessionBase calls this, but it can be called after
+ // ~CSecureServerBase(!) e.g. a forced shutdown of the server with clients still connected
+ // so we need to guard this.
+ if(iShutdownTimer)
+ {
+ iShutdownTimer->Start(iShutdownDelay); // otherwise start the shutdown timer.
+ }
+ LBSLOG(ELogP1,"<-CSecureServerBase::DecSession");
+ }
+
+/**
+Return the session count
+
+@return Session count
+@internalTechnology
+@released
+ */
+TInt CSecureServerBase::GetSessionCount() const
+ {
+ __ASSERT_ALWAYS(iBaseConstructCalled, PanicServer(EBaseConstructNotCalled));
+ return iSessionCount;
+ }
+
+/**
+Get the current shut down delay
+
+@return Shut down time delay
+@internalTechnology
+@released
+ */
+TTimeIntervalMicroSeconds32 CSecureServerBase::GetShutdownDelay() const
+ {
+ __ASSERT_ALWAYS(iBaseConstructCalled, PanicServer(EBaseConstructNotCalled));
+ return iShutdownDelay;
+ }
+
+/**
+Set shut down delay
+
+@param aDelay Shut down time delay
+@internalTechnology
+@released
+ */
+void CSecureServerBase::SetShutdownDelay(const TTimeIntervalMicroSeconds32 aDelay)
+ {
+ __ASSERT_ALWAYS(iBaseConstructCalled, PanicServer(EBaseConstructNotCalled));
+ iShutdownDelay = aDelay;
+ }
+
+/**
+Panic the server with specified panic reason code
+
+@param aPanicCode Panic reason code
+@internalTechnology
+@released
+ */
+void CSecureServerBase::PanicServer(TInt aPanicCode) const
+ {
+ _LIT(KSecureServerBase, "SecureServerBase");
+ User::Panic(KSecureServerBase, aPanicCode);
+ }
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/internal/lbstestserver/src/csecuresessionbase.cpp Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,123 @@
+// 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:
+// csesuresessionbase.cpp
+//
+//
+
+#include "csecuresessionbase.h"
+#include "csecureserverbase.h"
+#include "lbsmessageenums.h"
+#include <e32debug.h>
+/// Lbs
+#include "lbsdevloggermacros.h"
+/**
+constructor, call the CSession2 base class constructor
+
+@internalTechnology
+@released
+ */
+CSecureSessionBase::CSecureSessionBase() : CSession2()
+ {
+ LBSLOG(ELogP1,"CSecureSessionBase::CSecureSessionBase");
+ }
+
+/**
+destructor, decrease the server session count, which will inturn start shutdown timer.
+
+@internalTechnology
+@released
+ */
+CSecureSessionBase::~CSecureSessionBase()
+ {
+ LBSLOG(ELogP1,"CSecureSessionBase::~CSecureSessionBase");
+ const CServer2* baseServer = Server();
+ reinterpret_cast<CSecureServerBase*>(const_cast<CServer2*>(baseServer))->DecSession(); // reduce the server session count - start shutdown timer etc.
+ }
+
+
+/**
+function is called by CSession2 to increase the server session count, which will inturn reset shutdown timer.
+
+@internalTechnology
+@released
+ */
+void CSecureSessionBase::CreateL()
+ {
+ const CServer2* baseServer = Server();
+ reinterpret_cast<CSecureServerBase*>(const_cast<CServer2*>(baseServer))->IncSession(); // increase the server session count - stop shutdown timer etc.
+ }
+
+/**
+Disconnect the session.
+
+@param aMessage A reference to RMessage2 object
+@internalTechnology
+@released
+ */
+void CSecureSessionBase::Disconnect(const RMessage2& aMessage)
+ {
+ LBSLOG(ELogP1,"CSecureSessionBase::Disconnect");
+ CSession2::Disconnect(aMessage);
+ // used for a breakpoint
+ }
+
+/**
+Session message dispatch function
+
+@param aMessage A reference to RMessage2 object
+@internalTechnology
+@released
+ */
+void CSecureSessionBase::ServiceL(const RMessage2& aMessage)
+ {
+ DispatchL(aMessage); // if this leaves it hits CSession2::ServiceError (or the derived version of it)
+ }
+
+/**
+Session error message dispatch function, this is called when error happens, it dispatches the error locally and
+then pass the error message to CSession2
+
+@param aMessage A reference to RMessage2 object
+@param aError Error code
+@internalTechnology
+@released
+ */
+void CSecureSessionBase::ServiceError(const RMessage2& aMessage, TInt aError)
+ {
+ DispatchError(aMessage, aError); // provide the opportunity to do something locally
+ // now take the base class actions
+ CSession2::ServiceError(aMessage, aError); // will complete aMessage with aError if not already completed.
+ }
+
+/**
+Nothing here. a place for extra subsession construction functionalities
+
+@internalTechnology
+@released
+ */
+void CSecureSessionBase::ConstructSubSessionL()
+ {
+ // does nothing in the default base class
+ }
+
+/**
+Nothing here. a place for extra subsession destruction functionalities
+
+@internalTechnology
+@released
+ */
+void CSecureSessionBase::DestroySubSession()
+ {
+ // does nothing in the default base class
+ }
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/internal/lbstestserver/src/csecuresessionsubsessionbase.cpp Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,319 @@
+// 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:
+//
+
+#include <e32debug.h>
+#include "csecuresessionsubsessionbase.h"
+#include "csubsessionbase.h"
+#include "lbsmessageenums.h"
+#include "messageutils.h"
+#include "lbsdevloggermacros.h"
+
+/**
+constructor, call the CSecureSessionBase base class constructor
+
+@internalTechnology
+@released
+ */
+CSecureSessionSubSessionBase::CSecureSessionSubSessionBase() : CSecureSessionBase()
+ {
+ LBSLOG(ELogP3, "CSecureSessionSubSessionBase::CSecureSessionSubSessionBase()");
+ }
+
+/**
+destructor, release the subsession handler container
+
+@internalTechnology
+@released
+ */
+CSecureSessionSubSessionBase::~CSecureSessionSubSessionBase()
+ {
+ LBSLOG(ELogP3, "->CSecureSessionSubSessionBase::~CSecureSessionSubSessionBase()");
+
+ if (iObjectIx)
+ {
+ TInt count = iObjectIx->Count();
+ for(TInt i=0; i<count; i++)
+ {
+ CObject* theObj = (*iObjectIx)[i];
+ if (theObj)
+ {
+ TInt handle = iObjectIx->At(theObj);
+ // if we reach here somethingbad has happened. The server class
+ // (i.e. the session object) is being closed by the client, BEFORE
+ // the client has closes all of the open subsessions.
+ // So the only reasonable thingto do here is:
+ // delete the subsession - without closing it first. 'Cos this is
+ // _exactly_ what the client side has asked for (for some reason).
+ // The may or may not be legal, or even a good idea depending on the type of server
+ // that is being developeds. But the server framework should NOT
+ // prevent this from happening. Generating a panic is a
+ // server developers choice, not a framework developers choice.
+ // We delete by calling CObjectIdx::Remove(). This will call CObject::Close.
+ // This in turn calls MSubSessionImpl::MRelease::VirtualRelease
+ // which will destroy the sub session for us.
+ // CloseSubSession should not be called directly.
+ iObjectIx->Remove(handle);
+
+ //
+ // If the array length has changed, then update count and move back one space,
+ // so that the same cell will be re-inspected during the next iteration of the
+ // loop This is because we have removed the current cell and therefore the
+ // next cell is actually in iObjectIx[i] (i.e. the current one).
+ TInt newCount = iObjectIx->Count();
+
+ if (newCount != count)
+ {
+ count = newCount;
+ i--;
+ }
+
+ }
+ }
+ delete iObjectIx;
+ }
+ if (iContainerIx)
+ {
+ iContainerIx->Remove(iObjectCon);
+ delete iContainerIx;
+ }
+ // session decrementing handled in the parent class
+ LBSLOG(ELogP3, "<-CSecureSessionSubSessionBase::~CSecureSessionSubSessionBase()");
+ }
+
+/**
+called as part of the CSession2 construction.
+Create subsession handler container and call the session CreateL function to increase the session count
+
+@internalTechnology
+@released
+ */
+void CSecureSessionSubSessionBase::CreateL()
+ {
+ LBSLOG(ELogP3, "->CSecureSessionSubSessionBase::CreateL");
+ iObjectIx = CObjectIx::NewL();
+ iContainerIx = CObjectConIx::NewL();
+ iObjectCon = iContainerIx->CreateL();
+ CSecureSessionBase::CreateL(); // call the parent class to inc the session count
+ iBaseCreateCalled = ETrue;
+ LBSLOG(ELogP3, "<-CSecureSessionSubSessionBase::CreateL");
+ }
+
+/**
+Do the real thing for subsession construction.
+Check whether the session constructL function is called or not first. If not, panic the server,
+Create a subsession and push it to stack, get the implementation of subsession and invoke the
+real subsession creation implementation.
+
+Add the subsession handler to container and write the handler to client address space through message object
+Complete the creating message.
+
+@param aMessage A RMessage2 reference.
+@internalTechnology
+@released
+ */
+void CSecureSessionSubSessionBase::CreateSubSessionL(const RMessage2& aMessage)
+ {
+ __ASSERT_ALWAYS(iBaseCreateCalled, Server()->PanicServer(CSecureServerBase::EBaseCreateNotCalled));
+ CSubSessionBase* subSession = new (ELeave) CSubSessionBase();
+ // Note: Use the CObject::Close() function instead of usual destructor
+ // because it is needed to correctly decrement the reference count.
+ // Close() will destruct subSession anyway if the ref count == 0.
+ CleanupClosePushL(*subSession);
+
+ MSubSessionImpl* impl = subSession->GetImplL(aMessage);
+ CleanupVirtualReleasePushL(*impl); // call Release() on destruction
+ //CleanupVirtualRelease::PushL(*impl);
+ subSession->SetImpl(impl); // will take ownership(!)
+ CleanupStack::Pop(impl);
+
+ // We need to pass a handle to the controllign server down to the subsession object.
+ // Since the subsession impl object is a CBase object (NOT a CSession2 object)
+ // we haev to do this outherwise the subsession will not be able to referene the
+ // server - which seems like a useful thing to do.
+ const CSecureServerBase* server = reinterpret_cast<const CSecureServerBase*>(Server());
+ impl->CreateSubSessionL(aMessage, server);
+
+ iObjectCon->AddL(subSession);
+ TInt handle = iObjectIx->AddL(subSession);
+ TPckgC<TInt> pH(handle);
+ MessageUtils::Write(aMessage, 3, pH);
+ aMessage.Complete(KErrNone);
+ CleanupStack::Pop(subSession);
+ }
+
+/**
+Do the real thing for subsession destruction.
+Check whether the session constructL function is called or not first. If not, panic the server,
+get a subsession handler from container and complete the message if subsession is already close,
+if not, close subsession and remove it from container then complete the message.
+
+@param aMessage A RMessage2 reference.
+@internalTechnology
+@released
+ */
+void CSecureSessionSubSessionBase::DestroySubSession(const RMessage2& aMessage)
+ {
+ __ASSERT_ALWAYS(iBaseCreateCalled, Server()->PanicServer(CSecureServerBase::EBaseCreateNotCalled));
+ CSubSessionBase* subSession = reinterpret_cast<CSubSessionBase*>(iObjectIx->At(aMessage.Int3()));
+
+ if (subSession == NULL)
+ {
+ aMessage.Complete(KErrBadHandle);
+ }
+ else
+ {
+ // we have been asked to close a subsession by the client side so
+ // do just that :). c.f. CSecureSessionSubSessionBase::~CSecureSessionSubSessionBase() above.
+ // In this case we do need to call CloseSubSession before deleting
+ // the subsession object.
+ // We delete by calling CObjectIdx::Remove().This will call CObject::Close.
+ // This in turn calls MSubSessionImpl::MRelease::VirtualRelease
+ // which willdestroy the sub session for us.
+ CSubSessionBase* subSession = static_cast<CSubSessionBase*>(iObjectIx->At(aMessage.Int3()));
+ iObjectIx->Remove(aMessage.Int3());
+ aMessage.Complete(KErrNone);
+ }
+ }
+
+/**
+Check whether the session constructL function is called or not first. If not, panic the server,
+
+Dispatch the message at session level, only two types of message are handled here:
+SubSession Open and Close.
+The other messages are fwd to subsession via DispatchMessage.
+
+@param aMessage A RMessage2 reference.
+@internalTechnology
+@released
+ */
+void CSecureSessionSubSessionBase::DispatchL(const RMessage2& aMessage)
+ {
+ __ASSERT_ALWAYS(iBaseCreateCalled, Server()->PanicServer(CSecureServerBase::EBaseCreateNotCalled));
+ switch(aMessage.Function())
+ {
+ case ESecureSubSessionBaseOpen:
+ CreateSubSessionL(aMessage);
+ break;
+ case ESecureSubSessionBaseClose:
+ DestroySubSession(aMessage);
+ break;
+ default:
+ // the message could be EITHER a session operation - which we have to handle here, or an operation
+ // handled by the subsession which we have to forward
+ DispatchMessageL(aMessage);
+ break;
+ }
+
+ }
+
+/**
+Check whether the session constructL function is called or not first. If not, panic the server,
+
+Check whether the message are for session or subsession
+Dispatch the message at subsession level
+get the subsession handler from container and dispatch the message to subsession implementation!
+
+@param aMessage A RMessage2 reference.
+@internalTechnology
+@released
+ */
+void CSecureSessionSubSessionBase::DispatchMessageL(const RMessage2& aMessage)
+ {
+ __ASSERT_ALWAYS(iBaseCreateCalled, Server()->PanicServer(CSecureServerBase::EBaseCreateNotCalled));
+ // NB the test is intened to ignore a function enum of ELastSessionMessageId - this is not a valid command
+ if(aMessage.Function()<ELastSessionMessageId)
+ {
+ // the message is for the session
+ ServiceMessageL(aMessage); // implmented in the DERIVED CSessionBase class.
+ }
+ else if(aMessage.Function()>ELastSessionMessageId)
+ {
+ // MUST be a message for the subsystem object - delegate
+ CSubSessionBase* subSession = static_cast<CSubSessionBase*>(iObjectIx->At(aMessage.Int3()));
+ subSession->Impl()->DispatchL(aMessage);
+ }
+ }
+
+/**
+Return the server
+
+@return Pointer to server base
+@internalTechnology
+@released
+ */
+const CSecureServerBase* CSecureSessionSubSessionBase::Server() const
+ {
+ return reinterpret_cast<const CSecureServerBase*>(CSession2::Server());
+ }
+
+/**
+Check whether the session constructL function is called or not first. If not, panic the server,
+
+Dispatch the message at session level, only two types of message are handled here:
+SubSession Open and Close.
+If error happened when open subsession, destroy the subsession.
+
+otherwise, pop the error messages to session or fwd to subsession via DispatchError.
+
+@param aMessage A RMessage2 reference.
+@param aError Error code.
+@internalTechnology
+@released
+ */
+void CSecureSessionSubSessionBase::DispatchError(const RMessage2& aMessage, TInt aError)
+ {
+ __ASSERT_ALWAYS(iBaseCreateCalled, Server()->PanicServer(CSecureServerBase::EBaseCreateNotCalled));
+ CSubSessionBase* subSession = NULL;
+ switch(aMessage.Function())
+ {
+ case ESecureSubSessionBaseOpen:
+ if(aError == KErrArgument)
+ {
+ // panic the client we have NO idea what sort
+ // of sub session class the user was tryign to create.
+ // This is a client side failure!, so shoot the client
+ MessageUtils::PanicClient(aMessage, KServerFrameworkPanic, ESecureSubSessionBaseUnknownSubSessionType);
+ // NB there is NOTHING to clean up here, everything is deleted via
+ // the cleanup stack, and the subsession object was never added to the
+ // obejct containers.... See CreateSubSessionL above
+ }
+ else
+ {
+ // CreateSubSessionL() has caused a Leave, so there is
+ // no sub session object to clear up - just complete the
+ // message with an error
+ aMessage.Complete(aError);
+ }
+ break;
+ case ESecureSubSessionBaseClose:
+ // Panic? Non-leaving function that just left?
+ break;
+ default:
+ // DisplatchMessageL above has left - this could be becuase ServiceMessageL left or the subsession DisplatchL
+ // NB the test is intened to ignore a function enum of ELastSessionMessageId - this is not a valid command
+ if(aMessage.Function()<ELastSessionMessageId)
+ {
+ // the message is for the session
+ ServiceMessageError(aMessage, aError); // implmented in the DERIVED CSessionBase class.
+ }
+ else if(aMessage.Function()>ELastSessionMessageId)
+ {
+ // MUST be a message for the subsystem object - delegate
+ subSession = static_cast<CSubSessionBase*>(iObjectIx->At(aMessage.Int3()));
+ subSession->Impl()->DispatchError(aMessage, aError);
+ }
+ break;
+ }
+ }
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/internal/lbstestserver/src/cserverlaunch.cpp Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,77 @@
+// 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:
+// serverlaunch.cpp
+//
+//
+
+#include "cserverlaunch.h"
+#include "tserverstartparams.h"
+
+/** Launch the server by specified parameters
+find the process and launch it
+
+@param aParams A reference to TProcessStartParams object
+@return Symbian error code
+@see TProcessStartParams
+@internalTechnology
+@released
+ */
+TInt CServerLaunch::ServerLaunch(TServerStartParams& aParams)
+ {
+ TFindServer serverSearcher(aParams.GetServerName());
+ TFileName matchingFileName;
+ TInt error = serverSearcher.Next(matchingFileName); // we haev asked for a exact match, so the retunred filename can be ignored
+ if(error==KErrNone)
+ {
+ return KErrNone; // found it, so some other kind process has just started the server for us
+ }
+ else
+ {
+ error = CreateServerProcess(aParams);
+ }
+ return error;
+ }
+
+/** create server process by specified parameters
+signal the clients and start the process, wait for any request.
+
+@param aParams A reference to TProcessStartParams object
+@return Symbian error code
+@see TProcessStartParams
+@internalTechnology
+@released
+ */
+TInt CServerLaunch::CreateServerProcess(TServerStartParams& aParams)
+ {
+ RProcess server;
+
+ TInt r=server.Create(aParams.GetServerFileName(),aParams.GetAsCommandLine());
+ if (r!=KErrNone)
+ return r;
+ TRequestStatus stat;
+ server.Rendezvous(stat);
+ if (stat!=KRequestPending)
+ {
+ server.Kill(0);
+ }
+ else
+ {
+ server.Resume();
+ }
+ User::WaitForRequest(stat);
+ r=(server.ExitType()==EExitPanic) ? KErrGeneral : stat.Int();
+ server.Close();
+ return r;
+ }
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/internal/lbstestserver/src/cshutdowntimer.cpp Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,97 @@
+// 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:
+//
+
+#include "cshutdowntimer.h"
+#include <e32debug.h>
+/// Lbs
+#include "lbsdevloggermacros.h"
+/**
+Default constructor, set the timer to standard priority by default
+add timer to active scheduler
+
+@internalTechnology
+@released
+ */
+CShutdownTimer::CShutdownTimer() : CTimer(CActive::EPriorityStandard)
+ {
+ CActiveScheduler::Add(this);
+ }
+
+/**
+Default destructor, cancel any outstanding request of timer active object
+
+@internalTechnology
+@released
+ */
+CShutdownTimer::~CShutdownTimer()
+ {
+ LBSLOG(ELogP1,"CShutdownTimer::~CShutdownTimer");
+ Cancel();
+ }
+
+/**
+Call CTimer base class to construct the shut down timer
+
+@internalTechnology
+@released
+ */
+void CShutdownTimer::ConstructL()
+ {
+ // call the base class version
+ CTimer::ConstructL();
+ }
+
+/**
+start the timer by specifying the shut down delay to issue a time request
+
+@param aDelay Time interval in micro seconds
+@internalTechnology
+@released
+ */
+void CShutdownTimer::Start(const TTimeIntervalMicroSeconds32 aDelay)
+ {
+ LBSLOG(ELogP1,"->CShutdownTimer::Start");
+ After(aDelay);
+ LBSLOG(ELogP1,"<-CShutdownTimer::Start");
+ }
+
+/**
+stop the timer by cancelling outstanding time request
+
+@internalTechnology
+@released
+ */
+void CShutdownTimer::Stop()
+ {
+ LBSLOG(ELogP1,"->CShutdownTimer::Stop");
+ Cancel();
+ LBSLOG(ELogP1,"<-CShutdownTimer::Stop");
+ }
+
+/**
+inherited from CActive. Main message loop to deal with dispatched request
+stop the active scheduler whenever a request is received.
+ this stops the AS that owns the CPolicyServer AO. So it stops the server.
+
+@internalTechnology
+@released
+ */
+void CShutdownTimer::RunL()
+ {
+ LBSLOG(ELogP1,"->CShutdownTimer::RunL");
+ CActiveScheduler::Stop();
+ LBSLOG(ELogP1,"<-CShutdownTimer::Stop");
+
+ }
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/internal/lbstestserver/src/csubsessionbase.cpp Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,126 @@
+// 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:
+//
+
+#include "csubsessionbase.h"
+#include "lbsmessageenums.h"
+
+/**
+inline function to push the item needed to be released when destroy, via a TCleanupItem object,
+which includes a MRelease function to release the resource.
+
+@param aRef A reference MRelease function
+@internalTechnology
+@released
+ */
+inline void CleanupVirtualRelease::PushL(MRelease& aRef)
+ {
+ CleanupStack::PushL(TCleanupItem(&Release,&aRef));
+ }
+
+/**
+release the resource by calling the defined MRelease function
+
+@param aPrt A reference of MRelease function
+@internalTechnology
+@released
+ */
+void CleanupVirtualRelease::Release(TAny* aPtr)
+ {
+ MRelease* ptr = reinterpret_cast<MRelease*>(aPtr);
+ TReleaseFunc func = &MRelease::VirtualRelease;
+ (ptr->*func)();
+ }
+
+
+/**
+function to push the item needed to be released by calling CleanupVirtualRelease class,
+which includes a MRelease function to release the resource.
+
+@param aRef A reference MRelease function
+@internalTechnology
+@released
+ */
+void CleanupVirtualReleasePushL(MRelease& aRef)
+ {
+ CleanupVirtualRelease::PushL(aRef);
+ }
+
+/**
+Default constructor
+Nothing here
+
+@internalTechnology
+@released
+ */
+CSubSessionBase::CSubSessionBase()
+ {
+ // does nothing
+ }
+
+/**
+Default destructor
+Nothing here
+
+@internalTechnology
+@released
+ */
+CSubSessionBase::~CSubSessionBase()
+ {
+ // nuke the impl object
+ if(iImpl)
+ {
+ iImpl->VirtualRelease();
+ iImpl=NULL;
+ }
+ }
+
+/**
+Set the generic subsession implement pointer
+
+@param aImpl A generic interface pointer to MSubSessionImpl
+@see MSubSessionImpl
+@internalTechnology
+@released
+ */
+void CSubSessionBase::SetImpl(MSubSessionImpl* aImpl)
+ {
+ iImpl = aImpl;
+ }
+
+/**
+Get the generic subsession implement pointer
+
+@return the generic interface pointer to MSubSessionImpl
+@see MSubSessionImpl
+@internalTechnology
+@released
+ */
+MSubSessionImpl* CSubSessionBase::Impl()
+ {
+ return iImpl;
+ }
+
+/**
+Invoke user panic by setting the category as CSubSessionBase
+
+@param aPanic A constant panic category TSubSessionBasePanic
+@internalTechnology
+@released
+ */
+void CSubSessionBase::Panic(const TSubSessionBasePanic aPanic)
+ {
+ _LIT(KSubSessionBase, "CSubSessionBase");
+ User::Panic(KSubSessionBase, aPanic);
+ }
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/internal/lbstestserver/src/lbstestclient.cpp Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,65 @@
+// 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:
+// Client side code for the LBS test server.
+//
+//
+
+#include <e32base.h>
+#include <e32debug.h>
+#include "lbstestclient.h"
+#include "lbstestclientimpl.h"
+
+
+///////////////////////////////////////////////////////////////////////////////
+// CLbsTestServer
+///////////////////////////////////////////////////////////////////////////////
+
+CLbsTestServer::CLbsTestServer()
+ {
+
+ }
+
+CLbsTestServer::~CLbsTestServer()
+ {
+ delete iImpl;
+ }
+
+EXPORT_C CLbsTestServer* CLbsTestServer::NewL()
+ {
+ CLbsTestServer* self = new (ELeave) CLbsTestServer;
+ CleanupStack::PushL(self);
+ self->ConstructL();
+ CleanupStack::Pop(self);
+ return self;
+ }
+
+void CLbsTestServer::ConstructL()
+ {
+ iImpl = CLbsTestServerImpl::NewL();
+ }
+
+EXPORT_C TInt CLbsTestServer::StopLbsSystem()
+ {
+ return iImpl->StopLbsSystem();
+ }
+
+EXPORT_C TInt CLbsTestServer::StartLbsSystem()
+ {
+ return iImpl->StartLbsSystem();
+ }
+
+EXPORT_C TInt CLbsTestServer::ResetLbsSystem()
+ {
+ return iImpl->ResetLbsSystem();
+ }
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/internal/lbstestserver/src/lbstestclientimpl.cpp Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,108 @@
+// 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:
+// Implementation of the client-side code
+// for the Lbs test server.
+//
+//
+
+#include <e32base.h>
+#include "lbstestmessageenums.h"
+#include "lbstestserverdata.h"
+#include "lbstestclientimpl.h"
+
+
+///////////////////////////////////////////////////////////////////////////////
+// RLbsTestSession
+///////////////////////////////////////////////////////////////////////////////
+
+/** Get the version of this object.
+*/
+TVersion RLbsTestSession::Version()
+ {
+ return TVersion(KTestServerMajorVersionNumber,
+ KTestServerMinorVersionNumber,
+ KTestServerBuildVersionNumber);
+ }
+
+/** Force the LBS system to stop and shutdown.
+
+THIS FUNCTION SHOULD ONLY BE USED IN TEST CODE!
+
+This function will stop the LBS system immediately, even
+if it is currently processing a location request.
+*/
+TInt RLbsTestSession::StopLbsSystem()
+ {
+ return SendReceive(ELbsTestStopLbsSystem);
+ }
+
+TInt RLbsTestSession::StartLbsSystem()
+ {
+ return SendReceive(ELbsTestStartLbsSystem);
+ }
+
+TInt RLbsTestSession::ResetLbsSystem()
+ {
+ return SendReceive(ELbsTestResetLbsSystem);
+ }
+
+///////////////////////////////////////////////////////////////////////////////
+// CLbsTestServerImpl
+///////////////////////////////////////////////////////////////////////////////
+
+CLbsTestServerImpl::~CLbsTestServerImpl()
+ {
+ iSession.Close();
+ }
+
+CLbsTestServerImpl::CLbsTestServerImpl()
+ {
+ }
+
+CLbsTestServerImpl* CLbsTestServerImpl::NewL()
+ {
+ CLbsTestServerImpl* self = new (ELeave) CLbsTestServerImpl;
+ CleanupStack::PushL(self);
+ self->ConstructL();
+ CleanupStack::Pop(self);
+ return self;
+ }
+
+void CLbsTestServerImpl::ConstructL()
+ {
+ /**
+ * See the ServerFramework code for the meaning of these params
+ */
+ iParams.SetServerFileName(KTestServerFileName);
+ iParams.SetServerName(KTestServerName);
+ iParams.SetNumberOfServerSlots(KServerFrameworkDefaultMessageSlots);
+ iParams.SetServerUids(KNullUid, KNullUid, KLbsTestServerUid);
+
+ User::LeaveIfError(iSession.Connect(iParams));
+ }
+
+TInt CLbsTestServerImpl::StopLbsSystem()
+ {
+ return iSession.StopLbsSystem();
+ }
+
+TInt CLbsTestServerImpl::StartLbsSystem()
+ {
+ return iSession.StartLbsSystem();
+ }
+
+TInt CLbsTestServerImpl::ResetLbsSystem()
+ {
+ return iSession.ResetLbsSystem();
+ }
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/internal/lbstestserver/src/lbstestserver.cpp Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,109 @@
+// 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:
+// server side exmaple of how to use the abstract server framework
+//
+//
+
+#include <e32debug.h>
+#include "lbstestserver.h"
+#include "lbstestserverdata.h"
+#include "lbstestmessageenums.h"
+#include "lbstestsession.h"
+
+
+///////////////////////////////////////////////////////////////////////////////
+// Security Policy information
+///////////////////////////////////////////////////////////////////////////////
+const TUint myRangeCount = 4;
+const TInt myRanges[myRangeCount] =
+ {
+ 0, //range is 0-1 inclusive
+ ESecureSubSessionBaseClose, //range is ESecureSubSessionBaseClose to (EFirstLbsTestServerMessage - 1)
+ EFirstLbsTestServerMessage, //range is EFirstLbsTestServerMessage to (ELastLbsTestServerMessage - 1)
+ ELastLbsTestServerMessage // range is ELastLbsTestServerMessage to KMaxTInt inclusive
+ };
+
+const TUint8 myElementsIndex[myRangeCount] =
+ {
+ CPolicyServer::EAlwaysPass,
+ CPolicyServer::ENotSupported,
+ 0,
+ CPolicyServer::ENotSupported
+ };
+
+const CPolicyServer::TPolicyElement myElements[] =
+ {
+ {_INIT_SECURITY_POLICY_C1(ECapabilityLocation), CPolicyServer::EFailClient}
+ };
+
+const CPolicyServer::TPolicy myPolicy =
+ {
+ CPolicyServer::EAlwaysPass, //specifies all connect attempts should pass
+ myRangeCount,
+ myRanges,
+ myElementsIndex,
+ myElements,
+ };
+
+///////////////////////////////////////////////////////////////////////////////
+// Implementation of Server Framework functions
+///////////////////////////////////////////////////////////////////////////////
+
+MCreateServerImpl* CSecureASBase::GetImplLC()
+ {
+ CLbsTestServerImpl* impl = new(ELeave) CLbsTestServerImpl();
+ CleanupStack::PushL(impl);
+ return impl;
+ }
+
+void CLbsTestServerImpl::CreateServerLC(TServerStartParams& aParams)
+ {
+ CLbsTestServer* s = new(ELeave) CLbsTestServer(CActive::EPriorityStandard, myPolicy);
+ CleanupStack::PushL(s);
+ s->ConstructL(aParams.GetServerName());
+ // leave the server object on the CS
+ }
+
+///////////////////////////////////////////////////////////////////////////////
+// CTestServer
+///////////////////////////////////////////////////////////////////////////////
+
+CLbsTestServer::CLbsTestServer(TInt aPriority, const CPolicyServer::TPolicy& aSecurityPolicy) :
+ CSecureServerBase(aPriority, aSecurityPolicy),
+ iVersion(KTestServerMajorVersionNumber,
+ KTestServerMinorVersionNumber,
+ KTestServerBuildVersionNumber)
+ {
+ }
+
+CLbsTestServer::~CLbsTestServer()
+ {
+ }
+
+void CLbsTestServer::ConstructL(const TDesC& aServerName)
+ {
+ StartL(aServerName);
+ BaseConstructL(); // MUST BE CALLED
+ }
+
+CSession2* CLbsTestServer::DoNewSessionL(const TVersion& /*aVersion*/, const RMessage2& /*aMessage*/) const
+ {
+ return new (ELeave) CLbsTestSession(); // version number already checked at this point
+ }
+
+
+TVersion CLbsTestServer::GetServerVersion() const
+ {
+ return iVersion;
+ }
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/internal/lbstestserver/src/lbstestservermain.cpp Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,37 @@
+// 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:
+// servermain.cpp
+// THIS FILE MUST BE RENAMED TO THE NAME OF OF YOUR SERVER MAIN ENTRY POINT
+// DO NOT EDIT THE FILE CONTENTS
+//
+//
+
+
+#include "e32base.h"
+#include "csecureasbase.h"
+#include "tserverstartparams.h"
+
+// sample E32Main
+// all servers should use this E32main(!), but in a renamed file.
+// Derived classes make use of the abstract method CSecureAsBase::CreateServerLC(const TServerStartParams& aParams)
+// For an implmenter that is your "E32Main"
+
+TInt E32Main()
+ {
+ TServerStartParams params;
+ TPtr ptr(reinterpret_cast<TText*>(¶ms), 0, sizeof(TServerStartParams)/sizeof(TText16));
+ User::CommandLine(ptr);
+ TInt err = CSecureASBase::ServerMain(params);
+ return err;
+ }
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/internal/lbstestserver/src/lbstestsession.cpp Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,197 @@
+// 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:
+// serverside.cpp
+// server side exmaple of how to use the abstract server framework
+//
+//
+
+#include <e32debug.h>
+#include "lbstestsession.h"
+#include "lbstestmessageenums.h"
+#include "lbssystemcontroller.h"
+#include "tprocessstartparams.h"
+#include "cprocesslaunch.h"
+
+
+/* Called by the CServer2 code to complete construction of the session
+*/
+void CLbsTestSession::CreateL()
+ {
+ CSecureSessionBase::CreateL(); // MUST do this
+ }
+
+/* Service new client requests.
+*/
+void CLbsTestSession::DispatchL(const RMessage2& aMessage)
+ {
+ switch (aMessage.Function())
+ {
+ case ELbsTestStopLbsSystem:
+ {
+ StopLbsSystem(aMessage);
+ break;
+ }
+ case ELbsTestStartLbsSystem:
+ {
+ StartLbsSystem(aMessage);
+ break;
+ }
+ case ELbsTestResetLbsSystem:
+ {
+ ResetLbsSystem(aMessage);
+ break;
+ }
+ default:
+ {
+ aMessage.Complete(KErrNotSupported);
+ break;
+ }
+ }
+ }
+
+/* Handle leaves from DispatchL
+*/
+void CLbsTestSession::DispatchError(const RMessage2& /*aMessage*/, const TInt /*aError*/)
+ {
+ // Do nothing; leave error handling to the default behaviour
+ }
+
+/* Force the LBS system to stop.
+
+THIS FUNCTION SHOULD ONLY EVER BE USED FOR TEST PURPOSES.
+
+This function will tell LbsRoot to stop the LBS system immediately.
+It will not check to see if there are any active requests still
+being processed.
+*/
+void CLbsTestSession::StopLbsSystem(const RMessage2& aMessage)
+ {
+ TInt err(KErrUnknown);
+ RLbsSystemController systemController;
+
+ // Open the system controller interface
+ RProcess process;
+ systemController.OpenL(process.SecureId());
+ CleanupClosePushL(systemController);
+
+ // Logon to the root process to detect when it has exited
+ if (FindRootProcess(process))
+ {
+ TRequestStatus status;
+ process.Logon(status);
+
+ // Force a complete close down of LBS
+ switch (systemController.RequestCompleteCloseDown())
+ {
+ case ELbsCloseDownRejected:
+ {
+ err = KErrInUse;
+ process.LogonCancel(status);
+ break;
+ }
+ case ELbsCloseDownComplete:
+ {
+ err = KErrNone;
+ break;
+ }
+ case ELbsCloseDownRootNotFound:
+ {
+ err = KErrDied;
+ process.LogonCancel(status);
+ break;
+ }
+ }
+
+ User::WaitForRequest(status);
+ process.Close();
+ }
+
+ /* Wait until the LBS Root process has definitely gone down */
+ while(FindRootProcess(process))
+ /* do nothing ... */;
+
+ CleanupStack::PopAndDestroy(&systemController);
+ aMessage.Complete(err);
+ }
+
+/* Start the LBS system
+
+THIS FUNCTION SHOULD ONLY EVER BE USED FOR TEST PURPOSES.
+
+If LbsRoot is not running then this function will start it.
+If LbsRoot is already running then this function will request
+it to start the system.
+*/
+void CLbsTestSession::StartLbsSystem(const RMessage2& aMessage)
+ {
+ TProcessStartParams params;
+ _LIT(KLbsRootFileName, "\\sys\\bin\\lbsroot.exe");
+ _LIT(KLbsRootProcessName, "lbsroot.exe");
+ params.SetProcessFileName(KLbsRootFileName);
+ params.SetProcessName(KLbsRootProcessName);
+ params.SetRendezvousRequired(ETrue);
+ TInt err = CProcessLaunch::ProcessLaunch(params);
+
+ aMessage.Complete(err);
+ }
+
+/* Reset the internal state of the LBS system
+
+THIS FUNCTION SHOULD ONLY EVER BE USED FOR TEST PURPOSES.
+
+This function tells the LBS system to reset its internal state
+and caches. Currently this means that:
+- The assistance data cache between lbsnetgateway and lbsagpsmanager is cleared.
+*/
+void CLbsTestSession::ResetLbsSystem(const RMessage2& aMessage)
+ {
+ RLbsSystemController systemController;
+
+ // Open the system controller interface
+ RProcess process;
+ systemController.OpenL(process.SecureId());
+ CleanupClosePushL(systemController);
+
+ // request a reset of the LBS system
+ systemController.RequestSystemReset();
+
+ CleanupStack::PopAndDestroy(&systemController);
+ aMessage.Complete(KErrNone);
+ }
+
+TBool CLbsTestSession::FindRootProcess(RProcess& aProcess)
+ {
+ _LIT(KLbsRootProcessName, "lbsroot.exe*");
+ TInt err(KErrNotFound);
+ TFullName fullName;
+ TFindProcess processFinder(KLbsRootProcessName);
+ while (err = processFinder.Next(fullName), err == KErrNone)
+ {
+ RProcess process;
+ TInt processOpenErr = process.Open(processFinder);
+ if (processOpenErr == KErrNone)
+ {
+ TExitType exitType = process.ExitType();
+ if (exitType == EExitPending)
+ {
+ // Found a running instance of lbsroot.exe,
+ aProcess = process;
+ return ETrue;
+ }
+ }
+ process.Close();
+ }
+
+ return EFalse;
+ }
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/internal/lbstestserver/src/messageutils.cpp Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,120 @@
+// 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:
+//
+
+#include "messageutils.h"
+
+_LIT(KServerMessageUtilsWrite16, "RMessageWrite16");
+_LIT(KServerMessageUtilsWrite8, "RMessageWrite8");
+_LIT(KServerMessageUtilsRead16, "RMessageRead16");
+_LIT(KServerMessageUtilsRead8, "RMessageRead8");
+
+/**
+write data in buffer to message by index
+
+@param aMessage A reference to RMessage2 object
+@param aIndex Index of message object
+@param aBuf 16 bits data buffer to write to message object
+@return Symbian standard error code
+@internalTechnology
+@released
+ */
+TInt MessageUtils::Write(const RMessage2& aMessage, const TInt aIndex, const TDesC16& aBuf)
+ {
+ TInt err = aMessage.Write(aIndex, aBuf); // assume a zero offset in the client side buffer
+ if(err)
+ {
+ PanicClient(aMessage, KServerMessageUtilsWrite16, err);
+ }
+ // also return the error code so that a server can cleanup is required...
+ return err;
+ }
+
+/**
+write data in buffer to message by index
+
+@param aMessage A reference to RMessage2 object
+@param aIndex Index of message object
+@param aBuf 8 bits data buffer to write to message object
+@return Symbian standard error code
+@internalTechnology
+@released
+ */
+ TInt MessageUtils::Write(const RMessage2& aMessage, const TInt aIndex, const TDesC8& aBuf)
+ {
+ TInt err = aMessage.Write(aIndex, aBuf); // assume a zero offset in the client side buffer
+ if(err)
+ {
+ PanicClient(aMessage, KServerMessageUtilsWrite8, err);
+ }
+ // also return the error code so that a server can cleanup is required...
+ return err;
+ }
+
+/**
+read data to buffer from message by index
+
+@param aMessage A reference to RMessage2 object
+@param aIndex Index of message object
+@param aBuf 16 bits data buffer to store data from message object
+@return Symbian standard error code
+@internalTechnology
+@released
+ */
+TInt MessageUtils::Read(const RMessage2& aMessage, const TInt aIndex, TDes16& aBuf)
+ {
+ TInt err = aMessage.Read(aIndex, aBuf); // assume a zero offset in the buffer
+ if(err)
+ {
+ PanicClient(aMessage, KServerMessageUtilsRead16, err);
+ }
+ // also return the error code so that a server can cleanup is required...
+ return err;
+ }
+
+/**
+read data to buffer from message by index
+
+@param aMessage A reference to RMessage2 object
+@param aIndex Index of message object
+@param aBuf 8 bits data buffer to store data from message object
+@return Symbian standard error code
+@internalTechnology
+@released
+ */
+TInt MessageUtils::Read(const RMessage2& aMessage, const TInt aIndex, TDes8& aBuf)
+ {
+ TInt err = aMessage.Read(aIndex, aBuf); // assume a zero offset in the buffer
+ if(err)
+ {
+ PanicClient(aMessage, KServerMessageUtilsRead8, err);
+ }
+ // also return the error code so that a server can cleanup is required...
+ return err;
+ }
+
+/**
+Complete the message by sending a panic to client
+
+@param aMessage A reference to RMessage2 object
+@param aCat Panic category
+@param aReason Reason to panic the client
+@internalTechnology
+@released
+ */
+void MessageUtils::PanicClient(const RMessage2& aMessage, const TDesC& aCat, const TInt aReason)
+ {
+ aMessage.Panic(aCat, aReason); // will also complete the RMessage
+ }
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/internal/lbstestserver/src/rsecuresessionbase.cpp Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,96 @@
+// 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:
+// rsecureasbase.cpp
+//
+//
+
+#include <e32debug.h>
+#include "cserverlaunch.h"
+#include "rsecuresessionbase.h"
+#include "csecureasbase.h"
+#include "lbsmessageenums.h"
+#include "lbsdevloggermacros.h"
+
+/** Client side session object connects to the server by starting server with specified parameter
+keep trying to kick off the server!
+
+@param aParams A reference to TProcessStartParams object
+@return Symbian error code
+@see TProcessStartParams
+@internalTechnology
+@released
+ */
+TInt RSecureSessionBase::Connect(TServerStartParams& aParams)
+ {
+ // be very cunning :) This has to slot into the existing RPositionServer::Connect
+ // The parameter will have to morph into a local variable but that should be the only change
+ TInt ret;
+
+ TInt retry = 2;
+ FOREVER
+ {
+ TVersion version = Version();
+
+ ret = CreateSession(aParams.GetServerName(), version, aParams.GetNumberOfServerSlots());
+
+ if (ret != KErrNotFound && ret != KErrServerTerminated)
+ {
+ break;
+ }
+
+ if (--retry == 0)
+ {
+ break;
+ }
+
+ ret = StartServer(aParams);
+
+ if (ret != KErrAlreadyExists && ret != KErrNone)
+ {
+ break;
+ }
+ }
+ return ret;
+ }
+
+/** Client side session object close the session handler
+
+@internalTechnology
+@released
+ */
+void RSecureSessionBase::Close()
+ {
+ LBSLOG(ELogP1, "RSecureSessionBase::Close");
+ RHandleBase::Close();
+ }
+
+/**
+*/
+TInt RSecureSessionBase::StartServer(TServerStartParams& aParams)
+ {
+ return (CServerLaunch::ServerLaunch(aParams));
+ }
+
+
+//------------------------------------------------------------------------------
+
+/** Client side subsession object issue the subsession close request.
+
+@internalTechnology
+@released
+ */
+void RSecureSubSessionBase::Close()
+ {
+ CloseSubSession(ESecureSubSessionBaseClose);
+ }
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/internal/lbstestserver/src/tprocessstartparams.cpp Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,116 @@
+// 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:
+// tprocessstartparams.h
+//
+//
+
+#include "tprocessstartparams.h"
+#include <e32math.h>
+
+/** Initialise start process parameters
+@internalTechnology
+@released
+ */
+TProcessStartParams::TProcessStartParams() : iRendezvousRequired(EFalse)
+ {
+ SetType();
+ }
+
+/** set the rendezous requirement
+
+@internalTechnology
+@released
+ */
+ void TProcessStartParams::SetRendezvousRequired(TBool aRendezvousRequired)
+ {
+ iRendezvousRequired = aRendezvousRequired;
+ }
+
+/** Get the rendezous requirement
+
+@return TBool, Rendezvous property
+@internalTechnology
+@released
+ */
+ TBool TProcessStartParams::GetRendezvousRequired() const
+ {
+ return iRendezvousRequired;
+ }
+
+/** set the process file name
+
+@param aExeName The process file name
+@internalTechnology
+@released
+ */
+ void TProcessStartParams::SetProcessFileName(const TDesC& aExeName)
+ {
+ iProcessFileName = aExeName;
+ }
+
+/** Set the process name
+
+@param aProcessName The process name
+@internalTechnology
+@released
+ */
+ void TProcessStartParams::SetProcessName(const TDesC& aProcessName)
+ {
+ iProcessName = aProcessName;
+ }
+
+/** Get the process file name
+
+@return The process file name
+@internalTechnology
+@released
+ */
+ const TDesC& TProcessStartParams::GetProcessFileName() const
+ {
+ return iProcessFileName;
+ }
+
+/** Get the process name
+
+@return The process name
+@internalTechnology
+@released
+ */
+ const TDesC& TProcessStartParams::GetProcessName() const
+ {
+ return iProcessName;
+ }
+
+/** Get the command line buffer
+
+@return The descriptor to the commandline buffer
+@internalTechnology
+@released
+ */
+ TPtrC TProcessStartParams::GetAsCommandLine() const
+ {
+ TPtrC p(reinterpret_cast<const TText*>(this), sizeof(TProcessStartParams)/sizeof(TText));
+ return p;
+ }
+
+/**
+Fix the type of these params to KProcessStartParamsTypeUid
+
+@internalTechnology
+@released
+ */
+void TProcessStartParams::SetType()
+ {
+ TStartParamsBase::SetType(KProcessStartParamsTypeUid);
+ }
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/internal/lbstestserver/src/tserverstartparams.cpp Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,143 @@
+// 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:
+//
+
+#include "tserverstartparams.h"
+#include "e32math.h"
+
+/**
+Initailise Server start parameters with default message slots
+
+@internalTechnology
+@released
+ */
+TServerStartParams::TServerStartParams() : iNumberOfSlots(KServerFrameworkDefaultMessageSlots)
+ {
+ SetType();
+ }
+
+/**
+Set server file name
+
+@internalTechnology
+@released
+ */
+void TServerStartParams::SetServerFileName(const TDesC& aExeName)
+ {
+ iServerFileName = aExeName;
+ }
+
+/**
+Set server name
+
+@internalTechnology
+@released
+ */
+ void TServerStartParams::SetServerName(const TDesC& aServerName)
+ {
+ iServerName = aServerName;
+ }
+
+/**
+set number of message slots
+
+@internalTechnology
+@released
+ */
+ void TServerStartParams::SetNumberOfServerSlots(TInt aSlots)
+ {
+ iNumberOfSlots = aSlots;
+ }
+
+/**
+set server Uids
+
+@internalTechnology
+@released
+ */
+void TServerStartParams::SetServerUids(TUid aUid1, TUid aUid2, TUid aUid3)
+ {
+ TUidType uid(aUid1, aUid2, aUid3);
+ iUids = uid;
+ }
+
+/**
+get server file name
+
+@internalTechnology
+@released
+ */
+const TDesC& TServerStartParams::GetServerFileName()
+ {
+ return iServerFileName;
+ }
+
+/**
+get server name
+
+@internalTechnology
+@released
+ */
+const TDesC& TServerStartParams::GetServerName()
+ {
+ return iServerName;
+ }
+
+/**
+get number of message slots
+
+@internalTechnology
+@released
+ */
+TInt TServerStartParams::GetNumberOfServerSlots()
+ {
+ return iNumberOfSlots;
+ }
+
+/**
+get server start commandline buffer
+
+@return descriptor to the commandline buffer
+@internalTechnology
+@released
+ */
+TPtrC TServerStartParams::GetAsCommandLine() const
+ {
+ TPtrC p(reinterpret_cast<const TText*>(this), sizeof(TServerStartParams)/sizeof(TText));
+ TInt l = p.Length();
+ return p;
+ }
+
+/**
+get server uids
+
+@internalTechnology
+@released
+ */
+TUidType& TServerStartParams::GetServerUids()
+ {
+ return iUids;
+ }
+
+
+/**
+Fix the type of these params to KServerStartParamsTypeUid
+
+@internalTechnology
+@released
+ */
+void TServerStartParams::SetType()
+ {
+ TStartParamsBase::SetType(KServerStartParamsTypeUid);
+ }
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/internal/lbstestserver/src/tstartparamsbase.cpp Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,40 @@
+// 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:
+// Definition of class used to define server start parameters
+//
+//
+
+
+
+/**
+ @file
+ @internalTechnology
+*/
+
+#include "tstartparamsbase.h"
+
+TStartParamsBase::~TStartParamsBase()
+ {
+ // nothing to do - virtual placeholder
+ }
+
+const TUid TStartParamsBase::GetType() const
+ {
+ return iType;
+ }
+
+void TStartParamsBase::SetType(const TUid& aType)
+ {
+ iType = aType;
+ }
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/lbsclient/group/bld.inf Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,27 @@
+// 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:
+// This is the build file for the LBS client Tests
+//
+//
+
+#include "../lbsexeclient/group/bld.inf"
+
+PRJ_TESTEXPORTS
+../scripts/smoketest_lbs.script z:/smoketest/smoketest_lbs.script
+../scripts/setup_smoketest_lbs.script z:/smoketest/setup_smoketest_lbs.script
+
+../testdata/smoketest_lbs.ini z:/smoketest/smoketest_lbs.ini
+
+PRJ_TESTMMPFILES
+ctlbsclientserver.mmp
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/lbsclient/group/ctlbsclientserver.mmp Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,71 @@
+// 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 ctlbsclientserver.mmp
+// This is the make file for the LBS Client Tests
+// TODO: Ensure we update below:
+// CAPABILITY ALL -TCB
+// CAPABILITY WriteDeviceData ReadDeviceData
+//
+//
+
+CAPABILITY WriteDeviceData ReadDeviceData Location
+
+TARGET lbsclienttestserver.exe
+TARGETTYPE exe
+UID 0x1000007A 0x10282258
+VENDORID 0x70000001
+
+#include "../../common/group/ctlbscommon.mmp"
+
+USERINCLUDE ../inc
+//USERINCLUDE ../../lbsassdata/inc
+
+// Lbs Client framework code.
+SOURCEPATH ../src
+SOURCE ctlbsclientserver.cpp
+SOURCE ctlbsclientstep.cpp
+
+// Lbs Client test step code.
+SOURCE ctlbsclientstepsrvconnectclose.cpp
+SOURCE ctlbsclientstepnotifyposupdate.cpp
+SOURCE ctlbsclientstepopenclose.cpp
+SOURCE ctlbsclientstepsrvversion.cpp
+SOURCE ctlbsclientstepmodselect.cpp
+SOURCE ctlbsclientstepmodinfo.cpp
+SOURCE ctlbsclientsteplastknownpos.cpp
+SOURCE ctlbsclientstepmultireq.cpp
+SOURCE ctlbsclientgetlkpao.cpp
+SOURCE ctlbsclientnotifyposupdao.cpp
+SOURCE ctlbsclientstepmodstatus.cpp
+SOURCE ctlbsclientstepupdateoptions.cpp
+SOURCE ctlbsclientstepassistance.cpp
+SOURCE ctlbsclientstepcellbasednpud.cpp
+SOURCE ctlbsclientsteppartialupdate.cpp
+SOURCE ctlbsclientsteptracking.cpp
+SOURCE ctlbsclientstepignoreaccurracysetting.cpp
+SOURCE ctlbsclientstepignoreaccurracysettingtracking.cpp
+SOURCE ctlbsclientstep_reset_assistance.cpp
+
+// LBS libraries.
+LIBRARY lbsselflocate.lib
+LIBRARY lbsloccommon.lib
+LIBRARY lbsadmin.lib
+LIBRARY lbslocdatasource.lib
+LIBRARY lbsnetprotocol.lib
+LIBRARY lbsassistancedata.lib
+
+// LBS test libraries.
+LIBRARY lbstestutils.lib
+LIBRARY lbsnetsim.lib
+LIBRARY lbstestclient.lib
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/lbsclient/inc/ctlbsclienteventtimer.h Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,126 @@
+/*
+* Copyright (c) 2001-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:
+*
+*/
+
+
+
+#ifndef __CT_LBS_CLIENT_EVENT_TIMER_H__
+#define __CT_LBS_CLIENT_EVENT_TIMER_H__
+
+// INCLUDES
+#include <e32base.h>
+#include <testexecutelogger.h>
+
+// CONSTANTS
+
+// FORWARD DECLARATIONS
+class MCT_LbsRequestObserver;
+
+// CLASS DECLARATION
+
+/**
+* This class is used to time the notification dialog
+*
+*/
+class CT_LbsClientEventTimer : public CActive
+ {
+ private: // Constructors
+
+ /**
+ * C++ default constructor.
+ */
+ CT_LbsClientEventTimer();
+
+ /**
+ * By default EPOC constructor is private.
+ */
+ void ConstructL(CTestExecuteLogger& aLogger);
+
+ // By default, prohibit copy constructor
+ CT_LbsClientEventTimer( const CT_LbsClientEventTimer& );
+ // Prohibit assigment operator
+ CT_LbsClientEventTimer& operator= ( const CT_LbsClientEventTimer& );
+ // Logger interface used for constructing result strings to be fed for the logger instance
+ inline CTestExecuteLogger& Logger() {return iLogger;};
+
+ public: // Constructors and destructor
+
+ /**
+ * Two-phased constructor.
+ */
+ static CT_LbsClientEventTimer* NewL(CTestExecuteLogger& aLogger);
+
+ /**
+ * Two-phased constructor.
+ */
+ static CT_LbsClientEventTimer* NewLC(CTestExecuteLogger& aLogger);
+
+ /**
+ * Destructor.
+ */
+ ~CT_LbsClientEventTimer();
+
+ public: // New functions
+
+ /**
+ * Start the timer
+ */
+ void Start(TInt aTimeout);
+
+ TInt CompletionCode() const;
+
+ void ResetCompletionCode();
+
+ /**
+ * Set who is observing timeouts
+ * @param aObserver the observing object
+ */
+ void SetObserver(
+ /* IN */ MCT_LbsRequestObserver* aObserver
+ );
+
+ protected: // Functions from base classes
+
+ /**
+ * From CActive
+ */
+ void RunL();
+
+ /**
+ * From CActive
+ */
+ TInt RunError(TInt aError);
+
+ /**
+ * From CActive
+ */
+ void DoCancel();
+
+ protected: // New functions
+
+ void RequestComplete();
+
+ private: // Data
+ RTimer iTimer;
+ MCT_LbsRequestObserver* iObserver;
+ TInt iCompletionCode;
+
+ CTestExecuteLogger iLogger;
+ };
+
+#endif // __CT_LBS_CLIENT_EVENT_TIMER_H__
+
+// End of File
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/lbsclient/inc/ctlbsclientgetlkpao.h Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,69 @@
+/**
+* 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:
+* This contains the header file for Get last known position
+*
+*
+*/
+
+
+
+
+
+/**
+ @file ctlbsclientgetlastknownposao.h
+*/
+#if (!defined __CT_LBS_CLIENT_LAST_KNOWN_POS_AO_H__)
+#define __CT_LBS_CLIENT_LAST_KNOWN_POS_AO_H__
+
+#include <e32base.h>
+#include <lbs.h>
+
+class MT_GetLastKnownPosObserver
+ {
+ public:
+ virtual void GetLastKnownPositionCallback(TRequestStatus& aStatus) = 0;
+ };
+
+
+class CT_LbsClientGetLastKnownPosAO: public CActive
+ {
+public:
+ ~CT_LbsClientGetLastKnownPosAO();
+ static CT_LbsClientGetLastKnownPosAO* NewL(MT_GetLastKnownPosObserver& aUser);
+ // wrapper for async positioner function GetLastKnownPosition()
+ void GetLastKnownPosL(RPositioner& aPositioner, TPositionInfo& aPosInfo);
+
+protected:
+// CActive:
+ // Redeclares the base class CActive::DoCancel().
+ virtual void DoCancel();
+ // Redeclares the base class CActive::RunL().
+ virtual void RunL();
+ // Redeclares the base class CActive::RunError().
+ virtual TInt RunError(TInt aError);
+
+private:
+ // our status, so we know when request completes:
+ // positioner currently in use:
+ RPositioner iPositioner;
+ // type of request outstanding:
+ TInt iRequestId;
+ // caller
+ MT_GetLastKnownPosObserver& iCaller;
+
+ CT_LbsClientGetLastKnownPosAO(MT_GetLastKnownPosObserver& aCaller);
+ };
+
+#endif // _CT_LBS_CLIENT_LAST_KNOWN_POS_AO_H_
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/lbsclient/inc/ctlbsclientnotifyposupdao.h Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,72 @@
+/**
+* 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 ctlbsclientnotifyposupdao.h
+*/
+#if (!defined __CT_LBS_CLIENT_NOTIFY_POS_UPD_AO_H__)
+#define __CT_LBS_CLIENT_NOTIFY_POS_UPD_AO_H__
+
+#include <e32base.h>
+#include <lbs.h>
+
+
+class MT_NotifyPosUpdateObserver
+ {
+ public:
+ virtual void NotifyPositionUpdateCallback(TRequestStatus& aStatus) = 0;
+ };
+
+
+class CT_LbsClientNotifyPosUpdAO: public CActive
+ {
+public:
+ // destructor
+ ~CT_LbsClientNotifyPosUpdAO();
+
+ // constructor
+ static CT_LbsClientNotifyPosUpdAO* NewL(MT_NotifyPosUpdateObserver& aCaller);
+
+ // wrapper for async positioner function NotifyPositionUpdate()
+ void CT_LbsClientNotifyPosUpdAO::NotifyPosUpdateL(RPositioner& aPositioner, TPositionInfo& aPosInfo);
+
+protected:
+// CActive:
+ // Redeclares the base class CActive::DoCancel().
+ virtual void DoCancel();
+ // Redeclares the base class CActive::RunL().
+ virtual void RunL();
+ // Redeclares the base class CActive::RunError().
+ virtual TInt RunError(TInt aError);
+
+private:
+ // our status, so we know when request completes:
+ // positioner currently in use:
+ RPositioner iPositioner;
+ // type of request outstanding:
+ TInt iRequestId;
+ // caller
+ MT_NotifyPosUpdateObserver& iCaller;
+
+ CT_LbsClientNotifyPosUpdAO(MT_NotifyPosUpdateObserver& aCaller);
+ };
+
+#endif // __CT_LBS_CLIENT_NOTIFY_POS_UPD_AO_H__
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/lbsclient/inc/ctlbsclientobserver.h Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,99 @@
+/*
+* Copyright (c) 2002-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:
+*
+*/
+
+
+
+#ifndef __CT_LBS_CLIENT_OBSERVER_H__
+#define __CT_LBS_CLIENT_OBSERVER_H__
+
+// INCLUDES
+#include <e32base.h>
+
+// CONSTANTS
+
+// FORWARD DECLARATIONS
+
+// CLASS DECLARATION
+
+/**
+* ?one_line_short_description.
+* ?other_description_lines
+*/
+class CT_LbsClientObserver : public CBase
+ {
+ public: // New functions
+
+ /**
+ * Waits for EPos server to shut down. If it is
+ * not running this method will return instantaneously.
+ */
+ static void WaitForEPosShutdown();
+
+ /**
+ * Pushes WaitForEPosShutdown to the cleanup stack. It is useful when
+ * other cleanup items are dependent on EPos having released all its
+ * resources
+ */
+ static void EPosShutdownWaitPushL();
+
+ /**
+ * Checks if EPos server is alive.
+ */
+ static TBool EPosAliveL();
+
+ /**
+ * Waits for privacy server to shut down. If it is
+ * not running this method will return instantaneously.
+ */
+ static void WaitForPrivacyServerShutdown();
+
+ /**
+ * Pushes WaitForPrivacyServerShutdown to the cleanup stack. It is useful
+ * when other cleanup items are dependent on EPos having released all its
+ * resources
+ */
+ static void PrivacyServerShutdownWaitPushL();
+
+ /**
+ * Checks if privacy server is alive.
+ */
+ static TBool PrivacyServerAliveL();
+
+ private: // New functions
+
+ /**
+ * Waits for a process to die. If the process is
+ * not running this method will return instantaneously.
+ * @param aProcessName The name of the process.
+ */
+ static void WaitForProcessDeath(
+ /* IN */ const TDesC& aProcessName
+ );
+
+ /**
+ * Checks if a process is alive.
+ * @param aProcessName The name of the process.
+ */
+ static TBool ProcessAliveL(
+ /* IN */ const TDesC& aProcessName
+ );
+
+ };
+
+#endif // __CT_LBS_CLIENT_OBSERVER_H__
+
+// End of File
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/lbsclient/inc/ctlbsclientperiodictester.h Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,253 @@
+/*
+* Copyright (c) 2002-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:
+*
+*/
+
+
+
+#ifndef __CT_LBS_CLIENT_PERIODIC_TESTER_H__
+#define __CT_LBS_CLIENT_PERIODIC_TESTER_H__
+
+// INCLUDES
+#include <e32base.h>
+#include <e32std.h>
+
+#include "Lbs.h"
+
+// CONSTANTS
+
+#ifdef __WINS__
+const TInt KToleratedEarliness = 400000; //0.4 s
+#endif
+
+const TInt KTracePeriod = 10;
+
+// FORWARD DECLARATIONS
+class CT_LbsClientLog;
+
+// CLASS DECLARATION
+
+/**
+* Helper class for periodic update tests
+*
+*/
+class CT_LbsClientPeriodicTester : public CActive
+ {
+ public: // Constructors and destructor
+
+ /**
+ * Two-phased constructor.
+ */
+ static CT_LbsClientPeriodicTester* NewL(
+ /* IN */ TTimeIntervalMicroSeconds aInterval,
+ /* IN */ const TDesC& aSericeName,
+ /* IN */ CT_LbsClientLog* aLog,
+ /* IN */ TUid aUid,
+ /* IN */ TInt aNumberOfRuns
+ );
+
+ /**
+ * Destructor.
+ */
+ virtual ~CT_LbsClientPeriodicTester();
+
+ public: // New functions
+
+ /**
+ * Requests notification from positioner and set the active flag true.
+ */
+ void RequestNotification();
+
+ /**
+ * Changes current test parameters. Can only be called when previous test is completed
+ */
+ void ChangeTestParametersL(
+ /* IN */ TTimeIntervalMicroSeconds aInterval,
+ /* IN */ TInt aNumberOfRuns
+ );
+
+ /**
+ * Changes name in requestor information.
+ */
+ void ChangeRequestorInformation(
+ /* IN */ const TDesC& aServiceName
+ );
+
+ /**
+ * Closes the positioner
+ */
+ void ClosePositioner();
+
+ /**
+ * Opens the positioner
+ */
+ void OpenPositionerL(
+ /* IN */ const TDesC& aServiceName
+ );
+
+ /**
+ * Sets the maxage parameter in position update options
+ */
+ void SetMaxAgeL(
+ /* IN */ TTimeIntervalMicroSeconds aInterval
+ );
+
+ /**
+ * Sets the partial update parameter in position update options
+ */
+ void SetPartialUpdateL(
+ /* IN */ TBool aUpdateOption
+ );
+
+ /**
+ * Sets the timeout parameter in position update options
+ */
+ void SetTimeOutL(
+ /* IN */ TTimeIntervalMicroSeconds aInterval
+ );
+
+ /**
+ * Changes the update interval before the previous interval has completed one time
+ */
+ void SetChangeParametersPrematurely(
+ /* IN */ TBool aCondition
+ );
+
+ /**
+ * A way to determine if any error has happened.
+ */
+ TBool IsCompletedOK();
+
+ /**
+ * Get errorcode if error has occurred.
+ */
+ TInt GetError();
+
+ /**
+ * Cancels periodic requests from EPos Server
+ */
+ void CancelRequest();
+
+ /**
+ * Returns the position from the latest notift position request
+ */
+ void GetPosition(TPositionInfo& aPosInfo);
+
+
+ public: // Functions from CActive
+
+ /**
+ * From CActive Service completed request.
+ * Defined as pure virtual by CActive;
+ * implementation provided by this class,
+ */
+ void RunL();
+
+ /**
+ * From CActive Cancel request.
+ * Defined as pure virtual by CActive;
+ * implementation provided by this class.
+ */
+ TInt RunError(TInt aError);
+
+ /**
+ * From CActive Cancel request.
+ * Defined as pure virtual by CActive;
+ * implementation provided by this class.
+ */
+ void DoCancel();
+
+ private:
+
+ /**
+ * C++ default constructor.
+ */
+ CT_LbsClientPeriodicTester();
+
+ /**
+ * By default Symbian 2nd phase constructor is private.
+ */
+ void ConstructL(
+ /* IN */ TTimeIntervalMicroSeconds aInterval,
+ /* IN */ const TDesC& aServiceName,
+ /* IN */ CT_LbsClientLog* aLog,
+ /* IN */ TUid aUid,
+ /* IN */ TInt aNumberOfRuns
+ );
+
+ /**
+ * Evaluates condition, logs and leaves if false.
+ */
+ void AssertTrueL(
+ /* IN */ TBool aCondition,
+ /* IN */ const TDesC& aErrorMsg,
+ /* IN */ TInt aErrorCode
+ );
+
+
+ private: // Data
+ // EPos server instance
+ RPositionServer iPosServer;
+
+ // Positioner instance
+ RPositioner iPositioner;
+
+ // Position information to be sent with NotifyPositionUpdate
+ TPositionInfo iPositionInfo;
+
+ // Number of periodic updates to request
+ TInt iNumberOfUpdates;
+
+ // Number of periodic updates received
+ TInt iNumberOfRuns;
+
+ // Tells if the test is going to end prematurely with a chage of update interval
+ TBool iPrematureChangeOfParameters;
+
+ // Tells if the outstanding request is going to be canceled
+ TBool iCancelRequest;
+
+ // Tells if the outstanding request has been canceled
+ TBool iCanceledRequest;
+
+ // Tells if to write messages to log
+ TBool iWriteToLog;
+
+ // The time for when the most recent position update was received
+ TTime iRecentTime;
+
+ // The interval to request position updates between
+ TTimeIntervalMicroSeconds iInterval;
+
+ // Test log
+ CT_LbsClientLog* iLog;
+
+ // The name of the positioner
+ TBuf<100> iName;
+
+ // The uid of the positioner
+ TUid iUid;
+
+ //Error indication
+ TBool iError;
+
+ //Error indication
+ TInt iErrorCode;
+
+ };
+
+#endif // __CT_LBS_CLIENT_PERIODIC_TESTER_H__
+
+// End of File
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/lbsclient/inc/ctlbsclientportedsuiteserver.h Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,91 @@
+// 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 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:
+// ctlbsclientportedserver.h
+// Test server for ported client tests
+//
+//
+
+#ifndef __CT_LBS_CLIENT_PORTED_SERVER_H__
+#define __CT_LBS_CLIENT_PORTED_SERVER_H__
+
+#include <TestExecuteServerBase.h>
+
+#include "ctlbsserver.h"
+
+// CONSTANTS
+_LIT(KTestProcedure1, "TP1");
+_LIT(KTestProcedure2, "TP2");
+_LIT(KTestProcedure11, "TP11");
+_LIT(KTestProcedure17, "TP17");
+_LIT(KTestProcedure21, "TP21");
+_LIT(KTestProcedure22, "TP22");
+_LIT(KTestProcedure25, "TP25");
+_LIT(KTestProcedure27, "TP27");
+_LIT(KTestProcedure76, "TP76");
+_LIT(KTestProcedure93, "TP93");
+_LIT(KTestProcedure169, "TP169");
+_LIT(KTestProcedure173, "TP173");
+_LIT(KTestProcedure176, "TP176");
+_LIT(KTestProcedure178, "TP178");
+_LIT(KTestProcedure179, "TP179");
+_LIT(KTestProcedure188, "TP188");
+_LIT(KTestProcedure189, "TP189");
+_LIT(KTestProcedure193, "TP193");
+_LIT(KTestProcedure194, "TP194");
+_LIT(KTestProcedure195, "TP195");
+_LIT(KTestProcedure201, "TP201");
+_LIT(KTestProcedure203, "TP203");
+_LIT(KTestProcedure204, "TP204");
+_LIT(KTestProcedure208, "TP208");
+_LIT(KTestProcedure213, "TP213");
+_LIT(KTestProcedure217, "TP217");
+_LIT(KTestProcedure218, "TP218");
+_LIT(KTestProcedure222, "TP222");
+_LIT(KTestProcedure223, "TP223");
+_LIT(KTestProcedure224, "TP224");
+_LIT(KTestProcedure227, "TP227");
+_LIT(KTestProcedure254, "TP254");
+_LIT(KTestProcedure256, "TP256");
+_LIT(KTestProcedure257, "TP257");
+_LIT(KTestProcedure259, "TP259");
+_LIT(KTestProcedure261, "TP261");
+_LIT(KTestProcedure269, "TP269");
+_LIT(KTestProcedure271, "TP271");
+_LIT(KTestProcedure272, "TP272");
+_LIT(KTestProcedure274, "TP274");
+_LIT(KTestProcedure275, "TP275");
+_LIT(KTestProcedure4701, "TP4701");
+_LIT(KTestProcedure4702, "TP4702");
+_LIT(KTestProcedure4703, "TP4703");
+_LIT(KTestProcedure4704, "TP4704");
+_LIT(KTestProcedure4705, "TP4705");
+_LIT(KTestProcedure4706, "TP4706");
+_LIT(KTestProcedure4707, "TP4707");
+_LIT(KTestProcedure4708, "TP4708");
+_LIT(KTestProcedure4709, "TP4709");
+_LIT(KTestProcedure4722, "TP4722");
+_LIT(KTestProcedure4723, "TP4723");
+
+class CT_LbsClientPortedSuite : public CT_LbsServer
+ {
+public:
+ static CT_LbsClientPortedSuite* NewL();
+ // Base class pure virtual override
+ virtual CTestStep* CreateTestStep(const TDesC& aStepName);
+
+// Please Add/modify your class members
+private:
+ };
+
+#endif // __CT_LBS_CLIENT_PORTED_SERVER_H__
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/lbsclient/inc/ctlbsclientpositionconstants.h Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,62 @@
+/*
+* Copyright (c) 2001-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:
+*
+*/
+
+
+
+#ifndef __CT_LBS_CLIENT_POSITION_CONSTANTS_H__
+#define __CT_LBS_CLIENT_POSITION_CONSTANTS_H__
+
+
+// CONSTANTS
+const TReal32 KHorizontalAcc = 40;
+const TReal32 KVerticalAcc = 40;
+
+const TReal64 KLatitude = 2;
+const TReal64 KLongitude = 3;
+const TReal32 KAltitude = 200;
+
+_LIT(KPositionTime, "20801027:161600");//YYYYMMDD:HHMMSS.MMMMMM
+
+const TReal32 KSpeed = 20;
+const TReal32 KHeading = 30;
+const TReal32 KSpeedAcc = 2;
+const TReal32 KHeadingAcc = 3;
+
+const TInt KSatelliteId = 30;
+const TReal32 KAzimuth = 30;
+const TReal32 KElevation = 30;
+const TBool KIsUsed = ETrue;
+const TInt KSignalStrength = 10;
+
+const TReal32 KAzimuthOdd = 35;
+const TReal32 KElevationOdd = 35;
+const TBool KIsUsedOdd = EFalse;
+const TInt KSignalStrengthOdd = 5;
+
+const TUint KNumberOfSatellitesInView = 12;
+const TUint KNumberOfSatellitesUsed = 6;
+_LIT(KSatelliteTime, "20021027:161600");
+const TReal32 KHorizontalDoPValue = 1;
+const TReal32 KVerticalDoPValue = 2;
+const TReal32 KTimeDoPValue = 20;
+
+_LIT(KModuleName, "Multi PSY");
+
+
+#endif // __CT_LBS_CLIENT_POSITION_CONSTANTS_H__
+
+// End of File
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/lbsclient/inc/ctlbsclientpostp1.h Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,73 @@
+/*
+* Copyright (c) 2001-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:
+*
+*/
+
+
+
+#ifndef __CT_LBS_CLIENT_POS_TP1_H__
+#define __CT_LBS_CLIENT_POS_TP1_H__
+
+// INCLUDES
+#include "ctlbsportedstepbase.h"
+
+// FORWARD DECLARATIONS
+
+// CLASS DECLARATION
+/**
+* Test procedure 1
+*
+*/
+class CT_LbsClientPosTp1 :public CT_LbsPortedStepBase
+ {
+ public: // Constructors and destructor
+
+ /**
+ * C++ default constructor.
+ */
+ CT_LbsClientPosTp1(CT_LbsServer& aParent);
+
+ /**
+ * Destructor.
+ */
+ ~CT_LbsClientPosTp1();
+
+ public: // Functions from base classes
+
+ /**
+ * From CT_LbsPortedStepBase
+ * Deinitializes the test.
+ */
+ void CloseTest();
+
+ /**
+ * From CT_LbsPortedStepBase
+ * Runs the test in the module
+ */
+ void StartL();
+
+ private: // New functions
+
+ /**
+ * Leaves if aCondition is false.
+ * @param aCondition something that should be true
+ */
+ void AssertTrueL(TBool aCondition, const TDesC& aErrorMsg, TInt aErrorCode);
+
+ };
+
+#endif // __CT_LBS_CLIENT_POS_TP1_H__
+
+// End of File
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/lbsclient/inc/ctlbsclientpostp11.h Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,73 @@
+/*
+* Copyright (c) 2001-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:
+*
+*/
+
+
+
+#ifndef __CT_LBS_CLIENT_POS_TP11_H__
+#define __CT_LBS_CLIENT_POS_TP11_H__
+
+// INCLUDES
+#include "ctlbsportedstepbase.h"
+
+// CLASS DECLARATION
+
+/**
+* Test procedure 11
+*/
+class CT_LbsClientPosTp11 : public CT_LbsPortedStepBase
+ {
+ public: // Constructors and destructor
+
+ /**
+ * C++ default constructor.
+ */
+ CT_LbsClientPosTp11(CT_LbsServer& aParent);
+
+ /**
+ * Destructor.
+ */
+ ~CT_LbsClientPosTp11();
+
+ public: // Functions from base classes
+
+ /**
+ * From CT_LbsPortedStepBase
+ * Runs the test in the module
+ */
+ void StartL();
+
+ private: // New functions
+
+ /**
+ * Checks that EPos is alive, or that it is not alive
+ */
+ void CheckEPosActivityL(
+ TBool aExpectEPosLiveness
+ );
+
+ /**
+ * Checks if the server with name aServerName is alive
+ */
+ TBool ServerAliveL(const TDesC& aServerName);
+
+ TFileName SearchAndReturnCompleteFileName(const TDesC& aFileName);
+
+ };
+
+#endif // __CT_LBS_CLIENT_POS_TP11_H__
+
+// End of File
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/lbsclient/inc/ctlbsclientpostp169.h Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,81 @@
+/*
+* Copyright (c) 2001-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:
+*
+*/
+
+
+
+#ifndef __CT_LBS_CLIENT_POS_TP169_H__
+#define __CT_LBS_CLIENT_POS_TP169_H__
+
+// INCLUDES
+#include "ctlbsportedstepbase.h"
+
+// FORWARD DECLARATIONS
+
+// CLASS DECLARATION
+
+/**
+* Test procedure 169
+*
+*/
+class CT_LbsClientPosTp169 :public CT_LbsPortedStepBase
+ {
+ public: // Constructors and destructor
+
+ /**
+ * C++ default constructor.
+ */
+ CT_LbsClientPosTp169(CT_LbsServer& aParent);
+
+ /**
+ * Destructor.
+ */
+ ~CT_LbsClientPosTp169();
+
+ public: // Functions from base classes
+
+ /**
+ * From CT_LbsPortedStepBase
+ * Runs the test in the module
+ */
+ void StartL();
+
+ private: // New functions
+
+ /**
+ * Leaves if aCondition is false.
+ * @param aCondition something that should be true
+ */
+ void AssertTrueL(TBool aCondition, const TDesC& errorMsg);
+
+ /**
+ * Leaves if aCondition is false.
+ * @param aCondition something that should be true
+ */
+ void AssertTrueSecL(TBool aCondition, const TDesC& aErrorMsg, TInt aErrorCode);
+
+ /**
+ * This testpart tests error report "ESLI-5W9D7M Poison4 - Sort order after full reset"
+ * verifies that the Horizontal/Vertical accuracy 0 value is returned as NaN when reading
+ * the value from the modulesdb, uses the panic psy which has values 0 for
+ * horizontal and vertical accuracy
+ */
+ void TestNaNFromPSY();
+ };
+
+#endif // __CT_LBS_CLIENT_POS_TP169_H__
+
+// End of File
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/lbsclient/inc/ctlbsclientpostp17.h Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,62 @@
+/*
+* Copyright (c) 2001-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:
+*
+*/
+
+
+
+#ifndef __CT_LBS_CLIENT_POS_TP17_H__
+#define __CT_LBS_CLIENT_POS_TP17_H__
+
+// INCLUDES
+#include "ctlbsportedstepbase.h"
+
+// FORWARD DECLARATIONS
+
+// CLASS DECLARATION
+
+/**
+* Test procedure 17
+*
+*/
+class CT_LbsClientPosTp17 : public CT_LbsPortedStepBase
+ {
+ public: // Constructors and destructor
+
+ /**
+ * C++ default constructor.
+ */
+ CT_LbsClientPosTp17(CT_LbsServer& aParent);
+
+ /**
+ * Destructor.
+ */
+ ~CT_LbsClientPosTp17();
+
+ public: // Functions from base classes
+
+ /**
+ * From CT_LbsPortedStepBase
+ * Runs the test in the module
+ */
+ void StartL();
+
+ private: // New functions
+
+ };
+
+#endif // __CT_LBS_CLIENT_POS_TP17_H__
+
+// End of File
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/lbsclient/inc/ctlbsclientpostp173.h Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,164 @@
+/*
+* Copyright (c) 2001-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:
+*
+*/
+
+
+
+#ifndef __CT_LBS_CLIENT_POS_TP173_H__
+#define __CT_LBS_CLIENT_POS_TP173_H__
+
+// INCLUDES
+#include "ctlbsportedstepbase.h"
+#include "EPos_MPosModulesObserver.h"
+
+// FORWARD DECLARATIONS
+
+// CLASS DECLARATION
+
+/**
+* Test procedure 173
+*
+*/
+class CT_LbsClientPosTp173 : public CT_LbsPortedStepBase, public MPosModulesObserver
+ {
+ public: // Constructors and destructor
+
+ /**
+ * C++ default constructor.
+ */
+ CT_LbsClientPosTp173(CT_LbsServer& aParent);
+
+ /**
+ * Destructor.
+ */
+ ~CT_LbsClientPosTp173();
+
+ public: // Functions from base classes
+
+ /**
+ * From CT_LbsPortedStepBase
+ * Runs the test in the module
+ */
+ void StartL();
+
+ public: // New Functions
+
+ /**
+ * Timeout request if the no notification has been sent
+ * by the server.
+ */
+ void NotifyTimeout();
+
+ void HandleSettingsChangeL(TPosModulesEvent);
+
+ /**
+ * Leaves if aCondition is false.
+ * @param aCondition something that should be true
+ */
+ void AssertTrueL(TBool aCondition, const TDesC& errorMsg);
+
+ /**
+ * Leaves if aCondition is false.
+ * @param aCondition something that should be true
+ */
+ void AssertTrueSecL(TBool aCondition, const TDesC& aErrorMsg, TInt aErrorCode);
+
+ void CheckErrorL();
+
+ void DoEventHandlingL();
+
+ protected:
+
+ TBool iNoEvents;
+ TBool iError;
+ TBuf<200> iErrorText;
+
+ private:
+
+ TInt iEvent;
+
+ };
+
+//// CLASS DECLARATION
+
+/**
+ *
+ */
+class CMyNotificationTimer : public CTimer
+ {
+ public:
+
+ /**
+ * Destructor.
+ */
+ virtual ~CMyNotificationTimer();
+
+ public:
+
+ /**
+ * Two-phased constructor.
+ */
+ static CMyNotificationTimer* NewLC(CT_LbsClientPosTp173* aMainControl);
+
+ /**
+ * Two-phased constructor.
+ */
+ static CMyNotificationTimer* NewL(CT_LbsClientPosTp173* aMainControl);
+
+ public:
+
+ /**
+ * Starts the power checking timer
+ */
+ void StartNotificationTimer();
+
+ /**
+ * Cancel the power checking timer.
+ */
+ void DoCancel();
+
+ private:
+
+ /**
+ * EPOC constructor.
+ */
+ void ConstructL();
+
+ /**
+ * C++ default constructor.
+ */
+ CMyNotificationTimer(CT_LbsClientPosTp173* aMainControl);
+
+ /**
+ * From CActive. Handles an active object’s request completion
+ * event.
+ */
+ void RunL();
+
+ //Prohibit copy constructor
+ CMyNotificationTimer( const CMyNotificationTimer& );
+ // Prohibit assigment operator
+ CMyNotificationTimer& operator= ( const CMyNotificationTimer& );
+
+ private:
+ // a handler to the communicator
+ CT_LbsClientPosTp173* iMainControl;
+ TInt iNotificationTimout;
+ };
+
+#endif // __CT_LBS_CLIENT_POS_TP173_H__
+
+// End of File
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/lbsclient/inc/ctlbsclientpostp176.h Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,83 @@
+/*
+* Copyright (c) 2002-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:
+*
+*/
+
+
+
+#ifndef __CT_LBS_CLIENT_POS_TP176_H__
+#define __CT_LBS_CLIENT_POS_TP176_H__
+
+// INCLUDES
+#include "ctlbsportedstepbase.h"
+
+// CONSTANTS
+
+// FORWARD DECLARATIONS
+
+// CLASS DECLARATION
+
+/**
+* Test procedure 176
+*
+*/
+class CT_LbsClientPosTp176 : public CT_LbsPortedStepBase
+ {
+ public: // Constructors and destructor
+
+ /**
+ * C++ default constructor.
+ */
+ CT_LbsClientPosTp176(CT_LbsServer& aParent);
+
+ /**
+ * Destructor.
+ */
+ ~CT_LbsClientPosTp176();
+
+ public: // Functions from base classes
+
+ /**
+ * From CT_LbsPortedStepBase
+ * Called after the tests
+ */
+ void CloseTest();
+
+ /**
+ * From CT_LbsPortedStepBase
+ * Called after the tests
+ */
+ void InitTestL();
+
+ /**
+ * From CT_LbsPortedStepBase
+ * Runs the test in the module
+ */
+ void StartL();
+
+
+ private:
+
+ TBool IsQualityUpdatedL(TUid aUid);
+
+ private: // Data
+ TPositionQuality iQuality;
+ TPositionQuality iQualityTestPsy1;
+
+ };
+
+#endif // __CT_LBS_CLIENT_POS_TP176_H__
+
+// End of File
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/lbsclient/inc/ctlbsclientpostp178.h Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,87 @@
+/*
+* Copyright (c) 2001-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:
+*
+*/
+
+
+
+#ifndef __CT_LBS_CLIENT_POS_TP178_H__
+#define __CT_LBS_CLIENT_POS_TP178_H__
+
+// INCLUDES
+#include "ctlbsportedstepbase.h"
+
+// CONSTANTS
+
+// FORWARD DECLARATIONS
+
+// CLASS DECLARATION
+
+/**
+* Test procedure 178
+*
+*/
+class CT_LbsClientPosTp178 : public CT_LbsPortedStepBase
+ {
+ public: // Constructors and destructor
+
+ /**
+ * C++ default constructor.
+ */
+ CT_LbsClientPosTp178(CT_LbsServer& aParent);
+
+ /**
+ * Destructor.
+ */
+ ~CT_LbsClientPosTp178();
+
+ public: // Functions from base classes
+
+ /**
+ * From CT_LbsPortedStepBase
+ * Runs the test in the module
+ */
+ void StartL();
+
+ /**
+ * From CT_LbsPortedStepBase
+ * Always called after the test, even if the test leaves
+ */
+ void CloseTest();
+
+ private: // New functions
+
+ /**
+ * Test that the positioner does a timeout
+ * after the set update interval and that the request is not logged
+ * in the request log
+ */
+ void TestTimeoutL();
+
+ /**
+ * Test that it is possible to cancel
+ * an outstanding request, and that the request is not logged
+ * in the request log
+ */
+ void TestCancelL();
+
+ void TestOptionL();
+
+ private:
+ };
+
+#endif // __CT_LBS_CLIENT_POS_TP178_H__
+
+// End of File
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/lbsclient/inc/ctlbsclientpostp179.h Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,66 @@
+/*
+* Copyright (c) 2001-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:
+*
+*/
+
+
+
+#ifndef __CT_LBS_CLIENT_POS_TP179_H__
+#define __CT_LBS_CLIENT_POS_TP179_H__
+
+// INCLUDES
+#include "ctlbsportedstepbase.h"
+
+// CONSTANTS
+
+// CLASS DECLARATION
+
+/**
+* Test procedure 179
+*
+*/
+class CT_LbsClientPosTp179 : public CT_LbsPortedStepBase
+ {
+ public: // Constructors and destructor
+
+ /**
+ * C++ default constructor.
+ */
+ CT_LbsClientPosTp179(CT_LbsServer& aParent);
+
+ /**
+ * Destructor.
+ */
+ ~CT_LbsClientPosTp179();
+
+ public: // Functions from base classes
+
+ /**
+ * From CT_LbsPortedStepBase
+ * Called after the tests
+ */
+ void CloseTest();
+
+ /**
+ * From CT_LbsPortedStepBase
+ * Runs the test in the module
+ */
+ void StartL();
+
+ };
+
+#endif // __CT_LBS_CLIENT_POS_TP179_H__
+
+// End of File
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/lbsclient/inc/ctlbsclientpostp188.h Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,75 @@
+/*
+* Copyright (c) 2001-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:
+*
+*/
+
+
+
+#ifndef __CT_LBS_CLIENT_POS_TP188_H__
+#define __CT_LBS_CLIENT_POS_TP188_H__
+
+// INCLUDES
+#include "ctlbsportedstepbase.h"
+
+// CONSTANTS
+
+// CLASS DECLARATION
+
+/**
+* Test procedure 188
+*
+*/
+class CT_LbsClientPosTp188 : public CT_LbsPortedStepBase
+ {
+ public: // Constructors and destructor
+
+ /**
+ * C++ default constructor.
+ */
+ CT_LbsClientPosTp188(CT_LbsServer& aParent);
+
+ /**
+ * Destructor.
+ */
+ ~CT_LbsClientPosTp188();
+
+ public: // Functions from base classes
+
+ /**
+ * From CT_LbsPortedStepBase
+ * Runs the test in the module
+ */
+ void StartL();
+
+ private: // New functions
+
+ /**
+ * Prints the current Module status to log and compare it
+ * to iModuleStatus
+ *
+ * @param aStatus The current status reported to write to log
+ */
+ void CheckModuleStatusL(
+ /* IN */ const TPositionModuleStatus& aStatus
+ );
+
+ private:
+ TPositionModuleStatus iModuleStatus;
+
+ };
+
+#endif // __CT_LBS_CLIENT_POS_TP188_H__
+
+// End of File
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/lbsclient/inc/ctlbsclientpostp189.h Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,84 @@
+/*
+* Copyright (c) 2001-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:
+*
+*/
+
+
+
+#ifndef __CT_LBS_CLIENT_POS_TP189_H__
+#define __CT_LBS_CLIENT_POS_TP189_H__
+
+// INCLUDES
+#include "ctlbsportedstepbase.h"
+
+// CONSTANTS
+
+// CLASS DECLARATION
+
+/**
+* Test procedure 189
+*
+*/
+class CT_LbsClientPosTp189 : public CT_LbsPortedStepBase
+ {
+ public: // Constructors and destructor
+
+ /**
+ * C++ default constructor.
+ */
+ CT_LbsClientPosTp189(CT_LbsServer& aParent);
+
+ /**
+ * Destructor.
+ */
+ ~CT_LbsClientPosTp189();
+
+ public: // Functions from base classes
+
+ /**
+ * From CT_LbsPortedStepBase
+ * Runs the test in the module
+ */
+ void StartL();
+
+ private: // New functions
+
+ /**
+ * Prints the current Module status to log
+ * @param aStatus The current status reported to write to log
+ */
+ void CheckModuleStatusL(
+ /* IN */ const TPositionModuleStatus& aStatus,
+ /* IN */ const TBool aCheckStatus = EFalse
+ );
+
+ /**
+ * Requests to be notified about certain events, wait for that event
+ * and log the event
+ * @param aEventToListenFor The event to listen for (EEventDataQualityStatus/EEventDeviceStatus)
+ */
+ void RequestWaitAndLogEventL(
+ /* IN */ const TInt aEventToListenFor
+ );
+
+ private: // Data
+
+ RPositioner iPositioner2;
+ TPositionModuleStatus iExpectedStatus;
+ };
+
+#endif // __CT_LBS_CLIENT_POS_TP189_H__
+
+// End of File
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/lbsclient/inc/ctlbsclientpostp193.h Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,67 @@
+/*
+* Copyright (c) 2001-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:
+*
+*/
+
+
+
+#ifndef __CT_LBS_CLIENT_POS_TP193_H__
+#define __CT_LBS_CLIENT_POS_TP193_H__
+
+// INCLUDES
+#include "ctlbsportedstepbase.h"
+
+// CONSTANTS
+
+// FORWARD DECLARATIONS
+
+// CLASS DECLARATION
+
+/**
+* Test procedure 193
+*
+*/
+class CT_LbsClientPosTp193 : public CT_LbsPortedStepBase
+ {
+ public: // Constructors and destructor
+
+ /**
+ * C++ default constructor.
+ */
+ CT_LbsClientPosTp193(CT_LbsServer& aParent);
+
+ /**
+ * Destructor.
+ */
+ ~CT_LbsClientPosTp193();
+
+ public: // Functions from base classes
+
+ /**
+ * From CT_LbsPortedStepBase
+ * Called after the tests
+ */
+ void CloseTest();
+
+ /**
+ * From CT_LbsPortedStepBase
+ * Runs the test in the module
+ */
+ void StartL();
+ };
+
+#endif // __CT_LBS_CLIENT_POS_TP193_H__
+
+// End of File
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/lbsclient/inc/ctlbsclientpostp194.h Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,58 @@
+/*
+* Copyright (c) 2002-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:
+*
+*/
+
+
+
+#ifndef __CT_LBS_CLIENT_POS_TP194_H__
+#define __CT_LBS_CLIENT_POS_TP194_H__
+
+// INCLUDES
+#include "ctlbsportedstepbase.h"
+
+// FORWARD DECLARATION
+
+// CLASS DECLARATION
+
+/**
+* Test procedure 194
+*
+*/
+class CT_LbsClientPosTp194 : public CT_LbsPortedStepBase
+ {
+ public: // Constructors and destructor
+
+ /**
+ * C++ default constructor.
+ */
+ CT_LbsClientPosTp194(CT_LbsServer& aParent);
+
+ /**
+ * Destructor.
+ */
+ ~CT_LbsClientPosTp194();
+
+ public: // Functions from base classes
+
+ /**
+ * From CT_LbsPortedStepBase
+ */
+ void StartL();
+ };
+
+#endif // __CT_LBS_CLIENT_POS_TP194_H__
+
+// End of File
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/lbsclient/inc/ctlbsclientpostp195.h Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,58 @@
+/*
+* Copyright (c) 2002-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:
+*
+*/
+
+
+
+#ifndef __CT_LBS_CLIENT_POS_TP195_H__
+#define __CT_LBS_CLIENT_POS_TP195_H__
+
+// INCLUDES
+#include "ctlbsportedstepbase.h"
+
+// FORWARD DECLARATION
+
+// CLASS DECLARATION
+
+/**
+* Test procedure 195
+*
+*/
+class CT_LbsClientPosTp195 : public CT_LbsPortedStepBase
+ {
+ public: // Constructors and destructor
+
+ /**
+ * C++ default constructor.
+ */
+ CT_LbsClientPosTp195(CT_LbsServer& aParent);
+
+ /**
+ * Destructor.
+ */
+ ~CT_LbsClientPosTp195();
+
+ public: // Functions from base classes
+
+ /**
+ * From CT_LbsPortedStepBase
+ */
+ void StartL();
+ };
+
+#endif // __CT_LBS_CLIENT_POS_TP195_H__
+
+// End of File
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/lbsclient/inc/ctlbsclientpostp2.h Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,78 @@
+/*
+* Copyright (c) 2001-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:
+*
+*/
+
+
+
+#ifndef __CT_LBS_CLIENT_POS_TP2_H__
+#define __CT_LBS_CLIENT_POS_TP2_H__
+
+// INCLUDES
+#include "ctlbsportedstepbase.h"
+
+// FORWARD DECLARATIONS
+class TPositionSatelliteInfo;
+
+// CLASS DECLARATION
+
+/**
+* Test procedure 2
+*
+*/
+class CT_LbsClientPosTp2 : public CT_LbsPortedStepBase
+ {
+ public: // Constructors and destructor
+
+ /**
+ * C++ default constructor.
+ */
+ CT_LbsClientPosTp2(CT_LbsServer& aParent);
+
+ /**
+ * Destructor.
+ */
+ ~CT_LbsClientPosTp2();
+
+ public: // Functions from base classes
+
+ /**
+ * From CT_LbsPortedStepBase
+ * Runs the test in the module
+ */
+ void StartL();
+
+ private: // New functions
+
+ /**
+ * Leaves if aCondition is false.
+ * @param aCondition something that should be true
+ */
+ void AssertTrueL(TBool aCondition, const TDesC& aErrorMsg);
+
+ void RequestL(TPositionInfoBase& aInfoBase);
+
+ void CheckPositionL(TPosition& aPosition);
+
+ void CheckPositionInfoL(TPositionInfo& aInfo);
+ void CheckPositionCourseInfoL(TPositionCourseInfo& aInfo);
+ void CheckPositionSatelliteInfoL(TPositionSatelliteInfo& aInfo);
+ void CheckGenericInfoL(HPositionGenericInfo& aInfo);
+
+ };
+
+#endif // __CT_LBS_CLIENT_POS_TP2_H__
+
+// End of File
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/lbsclient/inc/ctlbsclientpostp201.h Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,61 @@
+/*
+* Copyright (c) 2001-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:
+*
+*/
+
+
+
+#ifndef __CT_LBS_CLIENT_POS_TP201_H__
+#define __CT_LBS_CLIENT_POS_TP201_H__
+
+// INCLUDES
+#include "ctlbsportedstepbase.h"
+
+// FORWARD DECLARATION
+
+// CLASS DECLARATION
+
+/**
+* Test procedure 201
+*
+*/
+class CT_LbsClientPosTp201 : public CT_LbsPortedStepBase
+ {
+ public: // Constructors and destructor
+
+ /**
+ * C++ default constructor.
+ */
+ CT_LbsClientPosTp201(CT_LbsServer& aParent);
+
+ /**
+ * Destructor.
+ */
+ ~CT_LbsClientPosTp201();
+
+ public: // Functions from base classes
+
+ /**
+ * From CT_LbsPortedStepBase
+ */
+ void StartL();
+
+ private:
+ void CheckRequestResultL(TInt aExpectedErrorCode, TRequestStatus& aStatus);
+ };
+
+#endif // __CT_LBS_CLIENT_POS_TP201_H__
+
+// End of File
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/lbsclient/inc/ctlbsclientpostp203.h Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,75 @@
+/*
+* Copyright (c) 2001-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:
+*
+*/
+
+
+
+#ifndef __CT_LBS_CLIENT_POS_TP203_H__
+#define __CT_LBS_CLIENT_POS_TP203_H__
+
+// INCLUDES
+#include "ctlbsportedstepbase.h"
+#include "mctlbsrequestobserver.h"
+
+// CLASS DECLARATION
+
+/**
+* Test procedure 203
+*
+*/
+class CT_LbsClientPosTp203 : public CT_LbsPortedStepBase, public MCT_LbsRequestObserver
+ {
+ public: // Constructors and destructor
+
+ /**
+ * C++ default constructor.
+ */
+ CT_LbsClientPosTp203(CT_LbsServer& aParent);
+
+ /**
+ * Destructor.
+ */
+ ~CT_LbsClientPosTp203();
+
+ public: // Functions from base classes
+
+ static TInt DisablePsyL(TAny* aSelf);
+
+ /**
+ * From CT_LbsPortedStepBase
+ * Deinitializes the test.
+ */
+ void CloseTest();
+
+ /**
+ * From CT_LbsPortedStepBase
+ */
+ void StartL();
+
+ /**
+ * From MCT_LbsRequestObserver
+ * Called when a CRequester request has completed.
+ */
+ void RequestCompleteL();
+
+ private: // Data
+
+ CPeriodic* iPeriodicTimer;
+ };
+
+#endif // __CT_LBS_CLIENT_POS_TP203_H__
+
+// End of File
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/lbsclient/inc/ctlbsclientpostp204.h Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,82 @@
+/*
+* Copyright (c) 2001-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:
+*
+*/
+
+
+
+#ifndef __CT_LBS_CLIENT_POS_TP204_H__
+#define __CT_LBS_CLIENT_POS_TP204_H__
+
+// INCLUDES
+#include "ctlbsportedstepbase.h"
+#include "mctlbsrequestobserver.h"
+
+// FORWARD DECLARATIONS
+class CBaBackupSessionWrapper;
+
+// CLASS DECLARATION
+
+/**
+* Test procedure 204
+*
+*/
+class CT_LbsClientPosTp204 : public CT_LbsPortedStepBase, public MCT_LbsRequestObserver
+ {
+ public: // Constructors and destructor
+
+ /**
+ * C++ default constructor.
+ */
+ CT_LbsClientPosTp204(CT_LbsServer& aParent);
+
+ /**
+ * Destructor.
+ */
+ ~CT_LbsClientPosTp204();
+
+ public: // Functions from base classes
+
+ /**
+ * From CT_LbsPortedStepBase
+ * Runs the test in the module
+ */
+ void StartL();
+
+ /**
+ * From MCT_LbsRequestObserver
+ * Called when a CT_LbsRequester request has completed.
+ */
+ void RequestCompleteL();
+
+ /**
+ * From CT_LbsPortedStepBase
+ * Called after the tests
+ */
+ void CloseTest();
+
+ private: // New functions
+
+ private:
+ RPositionServer iPosServer1;
+ RPositioner iPositioner1;
+ CPeriodic* iPeriodicTimer;
+ CBaBackupSessionWrapper* iBackupWrapper;
+ TInt iCompletedRequests;
+ };
+
+#endif // __CT_LBS_CLIENT_POS_TP204_H__
+
+// End of File
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/lbsclient/inc/ctlbsclientpostp208.h Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,88 @@
+/*
+* Copyright (c) 2001-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:
+*
+*/
+
+
+
+#ifndef __CT_LBS_CLIENT_POS_TP208_H__
+#define __CT_LBS_CLIENT_POS_TP208_H__
+
+// INCLUDES
+#include "ctlbsportedstepbase.h"
+
+// CONSTANTS
+
+// FORWARD DECLARATIONS
+
+// CLASS DECLARATION
+
+/**
+* Test procedure 208
+*
+*/
+class CT_LbsClientPosTp208 : public CT_LbsPortedStepBase
+ {
+ public: // Constructors and destructor
+
+ /**
+ * C++ default constructor.
+ */
+ CT_LbsClientPosTp208(CT_LbsServer& aParent);
+
+ /**
+ * Destructor.
+ */
+ ~CT_LbsClientPosTp208();
+
+ public: // Functions from base classes
+
+ /**
+ * From CT_LbsPortedStepBase
+ * Called after the tests
+ */
+ void CloseTest();
+
+ /**
+ * From CT_LbsPortedStepBase
+ * Runs the test in the module
+ */
+ void StartL();
+
+ protected: // New functions
+
+ /**
+ *
+ * Starts nr of threads all connecting to the
+ * Epos server. If aFullTest also does
+ * a number of position requests
+ */
+ TInt StartThreads(TBool aFullTest);
+
+ /**
+ *Fast connection only connects to epos no
+ *tracing no nothing. Verification of EJSH-5WJG82
+ */
+ TInt DoFastConnectionL();
+
+ private:
+
+ TInt iThreadCount;
+
+ };
+
+#endif // __CT_LBS_CLIENT_POS_TP208_H__
+
+// End of File
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/lbsclient/inc/ctlbsclientpostp21.h Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,79 @@
+/*
+* Copyright (c) 2001-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:
+*
+*/
+
+
+
+#ifndef __CT_LBS_CLIENT_POS_TP21_H__
+#define __CT_LBS_CLIENT_POS_TP21_H__
+
+// INCLUDES
+#include "ctlbsportedstepbase.h"
+
+// CONSTANTS
+
+// FORWARD DECLARATIONS
+
+// CLASS DECLARATION
+
+/**
+* Test procedure 21
+*
+*/
+class CT_LbsClientPosTp21 : public CT_LbsPortedStepBase
+ {
+ public: // Constructors and destructor
+
+ /**
+ * C++ default constructor.
+ */
+ CT_LbsClientPosTp21(CT_LbsServer& aParent);
+
+ /**
+ * Destructor.
+ */
+ ~CT_LbsClientPosTp21();
+
+ public: // Functions from base classes
+
+ /**
+ * From CT_LbsPortedStepBase
+ * Called after the tests
+ */
+ void CloseTest();
+
+ /**
+ * From CT_LbsPortedStepBase
+ * Runs the test in the module
+ */
+ void StartL();
+
+ private:
+
+ /**
+ * Setup privacy and notification override settings
+ * @param aPsyUid the uid of the psy
+ * @param aDirective how to setup the PSY:s
+ * Enum def in this file.
+ */
+ void SetupPsyL(const TUid aPsyUid,
+ TBool aChoice);
+
+ };
+
+#endif // __CT_LBS_CLIENT_POS_TP21_H__
+
+// End of File
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/lbsclient/inc/ctlbsclientpostp213.h Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,99 @@
+/*
+* Copyright (c) 2001-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:
+*
+*/
+
+
+
+#ifndef __CT_LBS_CLIENT_POS_TP213_H__
+#define __CT_LBS_CLIENT_POS_TP213_H__
+
+// INCLUDES
+#include "ctlbsportedstepbase.h"
+#include "mctlbsrequestobserver.h"
+
+// CONSTANTS
+
+// FORWARD DECLARATION
+class CT_LbsClientRequestor;
+class CT_LbsClientEventTimer;
+class CPosModules;
+
+// CLASS DECLARATION
+
+/**
+* Test procedure 213
+*
+*/
+class CT_LbsClientPosTp213 : public CT_LbsPortedStepBase, public MCT_LbsRequestObserver
+ {
+ public: // Constructors and destructor
+
+ /**
+ * C++ default constructor.
+ */
+ CT_LbsClientPosTp213(CT_LbsServer& aParent);
+
+ /**
+ * Destructor.
+ */
+ ~CT_LbsClientPosTp213();
+
+ public: // Functions from base classes
+
+ /**
+ * From CT_LbsPortedStepBase
+ */
+ void StartL();
+
+ /**
+ * From CT_LbsPortedStepBase
+ * Called after the tests
+ */
+ void CloseTest();
+
+ /**
+ * From MCT_LbsRequestObserver
+ * Called when a CRequester request has completed.
+ */
+ void RequestCompleteL();
+
+ private:
+
+ void EnablePsyL(
+ CPosModules& aDb,
+ TUid aPsy);
+
+
+ void DisablePsyL(
+ CPosModules& aDb,
+ TUid aPsy);
+
+ private:
+
+ void CheckRequestResultL(TInt aExpectedErrorCode, TRequestStatus& aStatus);
+
+ CT_LbsClientRequestor* iclient1;
+ CT_LbsClientRequestor* iclient2;
+ CT_LbsClientRequestor* iclient3;
+ CT_LbsClientEventTimer* ieventtimer;
+ TInt iCompletedRequests;
+ TBool iNoFurtherEvents;
+ TBool iErrorDuringExecution;
+ };
+
+#endif // __CT_LBS_CLIENT_POS_TP213_H__
+
+// End of File
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/lbsclient/inc/ctlbsclientpostp217.h Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,93 @@
+/*
+* Copyright (c) 2001-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:
+*
+*/
+
+
+
+#ifndef __CT_LBS_CLIENT_POS_TP217_H__
+#define __CT_LBS_CLIENT_POS_TP217_H__
+
+// INCLUDES
+#include "ctlbsportedstepbase.h"
+
+// FORWARD DECLARATIONS
+
+// CLASS DECLARATION
+
+/**
+* Test procedure 217
+*
+*/
+class CT_LbsClientPosTp217 : public CT_LbsPortedStepBase
+ {
+ public: // Constructors and destructor
+
+ /**
+ * C++ default constructor.
+ */
+ CT_LbsClientPosTp217(CT_LbsServer& aParent);
+
+ /**
+ * Destructor.
+ */
+ ~CT_LbsClientPosTp217();
+
+ public: // Functions from base classes
+
+ /**
+ * From CT_LbsPortedStepBase
+ * Deinitializes the test.
+ */
+ void CloseTest();
+
+ /**
+ * From CT_LbsPortedStepBase
+ * Runs the test in the module
+ */
+ void StartL();
+
+ private: // New functions
+
+ /**
+ * Leaves if aCondition is false.
+ * @param aCondition something that should be true
+ */
+ void AssertTrueL(TBool aCondition, const TDesC& aErrorMsg, TInt aErrorCode);
+
+ /**
+ * Compares two TPositionInfoBase objects
+ * @return returns true if equal, otherwise false
+ */
+ TBool ComparePositionL(TPositionInfo aPosInfo1, TPositionInfo aPosInfo2);
+
+ /**
+ * Test that it is not possible to set erroneous maxage and updateInterval values
+ */
+ void ExtendedTesting1();
+
+ /**
+ * Check that it is possible to change MaxAge
+ * when the positioner already has a value
+ */
+ void ExtendedTesting2();
+
+ private:
+
+ };
+
+#endif // __CT_LBS_CLIENT_POS_TP217_H__
+
+// End of File
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/lbsclient/inc/ctlbsclientpostp218.h Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,91 @@
+/*
+* Copyright (c) 2001-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:
+*
+*/
+
+
+
+#ifndef __CT_LBS_CLIENT_POS_TP218_H__
+#define __CT_LBS_CLIENT_POS_TP218_H__
+
+// INCLUDES
+#include "ctlbsportedstepbase.h"
+
+
+// FORWARD DECLARATIONS
+
+// CLASS DECLARATION
+
+/**
+* Test procedure 218
+*
+*/
+class CT_LbsClientPosTp218 :public CT_LbsPortedStepBase
+ {
+ public: // Constructors and destructor
+
+ /**
+ * C++ default constructor.
+ */
+ CT_LbsClientPosTp218(CT_LbsServer& aParent);
+
+ /**
+ * Destructor.
+ */
+ ~CT_LbsClientPosTp218();
+
+ public: // Functions from base classes
+
+ /**
+ * From CT_LbsPortedStepBase
+ * Deinitializes the test.
+ */
+ void CloseTest();
+
+ /**
+ * From CT_LbsPortedStepBase
+ * Runs the test in the module
+ */
+ void StartL();
+
+ private: // New functions
+
+ /**
+ * Leaves if aCondition is false.
+ * @param aCondition something that should be true
+ */
+ void AssertTrueL(TBool aCondition, const TDesC& aErrorMsg, TInt aErrorCode);
+
+ /**
+ * Compares two TPositionInfoBase objects
+ * @return returns true if equal, otherwise false
+ */
+ TBool ComparePositionL(TPositionInfo aPosInfo1, TPositionInfo aPosInfo2);
+
+ /*
+ * Setup the choosen default Psy
+ */
+ void SetupDefaultPsyL(const TUid aPsyUid);
+
+ private:
+
+ RPositioner iPositioner1;
+ RPositioner iPositioner2;
+
+ };
+
+#endif // __CT_LBS_CLIENT_POS_TP218_H__
+
+// End of File
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/lbsclient/inc/ctlbsclientpostp22.h Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,72 @@
+/*
+* Copyright (c) 2001-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:
+*
+*/
+
+
+
+#ifndef __CT_LBS_CLIENT_POS_TP22_H__
+#define __CT_LBS_CLIENT_POS_TP22_H__
+
+// INCLUDES
+#include "ctlbsportedstepbase.h"
+
+// FORWARD DECLARATION
+class CT_LbsClientPeriodicTester;
+
+// CLASS DECLARATION
+
+/**
+* Test procedure 22
+*
+*/
+class CT_LbsClientPosTp22 : public CT_LbsPortedStepBase
+ {
+ public: // Constructors and destructor
+
+ /**
+ * C++ default constructor.
+ */
+ CT_LbsClientPosTp22(CT_LbsServer& aParent);
+
+ /**
+ * Destructor.
+ */
+ ~CT_LbsClientPosTp22();
+
+ public: // Functions from base classes
+
+ /**
+ * From CT_LbsPortedStepBase
+ * Runs the test in the module
+ */
+ void StartL();
+
+ /**
+ * From CT_LbsPortedStepBase
+ * Called at close down of test
+ */
+ void CloseTest();
+
+ private: // Data
+ RArray<TInt> iRequestArray;
+ CT_LbsClientPeriodicTester* iPeriodicTester1;
+ CT_LbsClientPeriodicTester* iPeriodicTester2;
+
+ };
+
+#endif // __CT_LBS_CLIENT_POS_TP22_H__
+
+// End of File
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/lbsclient/inc/ctlbsclientpostp222.h Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,68 @@
+/*
+* Copyright (c) 2001-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:
+*
+*/
+
+
+
+#ifndef __CT_LBS_CLIENT_POS_TP222_H__
+#define __CT_LBS_CLIENT_POS_TP222_H__
+
+// INCLUDES
+#include "ctlbsportedstepbase.h"
+
+// FORWARD DECLARATIONS
+
+// CLASS DECLARATION
+
+/**
+* Test procedure 222
+*
+*/
+class CT_LbsClientPosTp222 :public CT_LbsPortedStepBase
+ {
+ public: // Constructors and destructor
+
+ /**
+ * C++ default constructor.
+ */
+ CT_LbsClientPosTp222(CT_LbsServer& aParent);
+
+ /**
+ * Destructor.
+ */
+ ~CT_LbsClientPosTp222();
+
+ public: // Functions from base classes
+
+ /**
+ * From CT_LbsPortedStepBase
+ * Deinitializes the test.
+ */
+ void CloseTest();
+
+ /**
+ * From CT_LbsPortedStepBase
+ * Runs the test in the module
+ */
+ void StartL();
+
+ private: // New functions
+
+ };
+
+#endif // __CT_LBS_CLIENT_POS_TP222_H__
+
+// End of File
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/lbsclient/inc/ctlbsclientpostp223.h Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,67 @@
+/*
+* Copyright (c) 2001-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:
+*
+*/
+
+
+
+#ifndef __CT_LBS_CLIENT_POS_TP223_H__
+#define __CT_LBS_CLIENT_POS_TP223_H__
+
+// INCLUDES
+#include "ctlbsportedstepbase.h"
+
+// FORWARD DECLARATIONS
+
+// CLASS DECLARATION
+
+/**
+* Test procedure 223
+*
+*/
+class CT_LbsClientPosTp223 : public CT_LbsPortedStepBase
+ {
+ public: // Constructors and destructor
+
+ /**
+ * C++ default constructor.
+ */
+ CT_LbsClientPosTp223(CT_LbsServer& aParent);
+
+ /**
+ * Destructor.
+ */
+ ~CT_LbsClientPosTp223();
+
+ public: // Functions from base classes
+
+ /**
+ * From CT_LbsPortedStepBase
+ * Runs the test in the module
+ */
+ void StartL();
+
+ private: // New functions
+
+ /**
+ * Leaves if aCondition is false.
+ * @param aCondition something that should be true
+ */
+ void AssertTrueSecL(TBool aCondition, const TDesC& aErrorMsg, TInt aErrorCode);
+ };
+
+#endif // __CT_LBS_CLIENT_POS_TP223_H__
+
+// End of File
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/lbsclient/inc/ctlbsclientpostp224.h Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,78 @@
+/*
+* Copyright (c) 2001-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:
+*
+*/
+
+
+
+#ifndef __CT_LBS_CLIENT_POS_TP224_H__
+#define __CT_LBS_CLIENT_POS_TP224_H__
+
+// INCLUDES
+#include "ctlbsportedstepbase.h"
+
+// FORWARD DECLARATIONS
+
+// CLASS DECLARATION
+
+/**
+* Test procedure 224
+*
+*/
+class CT_LbsClientPosTp224 : public CT_LbsPortedStepBase
+ {
+ public: // Constructors and destructor
+
+ /**
+ * C++ default constructor.
+ */
+ CT_LbsClientPosTp224(CT_LbsServer& aParent);
+
+ /**
+ * Destructor.
+ */
+ ~CT_LbsClientPosTp224();
+
+ public: // Functions from base classes
+
+ /**
+ * From CT_LbsPortedStepBase
+ * Runs the test in the module
+ */
+ void StartL();
+
+ /**
+ * From CT_LbsPortedStepBase
+ * Deinitializes the test.
+ */
+ void CloseTest();
+
+ private: // New functions
+
+ /**
+ * Leaves if aCondition is false.
+ * @param aCondition something that should be true
+ */
+ void AssertTrueSecL(TBool aCondition, const TDesC& aErrorMsg, TInt aErrorCode);
+
+ RPositionServer iServer;
+ RPositioner iPositioner;
+ RPositioner iPositioner2;
+
+ };
+
+#endif // __CT_LBS_CLIENT_POS_TP224_H__
+
+// End of File
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/lbsclient/inc/ctlbsclientpostp227.h Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,74 @@
+/*
+* Copyright (c) 2001-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:
+*
+*/
+
+
+
+#ifndef __CT_LBS_CLIENT_POS_TP227_H__
+#define __CT_LBS_CLIENT_POS_TP227_H__
+
+// INCLUDES
+#include "ctlbsportedstepbase.h"
+
+// FORWARD DECLARATIONS
+
+// CLASS DECLARATION
+
+/**
+* Test procedure 227
+*
+*/
+class CT_LbsClientPosTp227 : public CT_LbsPortedStepBase
+ {
+ public: // Constructors and destructor
+
+ /**
+ * C++ default constructor.
+ */
+ CT_LbsClientPosTp227(CT_LbsServer& aParent);
+
+ /**
+ * Destructor.
+ */
+ ~CT_LbsClientPosTp227();
+
+ public: // Functions from base classes
+
+ /**
+ * From CT_LbsPortedStepBase
+ * Runs the test in the module
+ */
+ void StartL();
+
+ /**
+ * From CT_LbsPortedStepBase
+ * Deinitializes the test.
+ */
+ void CloseTest();
+
+ private: // New functions
+
+ /**
+ * Leaves if aCondition is false.
+ * @param aCondition something that should be true
+ */
+ void AssertTrueL(TBool aCondition, const TDesC& aErrorMsg);
+
+ };
+
+#endif // __CT_LBS_CLIENT_POS_TP227_H__
+
+// End of File
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/lbsclient/inc/ctlbsclientpostp25.h Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,82 @@
+/*
+* Copyright (c) 2001-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:
+*
+*/
+
+
+
+#ifndef __CT_LBS_CLIENT_POS_TP25_H__
+#define __CT_LBS_CLIENT_POS_TP25_H__
+
+// INCLUDES
+#include "ctlbsportedstepbase.h"
+#include "mctlbsrequestobserver.h"
+
+// FORWARD DECLARATIONS
+class CT_LbsRequester;
+
+// CLASS DECLARATION
+
+/**
+* Test procedure 25
+*
+*/
+class CT_LbsClientPosTp25 : public CT_LbsPortedStepBase, public MCT_LbsRequestObserver
+ {
+ public: // Constructors and destructor
+
+ /**
+ * C++ default constructor.
+ */
+ CT_LbsClientPosTp25(CT_LbsServer& aParent);
+
+ /**
+ * Destructor.
+ */
+ ~CT_LbsClientPosTp25();
+
+ public: // Functions from base classes
+
+ /**
+ * From CT_LbsPortedStepBase
+ * Runs the test in the module
+ */
+ void StartL();
+
+ /**
+ * From MCT_LbsRequestObserver
+ * Called when a CT_LbsRequester request has completed.
+ */
+ void RequestCompleteL();
+
+ private: // New functions
+
+ /**
+ * Leaves if aCondition is false.
+ * @param aCondition something that should be true
+ */
+ void AssertTrueL(TBool aCondition, const TDesC& aErrorMsg);
+
+ private: // Data
+
+ CT_LbsRequester* iFastPsy;
+ CT_LbsRequester* iMediumPsy;
+ CT_LbsRequester* iSlowPsy;
+ TInt iCompletedRequests;
+ };
+
+#endif // __CT_LBS_CLIENT_POS_TP25_H__
+
+// End of File
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/lbsclient/inc/ctlbsclientpostp254.h Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,83 @@
+/*
+* Copyright (c) 2001-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:
+*
+*/
+
+
+
+#ifndef __CT_LBS_CLIENT_POS_TP254_H__
+#define __CT_LBS_CLIENT_POS_TP254_H__
+
+// INCLUDES
+#include "ctlbsportedstepbase.h"
+
+// FORWARD DECLARATION
+class CPosRequestLog;
+
+// CLASS DECLARATION
+
+/**
+* Test procedure 254
+*
+*/
+class CT_LbsClientPosTp254 : public CT_LbsPortedStepBase
+ {
+ public: // Constructors and destructor
+
+ /**
+ * C++ default constructor.
+ */
+ CT_LbsClientPosTp254(CT_LbsServer& aParent);
+
+ /**
+ * Destructor.
+ */
+ ~CT_LbsClientPosTp254();
+
+ public: // Functions from base classes
+
+ /**
+ * From CT_LbsPortedStepBase
+ * Deinitializes the test.
+ */
+ void CloseTest();
+
+ /**
+ * From CT_LbsPortedStepBase
+ */
+ void StartL();
+
+ private: // New functions
+
+ /**
+ * Deletes a file from the file system
+ * @param aFile the file name
+ */
+ void DeleteFileL(const TDesC& aFile);
+
+ /**
+ * Check if the specified file exists
+ * @param aFile the file name
+ */
+ TBool FileExistsL(const TDesC& aFile);
+
+ void CheckPositionL(TPosition& aPosition, TPosition& aLastPosition);
+
+ void CheckPositionInfoL(TPositionInfo& aInfo, TPositionInfo& aLastInfo);
+ };
+
+#endif // __CT_LBS_CLIENT_POS_TP254_H__
+
+// End of File
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/lbsclient/inc/ctlbsclientpostp256.h Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,72 @@
+/*
+* Copyright (c) 2002-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:
+*
+*/
+
+
+
+#ifndef __CT_LBS_CLIENT_POS_TP256_H__
+#define __CT_LBS_CLIENT_POS_TP256_H__
+
+// INCLUDES
+#include "ctlbsportedstepbase.h"
+
+// CLASS DECLARATION
+
+/**
+* Test procedure 256
+*/
+class CT_LbsClientPosTp256 : public CT_LbsPortedStepBase
+ {
+ public: // Constructors and destructor
+
+ /**
+ * C++ default constructor.
+ */
+ CT_LbsClientPosTp256(CT_LbsServer& aParent);
+
+ /**
+ * Destructor.
+ */
+ ~CT_LbsClientPosTp256();
+
+ public: // Functions from base classes
+
+ /**
+ * From CT_LbsPortedStepBase
+ * Runs the test in the module
+ */
+ void StartL();
+
+ /**
+ * From CT_LbsPortedStepBase
+ * Always called, even if the test leaves
+ */
+ void CloseTest();
+
+ private: // Functions
+
+ void CreateThreadsL();
+ void RequestL(TPositionInfoBase& aInfoBase);
+
+ private: // data
+
+ RArray<RThread> iThreads;
+ RPointerArray<HBufC> iNames;
+ };
+
+#endif // __CT_LBS_CLIENT_POS_TP256_H__
+
+// End of File
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/lbsclient/inc/ctlbsclientpostp257.h Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,86 @@
+/*
+* Copyright (c) 2001-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:
+*
+*/
+
+
+
+#ifndef __CT_LBS_CLIENT_POS_TP257_H__
+#define __CT_LBS_CLIENT_POS_TP257_H__
+
+// INCLUDES
+#include "ctlbsportedstepbase.h"
+
+// FORWARD DECLARATIONS
+
+// CLASS DECLARATION
+
+/**
+* Test procedure 257
+*
+*/
+class CT_LbsClientPosTp257 :public CT_LbsPortedStepBase
+ {
+ public: // Constructors and destructor
+
+ /**
+ * C++ default constructor.
+ */
+ CT_LbsClientPosTp257(CT_LbsServer& aParent);
+
+ /**
+ * Destructor.
+ */
+ ~CT_LbsClientPosTp257();
+
+ public: // Functions from base classes
+
+ /**
+ * From CT_LbsPortedStepBase
+ * Deinitializes the test.
+ * Always called even if test leaves.
+ */
+ void CloseTest();
+
+ /**
+ * From CT_LbsPortedStepBase
+ */
+ void StartL();
+
+ private: // New functions
+
+ /**
+ * Compares two TPositionInfoBase objects
+ * @return returns true if equal, otherwise false
+ */
+ TBool ComparePositionL(TPositionInfo aPosInfo1, TPositionInfo aPosInfo2);
+
+ /**
+ * Deletes a file from the file system
+ * @param aFile the file name
+ */
+ void DeleteFileL(const TDesC& aFile);
+
+ /**
+ * Check if the specified file exists
+ * @param aFile the file name
+ */
+ TBool FileExistsL(const TDesC& aFile);
+
+ };
+
+#endif // __CT_LBS_CLIENT_POS_TP257_H__
+
+// End of File
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/lbsclient/inc/ctlbsclientpostp259.h Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,80 @@
+/*
+* Copyright (c) 2001-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:
+*
+*/
+
+
+
+#ifndef __CT_LBS_CLIENT_POS_TP259_H__
+#define __CT_LBS_CLIENT_POS_TP259_H__
+
+// INCLUDES
+#include "ctlbsportedstepbase.h"
+
+// FORWARD DECLARATIONS
+
+// CLASS DECLARATION
+
+/**
+* Test procedure 259
+*
+*/
+class CT_LbsClientPosTp259 : public CT_LbsPortedStepBase
+ {
+ public: // Constructors and destructor
+
+ /**
+ * C++ default constructor.
+ */
+ CT_LbsClientPosTp259(CT_LbsServer& aParent);
+
+ /**
+ * Destructor.
+ */
+ ~CT_LbsClientPosTp259();
+
+ public: // Functions from base classes
+
+ /**
+ * From CT_LbsPortedStepBase
+ * Deinitializes the test.
+ * Always called even if test leaves.
+ */
+ void CloseTest();
+
+ /**
+ * From CT_LbsPortedStepBase
+ */
+ void StartL();
+
+ private: // New functions
+
+ /**
+ * First call the RPosServer::CancelRequest method with inparameter
+ * EPositionerNotifyPositionUpdate and then call the RPositioner::CancelRequest
+ * method with EPositionServerNotifyModuleStatusEvent
+ */
+ void TestPart1L();
+
+ /**
+ * Test some cases not included in TestPart1L
+ */
+ void TestPart2L();
+
+ };
+
+#endif // __CT_LBS_CLIENT_POS_TP259_H__
+
+// End of File
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/lbsclient/inc/ctlbsclientpostp261.h Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,71 @@
+/*
+* Copyright (c) 2001-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:
+*
+*/
+
+
+
+#ifndef __CT_LBS_CLIENT_POS_TP261_H__
+#define __CT_LBS_CLIENT_POS_TP261_H__
+
+// INCLUDES
+#include "ctlbsportedstepbase.h"
+
+// FORWARD DECLARATIONS
+class RRequestorStack;
+
+// CLASS DECLARATION
+
+/**
+* Test procedure 261
+*
+*/
+class CT_LbsClientPosTp261 : public CT_LbsPortedStepBase
+ {
+ public: // Constructors and destructor
+
+ /**
+ * C++ default constructor.
+ */
+ CT_LbsClientPosTp261(CT_LbsServer& aParent);
+
+ /**
+ * Destructor.
+ */
+ ~CT_LbsClientPosTp261();
+
+ public: // Functions from base classes
+
+ /**
+ * From CT_LbsPortedStepBase
+ * Deinitializes the test.
+ */
+ void CloseTest();
+
+ /**
+ * From CT_LbsPortedStepBase
+ * Runs the test in the module
+ */
+ void StartL();
+
+ private: // New functions
+
+ void VerifyRequestorStackL(RRequestorStack& aStack);
+
+ };
+
+#endif // __CT_LBS_CLIENT_POS_TP261_H__
+
+// End of File
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/lbsclient/inc/ctlbsclientpostp269.h Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,71 @@
+/*
+* Copyright (c) 2001-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:
+*
+*/
+
+
+
+#ifndef __CT_LBS_CLIENT_POS_TP269_H__
+#define __CT_LBS_CLIENT_POS_TP269_H__
+
+// INCLUDES
+#include "ctlbsportedstepbase.h"
+
+// CLASS DECLARATION
+
+/**
+* Test procedure 269
+*/
+class CT_LbsClientPosTp269 : public CT_LbsPortedStepBase
+ {
+ public: // Constructors and destructor
+
+ /**
+ * C++ default constructor.
+ */
+ CT_LbsClientPosTp269(CT_LbsServer& aParent);
+
+ /**
+ * Destructor.
+ */
+ ~CT_LbsClientPosTp269();
+
+ public: // Functions from base classes
+
+ /**
+ * From CT_LbsPortedStepBase
+ * Runs the test in the module
+ */
+ void StartL();
+
+ /**
+ * From CT_LbsPortedStepBase
+ * Always called, even if the test leaves
+ */
+ void CloseTest();
+
+ private: // Functions
+
+ void SetupProxyPSYsL();
+
+ void AssertTrueSecL(TBool aCondition, const TDesC& aErrorMsg, TInt aErrorCode=KErrGeneral);
+
+ private: // data
+
+ };
+
+#endif // __CT_LBS_CLIENT_POS_TP269_H__
+
+// End of File
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/lbsclient/inc/ctlbsclientpostp27.h Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,98 @@
+/*
+* Copyright (c) 2001-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:
+*
+*/
+
+
+
+#ifndef __CT_LBS_CLIENT_POS_TP27_H__
+#define __CT_LBS_CLIENT_POS_TP27_H__
+
+// INCLUDES
+#include "ctlbsportedstepbase.h"
+
+// CONSTANTS
+
+// FORWARD DECLARATIONS
+
+// CLASS DECLARATION
+
+/**
+* Test procedure 27
+*
+*/
+class CT_LbsClientPosTp27 :public CT_LbsPortedStepBase
+ {
+ public: // Constructors and destructor
+
+ /**
+ * C++ default constructor.
+ */
+ CT_LbsClientPosTp27(CT_LbsServer& aParent);
+
+ /**
+ * Destructor.
+ */
+ ~CT_LbsClientPosTp27();
+
+ public: // Functions from base classes
+
+ /**
+ * From CT_LbsPortedStepBase
+ * Called after the tests
+ */
+ void CloseTest();
+
+ /**
+ * From CT_LbsPortedStepBase
+ * Runs the test in the module
+ */
+ void StartL();
+
+ private:
+
+ /**
+ * Cancel a position request using the dialog plugin
+ * (The request does not reach the PSY since the dialog plugin waits for a cancell call
+ */
+ void MakeCancelRequestL(TTimeIntervalMicroSeconds32 aCancelTime, TTimeIntervalMicroSeconds aTimeLimit);
+
+ /**
+ * Perform a position request while cancelling two other
+ * notification requests and make sure that Epos does not hang!
+ * Using a "slow" psy assures that the position request has reached the Psy
+ */
+ void MakeCancelRequest2L(TTimeIntervalMicroSeconds32 aCancelTime, TTimeIntervalMicroSeconds aTimeLimit);
+
+ /**
+ * Check that a request that is cancelled when
+ * the request has reached the PSY is logged in the requestlog.
+ */
+ void CheckCancelRequestL();
+
+ /**
+ * Enables the specified PSY, does NOT disable any
+ */
+ void EnablePsyL(const TUid aPsyUid);
+
+ /**
+ * Disables all Psys
+ */
+ void DisableAllPsyL();
+ };
+
+#endif // __CT_LBS_CLIENT_POS_TP27_H__
+
+// End of File
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/lbsclient/inc/ctlbsclientpostp271.h Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,80 @@
+/*
+* Copyright (c) 2002-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:
+*
+*/
+
+
+
+#ifndef __CT_LBS_CLIENT_POS_TP271_H__
+#define __CT_LBS_CLIENT_POS_TP271_H__
+
+// INCLUDES
+#include "ctlbsportedstepbase.h"
+
+// CLASS DECLARATION
+
+/**
+* Test procedure 271
+*/
+class CT_LbsClientPosTp271 : public CT_LbsPortedStepBase
+ {
+ public: // Constructors and destructor
+
+ /**
+ * C++ default constructor.
+ */
+ CT_LbsClientPosTp271(CT_LbsServer& aParent);
+
+ /**
+ * Destructor.
+ */
+ ~CT_LbsClientPosTp271();
+
+ public: // Functions from base classes
+
+ /**
+ * From CT_LbsPortedStepBase
+ * Runs the test in the module
+ */
+ void StartL();
+
+ /**
+ * From CT_LbsPortedStepBase
+ * Always called, even if the test leaves
+ */
+ void CloseTest();
+
+ private: // Functions
+
+ void SetupProxyPSYsL();
+
+ void AssertTrueSecL(TBool aCondition, const TDesC& aErrorMsg, TInt aErrorCode=KErrGeneral);
+
+ void VerifyPsyStartedTrackingL(TPositionModuleId& aUid);
+
+ void VerifyPsyStoppedTrackingL(TPositionModuleId& aUid, TRequestStatus& aStatus);
+
+ void VerifyPsyStoppedTrackingL(TPositionModuleId& aUid);
+
+ private: // data
+
+ TPositionModuleStatusEvent iModuleEvent;
+
+ TRequestStatus iEventStatus;
+ };
+
+#endif // __CT_LBS_CLIENT_POS_TP271_H__
+
+// End of File
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/lbsclient/inc/ctlbsclientpostp272.h Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,76 @@
+/*
+* Copyright (c) 2002-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:
+*
+*/
+
+
+
+#ifndef __CT_LBS_CLIENT_POS_TP272_H__
+#define __CT_LBS_CLIENT_POS_TP272_H__
+
+// INCLUDES
+#include "ctlbsportedstepbase.h"
+
+// CLASS DECLARATION
+
+/**
+* Test procedure 272
+*/
+class CT_LbsClientPosTp272 : public CT_LbsPortedStepBase
+ {
+ public: // Constructors and destructor
+
+ /**
+ * C++ default constructor.
+ */
+ CT_LbsClientPosTp272(CT_LbsServer& aParent);
+
+ /**
+ * Destructor.
+ */
+ ~CT_LbsClientPosTp272();
+
+ public: // Functions from base classes
+
+ /**
+ * From CT_LbsPortedStepBase
+ * Runs the test in the module
+ */
+ void StartL();
+
+ /**
+ * From CT_LbsPortedStepBase
+ * Always called, even if the test leaves
+ */
+ void CloseTest();
+
+ private: // Functions
+
+ void RequestL(const TInt& aRequestIndex,
+ const TInt64& aMinTimeLimit,
+ const TInt64& aMaxTimeLimit,
+ const TInt& aPeriodicUpdateInterval=0);
+
+ void SetPeriodicUpdateL(const TInt& aUpdateInterval);
+
+ void AssertTrueSecL(TBool aCondition, const TDesC& aErrorMsg, TInt aErrorCode=KErrGeneral);
+
+ private: // data
+
+ };
+
+#endif // __CT_LBS_CLIENT_POS_TP272_H__
+
+// End of File
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/lbsclient/inc/ctlbsclientpostp274.h Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,63 @@
+/*
+* Copyright (c) 2002-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:
+*
+*/
+
+
+
+#ifndef __CT_LBS_CLIENT_POS_TP274_H__
+#define __CT_LBS_CLIENT_POS_TP274_H__
+
+// INCLUDES
+#include "ctlbsportedstepbase.h"
+
+// CLASS DECLARATION
+
+/**
+* Test procedure 274
+*/
+class CT_LbsClientPosTp274 : public CT_LbsPortedStepBase
+ {
+ public: // Constructors and destructor
+
+ /**
+ * C++ default constructor.
+ */
+ CT_LbsClientPosTp274(CT_LbsServer& aParent);
+
+ /**
+ * Destructor.
+ */
+ ~CT_LbsClientPosTp274();
+
+ public: // Functions from base classes
+
+ /**
+ * From CT_LbsPortedStepBase
+ * Runs the test in the module
+ */
+ void StartL();
+
+ /**
+ * From CT_LbsPortedStepBase
+ * Always called, even if the test leaves
+ */
+ void CloseTest();
+
+ };
+
+#endif // __CT_LBS_CLIENT_POS_TP274_H__
+
+// End of File
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/lbsclient/inc/ctlbsclientpostp275.h Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,67 @@
+/*
+* Copyright (c) 2001-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:
+*
+*/
+
+
+
+#ifndef __CT_LBS_CLIENT_POS_TP275_H__
+#define __CT_LBS_CLIENT_POS_TP275_H__
+
+// INCLUDES
+#include "ctlbsportedstepbase.h"
+
+
+// FORWARD DECLARATIONS
+
+// CLASS DECLARATION
+
+/**
+* Test procedure 275
+*
+*/
+class CT_LbsClientPosTp275 : public CT_LbsPortedStepBase
+ {
+ public: // Constructors and destructor
+
+ /**
+ * C++ default constructor.
+ */
+ CT_LbsClientPosTp275(CT_LbsServer& aParent);
+
+ /**
+ * Destructor.
+ */
+ ~CT_LbsClientPosTp275();
+
+ public: // Functions from base classes
+
+ /**
+ * From CT_LbsPortedStepBase
+ * Deinitializes the test.
+ */
+ void CloseTest();
+
+ /**
+ * From CT_LbsPortedStepBase
+ * Runs the test in the module
+ */
+ void StartL();
+
+ };
+
+#endif // __CT_LBS_CLIENT_POS_TP275_H__
+
+// End of File
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/lbsclient/inc/ctlbsclientpostp4701.h Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,63 @@
+/*
+* Copyright (c) 2001-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:
+*
+*/
+
+
+
+#ifndef __CT_LBS_CLIENT_POS_TP4701_H__
+#define __CT_LBS_CLIENT_POS_TP4701_H__
+
+// INCLUDES
+#include "ctlbsportedstepbase.h"
+
+// CLASS DECLARATION
+
+/**
+* Test procedure 4701
+*/
+class CT_LbsClientPosTp4701 : public CT_LbsPortedStepBase
+ {
+ public: // Constructors and destructor
+
+ CT_LbsClientPosTp4701(CT_LbsServer& aParent);
+
+ /**
+ * Destructor.
+ */
+ ~CT_LbsClientPosTp4701();
+
+ public: // Functions from base classes
+
+ /**
+ * From CT_LbsPortedStepBase
+ * Runs the test in the module
+ */
+ void StartL();
+
+ /**
+ * From CT_LbsPortedStepBase
+ * Always called, even if the test leaves
+ */
+ void CloseTest();
+
+ private: // Functions
+
+ void SetupProxyPSYsL();
+ };
+
+#endif // __CT_LBS_CLIENT_POS_TP4701_H__
+
+// End of File
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/lbsclient/inc/ctlbsclientpostp4702.h Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,66 @@
+/*
+* Copyright (c) 2001-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:
+*
+*/
+
+
+
+#ifndef __CT_LBS_CLIENT_POS_TP4702_H__
+#define __CT_LBS_CLIENT_POS_TP4702_H__
+
+// INCLUDES
+#include "ctlbsportedstepbase.h"
+
+// CLASS DECLARATION
+
+/**
+* Test procedure 4702
+*/
+class CT_LbsClientPosTp4702 : public CT_LbsPortedStepBase
+ {
+ public: // Constructors and destructor
+
+ /**
+ * C++ default constructor.
+ */
+ CT_LbsClientPosTp4702(CT_LbsServer& aParent);
+
+ /**
+ * Destructor.
+ */
+ ~CT_LbsClientPosTp4702();
+
+ public: // Functions from base classes
+
+ /**
+ * From CT_LbsPortedStepBase
+ * Runs the test in the module
+ */
+ void StartL();
+
+ /**
+ * From CT_LbsPortedStepBase
+ * Always called, even if the test leaves
+ */
+ void CloseTest();
+
+ private: // Functions
+
+ void SetupProxyPSYsL();
+ };
+
+#endif // __CT_LBS_CLIENT_POS_TP4702_H__
+
+// End of File
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/lbsclient/inc/ctlbsclientpostp4703.h Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,66 @@
+/*
+* Copyright (c) 2001-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:
+*
+*/
+
+
+
+#ifndef __CT_LBS_CLIENT_POS_TP4703_H__
+#define __CT_LBS_CLIENT_POS_TP4703_H__
+
+// INCLUDES
+#include "ctlbsportedstepbase.h"
+
+// CLASS DECLARATION
+
+/**
+* Test procedure 4703
+*/
+class CT_LbsClientPosTp4703 : public CT_LbsPortedStepBase
+ {
+ public: // Constructors and destructor
+
+ /**
+ * C++ default constructor.
+ */
+ CT_LbsClientPosTp4703(CT_LbsServer& aParent);
+
+ /**
+ * Destructor.
+ */
+ ~CT_LbsClientPosTp4703();
+
+ public: // Functions from base classes
+
+ /**
+ * From CT_LbsPortedStepBase
+ * Runs the test in the module
+ */
+ void StartL();
+
+ /**
+ * From CT_LbsPortedStepBase
+ * Always called, even if the test leaves
+ */
+ void CloseTest();
+
+ private: // Functions
+
+ void SetupProxyPSYsL();
+ };
+
+#endif // __CT_LBS_CLIENT_POS_TP4703_H__
+
+// End of File
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/lbsclient/inc/ctlbsclientpostp4704.h Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,66 @@
+/*
+* Copyright (c) 2001-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:
+*
+*/
+
+
+
+#ifndef __CT_LBS_CLIENT_POS_TP4704_H__
+#define __CT_LBS_CLIENT_POS_TP4704_H__
+
+// INCLUDES
+#include "ctlbsportedstepbase.h"
+
+// CLASS DECLARATION
+
+/**
+* Test procedure 4704
+*/
+class CT_LbsClientPosTp4704 : public CT_LbsPortedStepBase
+ {
+ public: // Constructors and destructor
+
+ /**
+ * C++ default constructor.
+ */
+ CT_LbsClientPosTp4704(CT_LbsServer& aParent);
+
+ /**
+ * Destructor.
+ */
+ ~CT_LbsClientPosTp4704();
+
+ public: // Functions from base classes
+
+ /**
+ * From CT_LbsPortedStepBase
+ * Runs the test in the module
+ */
+ void StartL();
+
+ /**
+ * From CT_LbsPortedStepBase
+ * Always called, even if the test leaves
+ */
+ void CloseTest();
+
+ private: // Functions
+
+ void SetupProxyPSYsL();
+ };
+
+#endif // __CT_LBS_CLIENT_POS_TP4704_H__
+
+// End of File
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/lbsclient/inc/ctlbsclientpostp4705.h Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,66 @@
+/*
+* Copyright (c) 2001-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:
+*
+*/
+
+
+
+#ifndef __CT_LBS_CLIENT_POS_TP4705_H__
+#define __CT_LBS_CLIENT_POS_TP4705_H__
+
+// INCLUDES
+#include "ctlbsportedstepbase.h"
+
+// CLASS DECLARATION
+
+/**
+* Test procedure 4705
+*/
+class CT_LbsClientPosTp4705 : public CT_LbsPortedStepBase
+ {
+ public: // Constructors and destructor
+
+ /**
+ * C++ default constructor.
+ */
+ CT_LbsClientPosTp4705(CT_LbsServer& aParent);
+
+ /**
+ * Destructor.
+ */
+ ~CT_LbsClientPosTp4705();
+
+ public: // Functions from base classes
+
+ /**
+ * From CT_LbsPortedStepBase
+ * Runs the test in the module
+ */
+ void StartL();
+
+ /**
+ * From CT_LbsPortedStepBase
+ * Always called, even if the test leaves
+ */
+ void CloseTest();
+
+ private: // Functions
+
+ void SetupProxyPSYsL();
+ };
+
+#endif // __CT_LBS_CLIENT_POS_TP4705_H__
+
+// End of File
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/lbsclient/inc/ctlbsclientpostp4706.h Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,66 @@
+/*
+* Copyright (c) 2001-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:
+*
+*/
+
+
+
+#ifndef __CT_LBS_CLIENT_POS_TP4706_H__
+#define __CT_LBS_CLIENT_POS_TP4706_H__
+
+// INCLUDES
+#include "ctlbsportedstepbase.h"
+
+// CLASS DECLARATION
+
+/**
+* Test procedure 4706
+*/
+class CT_LbsClientPosTp4706 : public CT_LbsPortedStepBase
+ {
+ public: // Constructors and destructor
+
+ /**
+ * C++ default constructor.
+ */
+ CT_LbsClientPosTp4706(CT_LbsServer& aParent);
+
+ /**
+ * Destructor.
+ */
+ ~CT_LbsClientPosTp4706();
+
+ public: // Functions from base classes
+
+ /**
+ * From CT_LbsPortedStepBase
+ * Runs the test in the module
+ */
+ void StartL();
+
+ /**
+ * From CT_LbsPortedStepBase
+ * Always called, even if the test leaves
+ */
+ void CloseTest();
+
+ private: // Functions
+
+ void SetupProxyPSYsL();
+ };
+
+#endif // __CT_LBS_CLIENT_POS_TP4706_H__
+
+// End of File
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/lbsclient/inc/ctlbsclientpostp4707.h Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,66 @@
+/*
+* Copyright (c) 2001-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:
+*
+*/
+
+
+
+#ifndef __CT_LBS_CLIENT_POS_TP4707_H__
+#define __CT_LBS_CLIENT_POS_TP4707_H__
+
+// INCLUDES
+#include "ctlbsportedstepbase.h"
+
+// CLASS DECLARATION
+
+/**
+* Test procedure 4707
+*/
+class CT_LbsClientPosTp4707 : public CT_LbsPortedStepBase
+ {
+ public: // Constructors and destructor
+
+ /**
+ * C++ default constructor.
+ */
+ CT_LbsClientPosTp4707(CT_LbsServer& aParent);
+
+ /**
+ * Destructor.
+ */
+ ~CT_LbsClientPosTp4707();
+
+ public: // Functions from base classes
+
+ /**
+ * From CT_LbsPortedStepBase
+ * Runs the test in the module
+ */
+ void StartL();
+
+ /**
+ * From CT_LbsPortedStepBase
+ * Always called, even if the test leaves
+ */
+ void CloseTest();
+
+ private: // Functions
+
+ void SetupProxyPSYsL();
+ };
+
+#endif // __CT_LBS_CLIENT_POS_TP4707_H__
+
+// End of File
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/lbsclient/inc/ctlbsclientpostp4708.h Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,66 @@
+/*
+* Copyright (c) 2001-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:
+*
+*/
+
+
+
+#ifndef __CT_LBS_CLIENT_POS_TP4708_H__
+#define __CT_LBS_CLIENT_POS_TP4708_H__
+
+// INCLUDES
+#include "ctlbsportedstepbase.h"
+
+// CLASS DECLARATION
+
+/**
+* Test procedure 4708
+*/
+class CT_LbsClientPosTp4708 : public CT_LbsPortedStepBase
+ {
+ public: // Constructors and destructor
+
+ /**
+ * C++ default constructor.
+ */
+ CT_LbsClientPosTp4708(CT_LbsServer& aParent);
+
+ /**
+ * Destructor.
+ */
+ ~CT_LbsClientPosTp4708();
+
+ public: // Functions from base classes
+
+ /**
+ * From CT_LbsPortedStepBase
+ * Runs the test in the module
+ */
+ void StartL();
+
+ /**
+ * From CT_LbsPortedStepBase
+ * Always called, even if the test leaves
+ */
+ void CloseTest();
+
+ private: // Functions
+
+ void SetupProxyPSYsL();
+ };
+
+#endif // __CT_LBS_CLIENT_POS_TP4708_H__
+
+// End of File
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/lbsclient/inc/ctlbsclientpostp4709.h Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,66 @@
+/*
+* Copyright (c) 2001-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:
+*
+*/
+
+
+
+#ifndef __CT_LBS_CLIENT_POS_TP4709_H__
+#define __CT_LBS_CLIENT_POS_TP4709_H__
+
+// INCLUDES
+#include "ctlbsportedstepbase.h"
+
+// CLASS DECLARATION
+
+/**
+* Test procedure 4709
+*/
+class CT_LbsClientPosTp4709 : public CT_LbsPortedStepBase
+ {
+ public: // Constructors and destructor
+
+ /**
+ * C++ default constructor.
+ */
+ CT_LbsClientPosTp4709(CT_LbsServer& aParent);
+
+ /**
+ * Destructor.
+ */
+ ~CT_LbsClientPosTp4709();
+
+ public: // Functions from base classes
+
+ /**
+ * From CT_LbsPortedStepBase
+ * Runs the test in the module
+ */
+ void StartL();
+
+ /**
+ * From CT_LbsPortedStepBase
+ * Always called, even if the test leaves
+ */
+ void CloseTest();
+
+ private: // Functions
+
+ void SetupProxyPSYsL();
+ };
+
+#endif // __CT_LBS_CLIENT_POS_TP4709_H__
+
+// End of File
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/lbsclient/inc/ctlbsclientpostp4722.h Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,63 @@
+/*
+* Copyright (c) 2001-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:
+*
+*/
+
+
+
+#ifndef __CT_LBS_CLIENT_POS_TP4722_H__
+#define __CT_LBS_CLIENT_POS_TP4722_H__
+
+// INCLUDES
+#include "ctlbsportedstepbase.h"
+
+// CLASS DECLARATION
+
+/**
+* Test procedure 4722
+*/
+class CT_LbsClientPosTp4722 : public CT_LbsPortedStepBase
+ {
+ public: // Constructors and destructor
+
+ CT_LbsClientPosTp4722(CT_LbsServer& aParent);
+
+ /**
+ * Destructor.
+ */
+ ~CT_LbsClientPosTp4722();
+
+ public: // Functions from base classes
+
+ /**
+ * From CT_LbsPortedStepBase
+ * Runs the test in the module
+ */
+ void StartL();
+
+ /**
+ * From CT_LbsPortedStepBase
+ * Always called, even if the test leaves
+ */
+ void CloseTest();
+
+ private: // Functions
+
+ void SetupProxyPSYsL();
+ };
+
+#endif // __CT_LBS_CLIENT_POS_TP4722_H__
+
+// End of File
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/lbsclient/inc/ctlbsclientpostp4723.h Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,66 @@
+/*
+* Copyright (c) 2001-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:
+*
+*/
+
+
+
+#ifndef __CT_LBS_CLIENT_POS_TP4723_H__
+#define __CT_LBS_CLIENT_POS_TP4723_H__
+
+// INCLUDES
+#include "ctlbsportedstepbase.h"
+
+// CLASS DECLARATION
+
+/**
+* Test procedure 4723
+*/
+class CT_LbsClientPosTp4723 : public CT_LbsPortedStepBase
+ {
+ public: // Constructors and destructor
+
+ /**
+ * C++ default constructor.
+ */
+ CT_LbsClientPosTp4723(CT_LbsServer& aParent);
+
+ /**
+ * Destructor.
+ */
+ ~CT_LbsClientPosTp4723();
+
+ public: // Functions from base classes
+
+ /**
+ * From CT_LbsPortedStepBase
+ * Runs the test in the module
+ */
+ void StartL();
+
+ /**
+ * From CT_LbsPortedStepBase
+ * Always called, even if the test leaves
+ */
+ void CloseTest();
+
+ private: // Functions
+
+ void SetupProxyPSYsL();
+ };
+
+#endif // __CT_LBS_CLIENT_POS_TP4723_H__
+
+// End of File
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/lbsclient/inc/ctlbsclientpostp76.h Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,78 @@
+/*
+* Copyright (c) 2001-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:
+*
+*/
+
+
+
+
+#ifndef __CT_LBS_CLIENT_POS_TP76_H__
+#define __CT_LBS_CLIENT_POS_TP76_H__
+
+// INCLUDES
+#include "ctlbsportedstepbase.h"
+
+// FORWARD DECLARATIONS
+
+// CLASS DECLARATION
+
+/**
+* Test procedure 76
+*
+*/
+class CT_LbsClientPosTp76 : public CT_LbsPortedStepBase
+ {
+ public: // Constructors and destructor
+
+ /**
+ * C++ default constructor.
+ */
+ CT_LbsClientPosTp76(CT_LbsServer& aParent);
+
+ /**
+ * Destructor.
+ */
+ ~CT_LbsClientPosTp76();
+
+ public: // Functions from base classes
+
+ /**
+ * From CT_LbsPortedStepBase
+ * Runs the test in the module
+ */
+ void StartL();
+
+ private: // New functions
+
+ /**
+ * Leaves if aCondition is false.
+ * @param aCondition something that should be true
+ */
+ void AssertTrueL(TBool aCondition, const TDesC& errorMsg);
+
+ /**
+ * Leaves if aCondition is false.
+ * @param aCondition something that should be true
+ */
+ void AssertTrueSecL(TBool aCondition, const TDesC& aErrorMsg, TInt aErrorCode);
+
+ void CheckModuleInfoL(const TPositionModuleInfo& dbInfo,
+ const TPositionModuleInfo& clientInfo);
+
+ };
+
+#endif // __CT_LBS_CLIENT_POS_TP76_H__
+
+// End of File
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/lbsclient/inc/ctlbsclientpostp93.h Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,67 @@
+/*
+* Copyright (c) 2001-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:
+*
+*/
+
+
+
+#ifndef __CT_LBS_CLIENT_POS_TP93_H__
+#define __CT_LBS_CLIENT_POS_TP93_H__
+
+// INCLUDES
+#include "ctlbsportedstepbase.h"
+
+
+// CLASS DECLARATION
+
+/**
+* Test procedure 93
+*
+*/
+class CT_LbsClientPosTp93 : public CT_LbsPortedStepBase
+ {
+ public: // Constructors and destructor
+
+ /**
+ * C++ default constructor.
+ */
+ CT_LbsClientPosTp93(CT_LbsServer& aParent);
+
+ /**
+ * Destructor.
+ */
+ ~CT_LbsClientPosTp93();
+
+ public: // Functions from base classes
+
+ /**
+ * From CT_LbsPortedStepBase
+ * Deinitializes the test. Always called, even if test leaves.
+ */
+ void CloseTest();
+
+ /**
+ * From CT_LbsPortedStepBase
+ */
+ void StartL();
+
+ private:
+ RArray<TInt> iRequestArray;
+ RArray<TPtrC> iNameArray;
+ };
+
+#endif // __CT_LBS_CLIENT_POS_TP93_H__
+
+// End of File
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/lbsclient/inc/ctlbsclientserver.h Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,46 @@
+// 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 CT_LbsClientServer.h
+// This contains the header file for LBS Client Test server
+//
+//
+
+#ifndef __CT_LBS_CLIENT_SERVER_H__
+#define __CT_LBS_CLIENT_SERVER_H__
+
+// System includes
+
+// User includes
+#include "ctlbsserver.h"
+#include "ctlbsshareddata.h"
+
+
+_LIT(KLbsClientTestServer,"LbsClientTestServer");
+
+
+// Implements the LBS Client Test server
+class CT_LbsClientServer : public CT_LbsServer
+ {
+public :
+ static CT_LbsClientServer* NewL();
+ // Creates the test steps based on the test step name
+ virtual CTestStep* CreateTestStep(const TDesC& aStepName);
+ ~CT_LbsClientServer();
+ CT_LbsClientServer();
+
+protected:
+ void ConstructL(const TDesC& aName);
+ };
+
+#endif //__CT_LBS_CLIENT_SERVER_H__
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/lbsclient/inc/ctlbsclientshareddata.h Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,58 @@
+// 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 CT_LbsClientSharedData.h
+// This contains the header file for CT_LbsClientSharedData
+//
+//
+
+
+#ifndef __CT_LBS_CLIENT_SHARED_DATA_H__
+#define __CT_LBS_CLIENT_SHARED_DATA_H__
+
+// system includes
+#include <e32cmn.h>
+
+// Lbs includes
+#include <lbspositioninfo.h>
+#include <lbscommon.h>
+
+
+class CT_LbsClientSharedData : public CBase
+{
+public:
+ static CT_LbsClientSharedData* NewL();
+ CT_LbsClientSharedData();
+ ~CT_LbsClientSharedData();
+
+private:
+ void ConstructL();
+
+public:
+ RPointerArray<TAny> iVerifyPosInfoArr;
+ RPointerArray<TAny> iCurrentPosInfoArr;
+
+ TPositionModuleInfo iVerifyModuleInfo;
+ TPositionModuleInfo iCurrentModuleInfo;
+
+ TPositionModuleStatus iVerifyModuleStatus;
+ TPositionModuleStatus iCurrentModuleStatus;
+
+ TPositionModuleStatusEvent iVerifyModuleStatusEvent;
+ TPositionModuleStatusEvent iCurrentModuleStatusEvent;
+
+ TPositionUpdateOptions iVerifyUpdateOpts;
+ TPositionUpdateOptions iCurrentUpdateOpts;
+};
+
+#endif // __CT_LBS_CLIENT_SHARED_DATA_H__
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/lbsclient/inc/ctlbsclientstep.h Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,85 @@
+// 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 CT_LbsClientStep.h
+// This contains the header file for LBS Client Test Step Base
+//
+//
+
+#ifndef __CT_LBS_CLIENT_STEP_H__
+#define __CT_LBS_CLIENT_STEP_H__
+
+#include <testexecutestepbase.h>
+#include <lbs.h>
+#include <lbsnetsimtest.h>
+
+#include "ctlbsclientserver.h"
+
+//todo: is this a sensible place to put this as it's used by many teststeps?
+const TTimeIntervalMicroSeconds32 delay10Seconds = 10000000;
+
+
+class CT_LbsClientStep : public CTestStep
+{
+
+public:
+ virtual ~CT_LbsClientStep();
+
+ virtual TVerdict doTestStepPreambleL();
+ virtual TVerdict doTestStepPostambleL();
+
+protected:
+ CT_LbsClientStep(CT_LbsClientServer& aParent);
+
+
+ // Carryout a notify position update.
+ // Must have a connect server, and a open positioner
+ // also the pos info array is appened to
+ TInt DoNotifyUpdateL(TPositionInfoBase& aPosInfo);
+
+ TInt DoLastKnownPosL(TPositionInfoBase& aPosInfo);
+
+ TInt OpenNetSim();
+ void SendResetAssistanceData(TLbsAssistanceDataGroup aMask);
+ void CloseNetSim();
+
+ CT_LbsClientServer& iParent;
+
+ RPositionServer iServer;
+ RPositioner iPositioner;
+
+ /** Net sim required for tests which invoke assistance data via AGPS module. */
+ RLbsNetSimTest iNetSim;
+
+ /** Reference position used to setup Net sim and later verification. */
+ TPosition iRefPos;
+
+
+private:
+ /**
+ Position call types - used by GetLocation() to determine which position update function to call
+
+ */
+ enum _TPositionUpdateType
+ {
+ /** EDoNotifyPosUpdate - call NotifyPositionUpdate */
+ EDoNotifyPosUpdate = 0,
+ /** EDoLastKnownPos - call GetLastKnownPosition */
+ EDoLastKnownPos = 0x01
+ };
+
+ TInt GetLocationL(TPositionInfoBase& aPosInfo, TUint32 aNotifyCallType);
+
+};
+
+#endif // __CT_LBS_CLIENT_STEP_H__
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/lbsclient/inc/ctlbsclientstep_reset_assistance.h Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,60 @@
+// 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 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 ctlbsclientstep_reset_assistance.h
+//
+//
+
+#ifndef __CT_LBS_CLIENT_STEP_RESET_ASSISTANCE_H__
+#define __CT_LBS_CLIENT_STEP_RESET_ASSISTANCE_H__
+
+#include "ctlbsclientstep.h"
+#include "ctlbsclientserver.h"
+#include "ctlbsclientnotifyposupdao.h"
+#include <lbsadmin.h>
+
+// Literals used
+_LIT(KLbsClientStep_ResetAssistance, "LbsClientStep_ResetAssistance");
+
+
+
+class CT_LbsClientStep_ResetAssistance : public CT_LbsClientStep, MT_NotifyPosUpdateObserver
+ {
+public:
+ ~CT_LbsClientStep_ResetAssistance();
+
+ static CT_LbsClientStep_ResetAssistance* New(CT_LbsClientServer& aParent);
+ virtual TVerdict doTestStepL();
+
+ void NotifyPositionUpdateCallback(TRequestStatus& aStatus);
+
+
+private:
+ CT_LbsClientStep_ResetAssistance(CT_LbsClientServer& aParent);
+
+ void ConstructL();
+ void TempSetRequestorL();
+ TInt64 DoRequests(TBool aCold, TBool aReset);
+
+
+private:
+
+ // To allow changing admin settings.
+ CLbsAdmin* iLbsAdmin;
+
+ TBool iRequestedAssData;
+ TBool iReceivedAssData;
+
+ };
+
+#endif //__CT_LBS_CLIENT_STEP_RESET_ASSISTANCE_H__
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/lbsclient/inc/ctlbsclientstepassistance.h Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,89 @@
+// 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 ctlbsclientstepassistance.h
+// This contains the header file for assistance data Tests
+//
+//
+
+#ifndef __CT_LBS_CLIENT_STEP_ASSISTANCE_H__
+#define __CT_LBS_CLIENT_STEP_ASSISTANCE_H__
+
+#include <lbsadmin.h>
+//Lbs test include
+#include "ctlbsnetsimstep.h"
+#include "ctlbsdoposupdate.h"
+#include "ctlbsclientserver.h"
+
+// Literals used
+_LIT(KLbsClientStep_Assistance, "LbsClientStep_Assistance");
+
+// Callbacks flags.
+const TLbsCallbackFlags KLbsCallback_Got_NotifyUpdate = 0x1000;
+
+class CT_LbsClientStep_Assistance : public CT_LbsNetSimStep,
+ MT_LbsDoPosUpdateObserver
+
+ {
+
+public:
+ ~CT_LbsClientStep_Assistance();
+
+ static CT_LbsClientStep_Assistance* New(CT_LbsClientServer& aParent);
+ virtual TVerdict doTestStepL();
+
+ // From CT_LbsNetSimStep via CT_LbsAssDataStep
+ void Connected();
+ void Disconnected();
+ void NotifyRegisterLcsMoLr(const TDesC& aData);
+ void NotifyReleaseLcsMoLr(TInt aReason);
+ void NotifyMeasurementControlLocation(const TPositionInfo& aPosition, const RLbsAssistanceDataBuilderSet& aData, const TLbsNetPosRequestQuality& aQuality);
+ //void NotifyReleaseLcsLocationNotification(const CLbsNetworkProtocolBase::TLbsPrivacyResponse& aResult);
+ void NotifyFacilityLcsMoLrResult(TInt aReason, const TPositionInfo& aPosition);
+ void NotifyMeasurementReportLocation(const TPositionInfo& aPosition);
+ void NotifyMeasurementReportRequestMoreAssistanceData(const TLbsAssistanceDataGroup& aFilter);
+ void NotifyMeasurementReportControlFailure(TInt aReason);
+
+ // From MT_LbsDoPosUpdateObserver - Position notify update callback.
+ void MT_LbsDoPosUpdateCallback(TRequestStatus& aStatus);
+
+private:
+
+ CT_LbsClientStep_Assistance(CT_LbsClientServer& aParent);
+ void ConstructL();
+
+
+ enum { EStartMTLRPrivReq = CT_LbsNetSimStep::ELast,
+ EStartMTLRLocReq};
+
+
+ CT_LbsClientServer& iParent;
+
+ /** Current test case being executed.
+ */
+ TInt iTestCaseId;
+
+ // to allow changing admin settings:
+ CLbsAdmin* iLbsAdmin;
+
+ /** Active object wrapper to allow MO-LRs.
+ */
+ CT_LbsDoPosUpdate* iDoPosUpdate;
+
+ /** Used to monitor the number of assistance data events we receviced during a test.
+ */
+ TUint iAssEventCount;
+
+ };
+
+#endif //__CT_LBS_CLIENT_STEP_ASSISTANCE_H__
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/lbsclient/inc/ctlbsclientstepcellbasednpud.h Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,92 @@
+// 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 ctlbsclientstepcellbasednpud.h
+// This contains the header file for Notify Position Update Tests
+//
+//
+
+#ifndef __CT_LBS_CLIENT_STEP_CELLBASED_NOTIFY_POS_UPDATE_H__
+#define __CT_LBS_CLIENT_STEP_CELLBASED_NOTIFY_POS_UPDATE_H__
+
+#include "ctlbsclientstep.h"
+#include "ctlbsclientserver.h"
+#include "ctlbsclientnotifyposupdao.h"
+#include "ctlbsnetsimstep.h"
+#include "ctlbsdoposupdate.h"
+
+#include <lbsadmin.h>
+#include <lbsnetsimtest.h>
+
+// Literals used
+_LIT(KLbsClientStep_CellBasedNotifyPosUpdate, "LbsClientStep_CellBasedNotifyPosUpdate");
+
+const TLbsCallbackFlags KLbsCallback_Got_NotifyPositionUpdate = 0x1000;
+
+class CT_LbsClientStep_CellBasedNotifyPosUpdate : public CT_LbsNetSimStep,
+ public MT_LbsDoPosUpdateObserver
+ {
+public:
+ ~CT_LbsClientStep_CellBasedNotifyPosUpdate();
+
+ static CT_LbsClientStep_CellBasedNotifyPosUpdate* New(CT_LbsClientServer& aParent);
+ virtual TVerdict doTestStepL();
+
+ // From CT_LbsNetSimStep:
+ void Connected();
+ void Disconnected();
+ void NotifyRegisterLcsMoLr(const TDesC& aData);
+ void NotifyReleaseLcsMoLr(TInt aReason);
+ void NotifyMeasurementControlLocation(const TPositionInfo& aPosition, const RLbsAssistanceDataBuilderSet& aData, const TLbsNetPosRequestQuality& aQuality);
+ void NotifyReleaseLcsLocationNotification(const CLbsNetworkProtocolBase::TLbsPrivacyResponse& aResult);
+ void NotifyFacilityLcsMoLrResult(TInt aReason, const TPositionInfo& aPosition);
+ void NotifyMeasurementReportLocation(const TPositionInfo& aPosition);
+ void NotifyMeasurementReportRequestMoreAssistanceData(const TLbsAssistanceDataGroup& aFilter);
+ void NotifyMeasurementReportControlFailure(TInt aReason);
+ void NotifyError(MLbsNetSimTestObserver::EFunction aFunction, int aError);
+ void ProcessMeasurementControlLocationError(TInt aError);
+
+
+ // From MT_LbsDoPosUpdateObserver:
+ void MT_LbsDoPosUpdateCallback(TRequestStatus& aStatus);
+
+
+private:
+ CT_LbsClientStep_CellBasedNotifyPosUpdate(CT_LbsClientServer& aParent);
+
+ void ConstructL();
+
+private:
+
+ // whether the network should be available
+ TBool iNetworkUnavailable;
+
+ // whether (and when) the request should be cancelled
+ TBool iCancel;
+ TBool iCancelBeforePosUpdate;
+ TBool iCancelOnPosUpdate;
+ TBool iIsCancelTest;
+ TBool iMultiReq;
+
+ // to allow us to set a ref location in NetSim for network-based updates and monitor network:
+ RLbsNetSimTest iNetSim;
+
+ CT_LbsClientServer& iParent;
+
+ CT_LbsDoPosUpdate* iDoPosUpdate;
+
+ // Number of NotifyPositionUpdates the test case should do
+ TUint iNumNPUDs;
+ };
+
+#endif //__CT_LBS_CLIENT_STEP_CELLBASED_NOTIFY_POS_UPDATE_H__
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/lbsclient/inc/ctlbsclientstepignoreaccurracysetting.h Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,47 @@
+// Copyright (c) 2007-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 ctlbsclientstepignoreaccurracysetting.h
+//
+//
+
+#ifndef __CT_LBS_CLIENT_STEP_IGNORE_ACCURACY_SETTING_H__
+#define __CT_LBS_CLIENT_STEP_IGNORE_ACCURACY_SETTING_H__
+
+#include <e32cmn.h>
+#include "ctlbsclientstep.h"
+#include "ctlbsclientserver.h"
+
+#include <ctlbsagpshandler.h>
+
+// Literals used
+_LIT(KLbsClientStep_IgnoreAccuracySetting, "LbsClientStep_IgnoreAccuracySetting");
+
+class CT_LbsClientStep_IgnoreAccuracySetting : public CT_LbsClientStep
+ {
+public:
+ ~CT_LbsClientStep_IgnoreAccuracySetting();
+
+ static CT_LbsClientStep_IgnoreAccuracySetting* New(CT_LbsClientServer& aParent);
+ virtual TVerdict doTestStepPreambleL();
+ virtual TVerdict doTestStepL();
+
+private:
+ CT_LbsClientStep_IgnoreAccuracySetting(CT_LbsClientServer& aParent);
+ void ConstructL();
+
+private:
+ TInt iTestCaseId;
+ };
+
+#endif //__CT_LBS_CLIENT_STEP_IGNORE_ACCURACY_SETTING_H__
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/lbsclient/inc/ctlbsclientstepignoreaccurracysettingtracking.h Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,48 @@
+// Copyright (c) 2007-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 ctlbsclientstepignoreaccurracysettingtracking.h
+//
+//
+
+#ifndef __CT_LBS_CLIENT_STEP_IGNORE_ACCURACY_SETTING_TRACKING_H__
+#define __CT_LBS_CLIENT_STEP_IGNORE_ACCURACY_SETTING_TRACKING_H__
+
+#include <e32cmn.h>
+#include "ctlbsclientstep.h"
+#include "ctlbsclientserver.h"
+
+#include <ctlbsagpshandler.h>
+
+// Literals used
+_LIT(KLbsClientStep_IgnoreAccuracySettingTracking, "LbsClientStep_IgnoreAccuracySettingTracking");
+
+class CT_LbsClientStep_IgnoreAccuracySettingTracking : public CT_LbsClientStep
+ {
+public:
+ ~CT_LbsClientStep_IgnoreAccuracySettingTracking();
+
+ static CT_LbsClientStep_IgnoreAccuracySettingTracking* New(CT_LbsClientServer& aParent);
+ virtual TVerdict doTestStepPreambleL();
+ virtual TVerdict doTestStepL();
+
+private:
+ CT_LbsClientStep_IgnoreAccuracySettingTracking(CT_LbsClientServer& aParent);
+ void ConstructL();
+
+private:
+ TInt iTestCaseId;
+ RPointerArray<TAny> iExpectedUpdateArray;
+ };
+
+#endif //__CT_LBS_CLIENT_STEP_IGNORE_ACCURACY_SETTING_TRACKING_H__
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/lbsclient/inc/ctlbsclientsteplastknownpos.h Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,41 @@
+// 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 ctlbsclientsteplastknownpos.h
+// This contains the header file for Last Known Position Tests
+//
+//
+
+#ifndef __CT_LBS_CLIENT_STEP_LAST_KNOWN_POS_H__
+#define __CT_LBS_CLIENT_STEP_LAST_KNOWN_POS_H__
+
+#include "ctlbsclientstep.h"
+#include "ctlbsclientserver.h"
+
+// Literals used
+_LIT(KLbsClientStep_LastKnownPos, "LbsClientStep_LastKnownPos");
+
+class CT_LbsClientStep_LastKnownPos : public CT_LbsClientStep
+ {
+public:
+ ~CT_LbsClientStep_LastKnownPos();
+
+ static CT_LbsClientStep_LastKnownPos* New(CT_LbsClientServer& aParent);
+ virtual TVerdict doTestStepL();
+ void SwitchOnselfLocateAPIL();
+
+private:
+ CT_LbsClientStep_LastKnownPos(CT_LbsClientServer& aParent);
+ };
+
+#endif //__CT_LBS_CLIENT_STEP_LAST_KNOWN_POS_H__
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/lbsclient/inc/ctlbsclientstepmodinfo.h Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,40 @@
+// 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 ctlbsclientstepmodinfo.h
+// This contains the header file for Module Information Tests
+//
+//
+
+#ifndef __CT_LBS_CLIENT_STEP_MOD_INFO_H__
+#define __CT_LBS_CLIENT_STEP_MOD_INFO_H__
+
+#include "ctlbsclientstep.h"
+#include "ctlbsclientserver.h"
+
+// Literals used
+_LIT(KLbsClientStep_ModInfo, "LbsClientStep_ModInfo");
+
+class CT_LbsClientStep_ModInfo : public CT_LbsClientStep
+ {
+public:
+ ~CT_LbsClientStep_ModInfo();
+
+ static CT_LbsClientStep_ModInfo* New(CT_LbsClientServer& aParent);
+ virtual TVerdict doTestStepL();
+
+private:
+ CT_LbsClientStep_ModInfo(CT_LbsClientServer& aParent);
+ };
+
+#endif //__CT_LBS_CLIENT_STEP_MOD_INFO_H__
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/lbsclient/inc/ctlbsclientstepmodselect.h Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,73 @@
+// 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 ctlbsclientstepmodselect.h
+// This contains the header file for Capability Tests
+//
+//
+
+#ifndef __CT_LBS_CLIENT_STEP_MODSELECT_H__
+#define __CT_LBS_CLIENT_STEP_MODSELECT_H__
+
+#include "ctlbsclientstep.h"
+#include "ctlbsclientserver.h"
+#include <lbsnetsimtest.h>
+
+// Literals used
+_LIT(KLbsClientStep_ModSelect, "LbsClientStep_ModSelect");
+
+class CT_LbsClientStep_ModSelect : public CT_LbsClientStep
+ {
+public:
+ ~CT_LbsClientStep_ModSelect();
+
+ static CT_LbsClientStep_ModSelect* New(CT_LbsClientServer& aParent);
+
+ virtual TVerdict doTestStepL();
+
+private:
+ CT_LbsClientStep_ModSelect(CT_LbsClientServer& aParent);
+
+ enum TModuleType
+ {
+ ERandomModule,
+ EAGPSModule,
+ ENetworkModule
+ };
+ enum TOpenSesstionMethod
+ {
+ ENone,
+ EWithCriteria,
+ EWithModuleId
+ };
+
+ void DoModuleSelectionL(TOpenSesstionMethod aMethod, TModuleType aModuleType);
+ TInt SetupNetSimL();
+
+ TInt Blocking_NotifyUpdateL();
+ TInt Blocking_NofifyUpdateWithCriteriaL(TPositionCriteria aCriteria);
+ TInt Blocking_NotifyUpdateWithModuleIdL(TPositionModuleId aModuleId);
+ TInt Blocking_NotifyUpdateCommonL();
+
+ TBool VerifyLastModuleIdWasAGpsL();
+ TBool VerifyLastModuleIdWasNetworkL();
+
+ RLbsNetSimTest iNetSim;
+
+ TPositionCriteria iCriteria; // default capability is ECapabilityHorizontal
+ TPositionQuality iQuality;
+ TPositionSelectionOrder iSelectOrder;
+ TPositionModuleId iModuleId;
+ };
+
+#endif //__CT_LBS_CLIENT_STEP_MODSELECT_H__
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/lbsclient/inc/ctlbsclientstepmodstatus.h Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,49 @@
+// 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 ctlbsclientstepmodstatus.h
+// This contains the header file for Module Status Tests
+//
+//
+
+#ifndef __CT_LBS_CLIENT_STEP_MOD_STAT_H__
+#define __CT_LBS_CLIENT_STEP_MOD_STAT_H__
+
+#include "ctlbsclientstep.h"
+#include "ctlbsclientserver.h"
+
+#include <lbscommon.h>
+
+// Literals used
+_LIT(KLbsClientStep_ModStatus, "LbsClientStep_ModStatus");
+
+class CT_LbsClientStep_ModStat : public CT_LbsClientStep
+ {
+public:
+ ~CT_LbsClientStep_ModStat();
+
+ static CT_LbsClientStep_ModStat* New(CT_LbsClientServer& aParent);
+ virtual TVerdict doTestStepL();
+
+private:
+
+ TBool DoRequestAndVerifyModStatusEventsL(TPositionModuleStatusEvent::TModuleEvent aReqEventsMask, TPositionModuleStatus& aModStatus, TPositionModuleId aModId /*= KPositionNullModuleId*/);
+ TBool DoRequestAndVerifyAGPSModStatusEventsL(TPositionModuleStatusEvent::TModuleEvent aReqEventsMask, TPositionModuleStatus& aModStatus);
+ TInt DoRequestModStatusEventsWithError(TPositionModuleStatusEvent::TModuleEvent aReqEventsMask, TPositionModuleId aModId);
+
+ TBool DoVerifyModStatus(TPositionModuleStatusEvent::TModuleEvent aExpectedModStatus,TPositionModuleId aModId);
+
+ CT_LbsClientStep_ModStat(CT_LbsClientServer& aParent);
+ };
+
+#endif //__CT_LBS_CLIENT_STEP_MOD_STAT_H__
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/lbsclient/inc/ctlbsclientstepmultireq.h Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,77 @@
+// 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 ctlbsclientstepmultireq.h
+// This contains the header file for multi requests Tests
+//
+//
+
+#ifndef __CT_LBS_CLIENT_STEP_MULTIREQ_H__
+#define __CT_LBS_CLIENT_STEP_MULTIREQ_H__
+
+#include "ctlbsclientstep.h"
+#include "ctlbsclientserver.h"
+#include "ctlbsclientgetlkpao.h"
+#include "ctlbsclientnotifyposupdao.h"
+
+
+// Literals used
+_LIT(KLbsClientStep_MultiReq, "LbsClientStep_MultiReq");
+
+_LIT(KLbsMultiReqTestSuitePanic,"Lbs Multi Requests Test Suite Panic");
+
+
+class CT_LbsClientStep_MultiReq : public CT_LbsClientStep, public MT_GetLastKnownPosObserver, public MT_NotifyPosUpdateObserver
+ {
+public:
+ ~CT_LbsClientStep_MultiReq();
+
+ static CT_LbsClientStep_MultiReq* NewL(CT_LbsClientServer& aParent);
+ static CT_LbsClientStep_MultiReq* New(CT_LbsClientServer& aParent);
+
+ virtual TVerdict doTestStepL();
+
+//from MT_GetLastKnownPosObserver:
+ virtual void GetLastKnownPositionCallback(TRequestStatus& aStatus);
+//from MT_NotifyPosUpdateObserver:
+ virtual void NotifyPositionUpdateCallback(TRequestStatus& aStatus);
+// tidy up (must be public to allow calling through timer callback function)
+ void CT_LbsClientStep_MultiReq::AsyncTidyUp();
+
+private:
+
+ enum TMultiReqState
+ /**
+ * states
+ */
+ {
+ EStateUnknown, /*!< state unknown. */
+ EStateLastKnownPositionComplete, /*!< Last Known Position request has completed */
+ EStateLastNotifyPositionUpdateComplete, /*!< Notify Position Update request has completed */
+ EStateDone /*!< Last Known Position and Position Update requests have both completed */
+ };
+ TMultiReqState iState;
+
+ CT_LbsClientStep_MultiReq(CT_LbsClientServer& aParent);
+
+ // timer for requests timeouts
+ CPeriodic* iTimer;
+
+ CT_LbsClientGetLastKnownPosAO* iGetLastKnownPosAO;
+ CT_LbsClientNotifyPosUpdAO* iNotifyPosUpdateAO;
+
+ TPositionInfo* iTempPosInfo;
+
+ };
+
+#endif //__CT_LBS_CLIENT_STEP_MULTIREQ_H__
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/lbsclient/inc/ctlbsclientstepnotifyposupdate.h Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,62 @@
+// 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 CT_LbsClientStep_NotifyPosUpdate.h
+// This contains the header file for Notify Position Update Tests
+//
+//
+
+#ifndef __CT_LBS_CLIENT_STEP_NOTIFY_POS_UPDATE_H__
+#define __CT_LBS_CLIENT_STEP_NOTIFY_POS_UPDATE_H__
+
+#include "ctlbsclientstep.h"
+#include "ctlbsclientserver.h"
+#include "ctlbsclientnotifyposupdao.h"
+#include <lbsadmin.h>
+
+_LIT(KNumPositions, "num_positions");
+
+// Literals used
+_LIT(KLbsClientStep_NotifyPosUpdate, "LbsClientStep_NotifyPosUpdate");
+
+
+
+class CT_LbsClientStep_NotifyPosUpdate : public CT_LbsClientStep, MT_NotifyPosUpdateObserver
+ {
+public:
+ ~CT_LbsClientStep_NotifyPosUpdate();
+
+ static CT_LbsClientStep_NotifyPosUpdate* New(CT_LbsClientServer& aParent);
+ virtual TVerdict doTestStepL();
+
+ void NotifyPositionUpdateCallback(TRequestStatus& aStatus);
+
+
+private:
+ CT_LbsClientStep_NotifyPosUpdate(CT_LbsClientServer& aParent);
+
+ void ConstructL();
+ void TempSetRequestorL();
+
+
+private:
+
+ // To allow changing admin settings.
+ CLbsAdmin* iLbsAdmin;
+
+ TBool iRequestedAssData;
+ TBool iReceivedAssData;
+
+ };
+
+#endif //__CT_LBS_CLIENT_STEP_NOTIFY_POS_UPDATE_H__
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/lbsclient/inc/ctlbsclientstepopenclose.h Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,43 @@
+// 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 CT_LbsClientStep_OpenClose.h
+// This contains the header file for Server Open Close Tests
+//
+//
+
+#ifndef __CT_LBS_CLIENT_STEP_OPEN_CLOSE_H__
+#define __CT_LBS_CLIENT_STEP_OPEN_CLOSE_H__
+
+#include "ctlbsclientstep.h"
+#include "ctlbsclientserver.h"
+
+// Literals used
+_LIT(KLbsClientStep_OpenClose, "LbsClientStep_SrvOpenClose");
+
+class CT_LbsClientStep_OpenClose : public CT_LbsClientStep
+ {
+public:
+ ~CT_LbsClientStep_OpenClose();
+
+ static CT_LbsClientStep_OpenClose* NewL(CT_LbsClientServer& aParent);
+ static CT_LbsClientStep_OpenClose* New(CT_LbsClientServer& aParent);
+
+ virtual TVerdict doTestStepL();
+
+private:
+ CT_LbsClientStep_OpenClose(CT_LbsClientServer& aParent);
+
+ };
+
+#endif //__CT_LBS_CLIENT_STEP_OPEN_CLOSE_H__
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/lbsclient/inc/ctlbsclientsteppartialupdate.h Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,78 @@
+// 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 ctlbsclientsteppartialupdate.h
+// This contains the header file for Update Options Tests
+//
+//
+
+#ifndef __CT_LBS_CLIENT_PARTIALUPDATE_H__
+#define __CT_LBS_CLIENT_PARTIALUPDATE_H__
+
+#include "ctlbsclientserver.h"
+#include "ctlbsnetsimstep.h"
+#include "ctlbsdoposupdate.h"
+
+
+// Literals used
+_LIT(KLbsClientStep_PartialUpdate, "LbsClientStep_PartialUpdate");
+
+class CT_LbsClientStep_PartialUpdate : public CT_LbsNetSimStep, MT_LbsDoPosUpdateObserver
+ {
+public:
+ ~CT_LbsClientStep_PartialUpdate();
+
+ static CT_LbsClientStep_PartialUpdate* New(CT_LbsClientServer& aParent);
+ virtual TVerdict doTestStepL();
+
+ // From MLbsNetSimTestObserver.
+ virtual void Connected();
+ virtual void NotifyRegisterLcsMoLr(const TDesC& aData);
+ virtual void NotifyReleaseLcsMoLr(TInt aReason);
+ virtual void NotifyMeasurementControlLocation(const TPositionInfo& aPosition, const RLbsAssistanceDataBuilderSet& aData, const TLbsNetPosRequestQuality& aQuality);
+ virtual void NotifyMeasurementReportLocation(const TPositionInfo& aPosition);
+ virtual void NotifyFacilityLcsMoLrResult(TInt aReason, const TPositionInfo& aPosition);
+
+ void MT_LbsDoPosUpdateCallback(TRequestStatus& aStatus);
+
+private:
+ CT_LbsClientStep_PartialUpdate(CT_LbsClientServer& aParent);
+ void ConstructL();
+
+ TInt OpenNetSim();
+ void CloseNetSim();
+ void VerifyPosInfos();
+
+private:
+
+ enum TPosUpdateStatus
+ {
+ EPositionUpdateStart,
+ EPositionUpdateContinue,
+ EPositionUpdateComplete
+ };
+
+
+ TInt iTestCaseId;
+ TPosUpdateStatus iPosUpdateStatus;
+
+ CT_LbsDoPosUpdate* iDoPosUpdatePtr;
+ CT_LbsClientServer& iParent;
+
+ TPositionInfo* iPosInfoPtr1;
+ TPositionInfo* iPosInfoPtr2;
+ TPosition iRefPos;
+
+ };
+
+#endif //__CT_LBS_CLIENT_PARTIALUPDATE_H__
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/lbsclient/inc/ctlbsclientstepsrvconnectclose.h Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,40 @@
+// 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 CT_LbsClientStep_SrvConnectClose.h
+// This contains the header file for Server Connect Close Tests
+//
+//
+
+#ifndef __CT_LBS_CLIENT_STEP_SRV_CONNECT_CLOSE_H__
+#define __CT_LBS_CLIENT_STEP_SRV_CONNECT_CLOSE_H__
+
+#include "ctlbsclientstep.h"
+#include "ctlbsclientserver.h"
+
+// Literals used
+_LIT(KLbsClientStep_SrvConnectClose, "LbsClientStep_SrvConnectClose");
+
+class CT_LbsClientStep_SrvConnectClose : public CT_LbsClientStep
+ {
+public:
+ ~CT_LbsClientStep_SrvConnectClose();
+
+ static CT_LbsClientStep_SrvConnectClose* New(CT_LbsClientServer& aParent);
+ virtual TVerdict doTestStepL();
+
+private:
+ CT_LbsClientStep_SrvConnectClose(CT_LbsClientServer& aParent);
+ };
+
+#endif //__CT_LBS_CLIENT_STEP_SRV_CONNECT_CLOSE_H__
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/lbsclient/inc/ctlbsclientstepsrvversion.h Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,43 @@
+// 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 CT_LbsClientStep_SrvVersion.h
+// This contains the header file for Server Version Tests
+//
+//
+
+#ifndef __CT_LBS_CLIENT_STEP_SRV_VERSION_H__
+#define __CT_LBS_CLIENT_STEP_SRV_VERSION_H__
+
+#include "ctlbsclientstep.h"
+#include "ctlbsclientserver.h"
+
+// Literals used
+_LIT(KLbsClientStep_SrvVersion, "LbsClientStep_SrvVersion");
+
+class CT_LbsClientStep_SrvVersion : public CT_LbsClientStep
+ {
+public:
+ ~CT_LbsClientStep_SrvVersion();
+
+ static CT_LbsClientStep_SrvVersion* NewL(CT_LbsClientServer& aParent);
+ static CT_LbsClientStep_SrvVersion* New(CT_LbsClientServer& aParent);
+
+ virtual TVerdict doTestStepL();
+
+private:
+ CT_LbsClientStep_SrvVersion(CT_LbsClientServer& aParent);
+
+ };
+
+#endif //__CT_LBS_CLIENT_STEP_SRV_VERSION_H__
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/lbsclient/inc/ctlbsclientsteptracking.h Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,75 @@
+// Copyright (c) 2007-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 CT_LbsClientTracking.h
+// This contains the header file for Tracking Tests
+//
+//
+
+#ifndef __CT_LBS_CLIENT_TRACKING_H__
+#define __CT_LBS_CLIENT_TRACKING_H__
+
+#include "ctlbsclientstep.h"
+#include "ctlbsclientserver.h"
+
+#include <ctlbsagpshandler.h>
+
+// Literals used
+_LIT(KLbsClientStep_Tracking, "LbsClientStep_Tracking");
+
+class CT_LbsClientStep_Tracking : public CT_LbsClientStep, MT_ResponseObserver
+ {
+public:
+ ~CT_LbsClientStep_Tracking();
+
+ static CT_LbsClientStep_Tracking* New(CT_LbsClientServer& aParent);
+ virtual TVerdict doTestStepL();
+
+ // from MT_ResponseObserver
+ virtual void ProcessAGpsResponseMessage(const TT_LbsAGpsResponseMsg::TModuleResponseType aResponse);
+
+private:
+ CT_LbsClientStep_Tracking(CT_LbsClientServer& aParent);
+ void ConstructL();
+
+ TBool VerifyFirstPosTime(const TTime& aTimeRequested, const TPositionInfo& aPosInfo, const TPositionUpdateOptions& aUpdateOpts);
+ TBool VerifyPosTime(const TTime& aTimeFirstPosReceived, const TPositionUpdateOptions& aUpdateOpts, TPositionInfo& aPosInfo, TInt aPosCount);
+
+ void DoTestCase();
+
+ void DoInterval_TestCaseId_01();
+ void DoInterval_TestCaseId_02();
+ void DoInterval_TestCaseId_03();
+ void DoInterval_TestCaseId_04();
+ void DoInterval_TestCaseId_05();
+ void DoInterval_TestCaseId_06();
+ void DoInterval_TestCaseId_07();
+ void DoInterval_TestCaseId_08();
+
+ void ConfigureModuleTimeOut(TTimeIntervalMicroSeconds& aTimeOut);
+
+private:
+
+ TInt iVerifyInterval;
+ TInt iExpectedErr;
+ TInt iUpdateIndex;
+ TInt iUpdateWindowIndex;
+ TPositionUpdateOptions iUpdateOpts;
+ TPositionInfo iPosInfo;
+
+ TBool iCheckIfSameAsPreviousPosition;
+ TPositionInfo iPreviousPos;
+ TBool iSameAsPreviousPos;
+ };
+
+#endif //__CT_LBS_CLIENT_TRACKING_H__
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/lbsclient/inc/ctlbsclientstepupdateoptions.h Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,58 @@
+// 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 CT_LbsClientUpdateOptions.h
+// This contains the header file for Update Options Tests
+//
+//
+
+#ifndef __CT_LBS_CLIENT_UPDATEOPTIONS_H__
+#define __CT_LBS_CLIENT_UPDATEOPTIONS_H__
+
+#include "ctlbsclientstep.h"
+#include "ctlbsclientserver.h"
+#include <lbsadmin.h>
+
+
+// Literals used
+_LIT(KLbsClientStep_UpdateOptions, "LbsClientStep_UpdateOptions");
+
+class CT_LbsClientStep_UpdateOptions : public CT_LbsClientStep
+ {
+public:
+ ~CT_LbsClientStep_UpdateOptions();
+
+ static CT_LbsClientStep_UpdateOptions* New(CT_LbsClientServer& aParent);
+ virtual TVerdict doTestStepL();
+
+private:
+ CT_LbsClientStep_UpdateOptions(CT_LbsClientServer& aParent);
+
+ void CT_LbsClientStep_UpdateOptions::TempSetRequestorL();
+ TBool CT_LbsClientStep_UpdateOptions::CompareUpdateOptions(TPositionUpdateOptions aPosA, TPositionUpdateOptions aPosB);
+
+ TBool VerifyFirstPosTime(const TTime& aTimeRequested, const TPositionInfo& aPosInfo, const TPositionUpdateOptions& aUpdateOpts);
+ TBool VerifyPosTime(const TTime& aTimeFirstPosReceived, const TPositionUpdateOptions& aUpdateOpts, TPositionInfo& aPosInfo, TInt aPosCount);
+
+
+private:
+
+ // to allow changing admin settings:
+ CLbsAdmin* iLbsAdmin;
+
+ TBool iRequestedAssData;
+ TBool iReceivedAssData;
+
+ };
+
+#endif //__CT_LBS_CLIENT_UPDATEOPTIONS_H__
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/lbsclient/inc/tctlbsclientmodulesobserver.h Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,48 @@
+/*
+* Copyright (c) 2003-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:
+*
+*/
+
+
+
+#ifndef __TCT_LBS_CLIENT_MODULES_OBSERVER_H__
+#define __TCT_LBS_CLIENT_MODULES_OBSERVER_H__
+
+// INCLUDES
+#include "EPos_MPosModulesObserver.h"
+
+// CLASS DECLARATION
+
+/**
+* ?one_line_short_description.
+* ?other_description_lines
+*/
+class TCT_LbsClientModulesObserver :public MPosModulesObserver
+ {
+ public: // Functions from base classes
+
+ /**
+ * From MPosModulesDbObserver
+ */
+ inline void HandleSettingsChangeL(
+ /* IN */ TPosModulesEvent /*aEvent*/
+ ){CActiveScheduler::Stop();};
+
+
+ };
+
+#endif // __TCT_LBS_CLIENT_MODULES_OBSERVER_H__
+
+// End of File
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/lbsclient/lbsexeclient/group/bld.inf Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,20 @@
+// 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 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:
+//
+
+PRJ_PLATFORMS
+DEFAULT
+
+PRJ_TESTMMPFILES
+ctlbsexeclient.mmp
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/lbsclient/lbsexeclient/group/ctlbsexeclient.mmp Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,37 @@
+// 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 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:
+//
+
+TARGET ctlbsexeclient.exe
+TARGETTYPE exe
+UID 0 0x03a157b5
+CAPABILITY ALL -TCB
+VENDORID 0x70000001
+
+EPOCSTACKSIZE 0x5000
+
+MACRO __LBS_VARIANT2
+
+SOURCEPATH ../src
+
+SOURCE ctlbsexeclient.cpp
+
+SYSTEMINCLUDE /epoc32/include
+SYSTEMINCLUDE /epoc32/include/lbs
+SYSTEMINCLUDE /epoc32/include/lbs/test
+
+LIBRARY euser.lib
+LIBRARY lbs.lib
+LIBRARY efsrv.lib
+LIBRARY eposmodset.lib
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/lbsclient/lbsexeclient/src/ctlbsexeclient.cpp Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,254 @@
+// Copyright (c) 2001-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:
+//
+
+
+
+#include <e32base.h>
+#include <f32file.h>
+#include <LbsPositionInfo.h>
+#include <Lbs.h>
+#include <LbsCommon.h>
+#include <LbsRequestor.h>
+#include <EPos_CPosModules.h>
+#include <EPos_CPosModuleUpdate.h>
+#include <EPos_CPosModuleIdList.h>
+
+TInt DoTestL();
+
+TInt TestMainL()
+ {
+ // Create and install the active scheduler
+ CActiveScheduler* exampleScheduler=new (ELeave) CActiveScheduler;
+ CleanupStack::PushL(exampleScheduler);
+ CActiveScheduler::Install(exampleScheduler);
+ // Call function
+ TInt result = DoTestL();
+ CleanupStack::PopAndDestroy(exampleScheduler);
+ return result;
+ }
+
+void TraceL(const TDesC& aMsg, RFile& aFile)
+ {
+ const TInt KBufSize = 200;
+ TBuf8<KBufSize> tmp;
+ tmp.Copy(aMsg);
+ _LIT(KEnd,";\r\n");
+ tmp.Append(KEnd);
+ aFile.Write(tmp);
+ }
+
+/**
+* Setup PSY
+*/
+void SetupPsyL(const TUid aPsyUid)
+ {
+ CPosModules* db = CPosModules::OpenL();
+ CleanupStack::PushL(db);
+
+ CPosModuleUpdate* enable = CPosModuleUpdate::NewLC();
+ CPosModuleUpdate* disable = CPosModuleUpdate::NewLC();
+
+ disable->SetUpdateAvailability(EFalse);
+ enable->SetUpdateAvailability(ETrue);
+
+ CPosModuleIdList* prioList = db->ModuleIdListLC();
+
+ for (TInt i = 0 ; i < prioList->Count(); i++)
+ {
+ if ((*prioList)[i] != aPsyUid)
+ {
+ // Disable all PSYs except one given as parameter
+ db->UpdateModuleL((*prioList)[i], *disable);
+ }
+ else
+ {
+ // Enable the PSY that came as an in parameter
+ db->UpdateModuleL((*prioList)[i], *enable);
+ }
+ }
+
+ CleanupStack::PopAndDestroy(prioList);
+ CleanupStack::PopAndDestroy(disable);
+ CleanupStack::PopAndDestroy(enable);
+ CleanupStack::PopAndDestroy(db);
+ }
+
+/**
+* Method used to generate a file name for trace.
+* If a trace file exist an index number i counted
+* one step until a trace file can be created.
+* Maximun number of exe client are currently hard
+* coded to 10;
+*/
+TBuf<40> GenerateFileNameForTraceL()
+ {
+ _LIT(KFileTrace, "c:\\logs\\execlientresult%d.txt");
+ RFs fileserver;
+ RFile file;
+ User::LeaveIfError(fileserver.Connect());
+ TBuf<40> ff;
+ ff.Append(KFileTrace);
+
+ for (TInt i = 1; i<10;i++)
+ {
+ ff.Format(KFileTrace,i);
+ TInt err = file.Open(fileserver,ff, EFileWrite);
+ if (err == KErrNotFound)
+ {
+ User::LeaveIfError(file.Create(fileserver,ff, EFileWrite));
+ break;
+ }
+ }
+ file.Close();
+ fileserver.Close();
+ return ff;
+}
+
+/**
+* Error checking and output error to Trace File.
+*/
+void AssertTrueL(TBool aCondition, const TDesC& aErrorMsg, TInt aErrorCode, RFile& aFile)
+ {
+ if (!aCondition)
+ {
+ TBuf<100> buf;
+ buf.Format(aErrorMsg, aErrorCode);
+ TraceL(buf, aFile);
+ //User::Leave(aErrorCode);
+ }
+ }
+
+/**
+* Performes the test by connecting to MLFW and makes 50 Location request
+*/
+TInt DoTestL()
+ {
+ TBuf<40> traceFile = GenerateFileNameForTraceL();
+
+ RFs fileserver;
+ RFile file;
+ User::LeaveIfError(fileserver.Connect());
+ CleanupClosePushL(fileserver);
+ User::LeaveIfError(file.Open(fileserver, traceFile, EFileWrite));
+ CleanupClosePushL(file);
+ _LIT(KClientStarted, "Client Started");
+ TraceL(KClientStarted, file);
+
+ const TInt32 KUidMultiPsy = 0x01010176;
+ TUid uidMultiPsy;
+ uidMultiPsy.iUid = KUidMultiPsy;
+ SetupPsyL(uidMultiPsy);
+
+ _LIT(KMultiPsySetup, "MultiPsy set up");
+ TraceL(KMultiPsySetup, file);
+
+ TInt numberOfRuns = 50;
+
+ RPositionServer posServer;
+ CleanupClosePushL(posServer);
+ RPositioner positioner;
+ CleanupClosePushL(positioner);
+ TPositionInfo positionInfo = TPositionInfo();
+
+ _LIT(KConnectErr, "ERROR: Error when connecing to EPos server, %d");
+ TInt err = posServer.Connect();
+ AssertTrueL(err == KErrNone, KConnectErr, err, file);
+
+ _LIT(KOpenErr, "ERROR: Error when opening positioner, %d");
+ err = positioner.Open(posServer, uidMultiPsy);
+ AssertTrueL(err == KErrNone, KOpenErr, err, file);
+
+ _LIT(KService ,"Service");
+ err = positioner.SetRequestor(CRequestor::ERequestorService,
+ CRequestor::EFormatApplication, KService);
+ _LIT(KRequestor, "ERROR: Not possible to set requestor");
+ AssertTrueL(err == KErrNone, KRequestor, err, file);
+
+ TTime now, startTime;
+ TTimeIntervalMicroSeconds requestTime;
+ TRequestStatus status;
+ TInt64 reqTime;
+ TCoordinate corr(0,0,0);
+ TLocality loca(corr,0);
+ TPosition pos(loca, TTime(0));
+ TBool success = ETrue;
+ _LIT(KStartingRequests, "Starting requests");
+ TraceL(KStartingRequests, file);
+
+ for (TInt i = 0; i < numberOfRuns; i++)
+ {
+ startTime.UniversalTime();
+ positionInfo.SetPosition(pos);
+ positioner.NotifyPositionUpdate(positionInfo, status);
+ User::WaitForRequest(status);
+ err = status.Int();
+ if (err != KErrNone)
+ {
+ success=EFalse;
+ }
+ now.UniversalTime();
+ requestTime = now.MicroSecondsFrom(startTime);
+ _LIT(KError, "Request time, %d µs. Error code from Notify = %d");
+ TBuf<100> buf;
+ reqTime = requestTime.Int64();
+ buf.Format(KError, reqTime, err);
+ TraceL(buf, file);
+ TPosition result;
+ positionInfo.GetPosition(result);
+ // Sanity check
+ if (result.Latitude() == pos.Latitude() ||
+ result.Longitude() == pos.Longitude() ||
+ result.Altitude() == pos.Altitude())
+ {
+ success = EFalse;
+ _LIT(KErrorPositon, "ERROR:: The postion was not updated");
+ TraceL(KErrorPositon, file);
+ }
+ }
+
+ CleanupStack::PopAndDestroy(&positioner);
+ CleanupStack::PopAndDestroy(&posServer);
+
+ if (success)
+ {
+ _LIT(KOk, "SUCCESS");
+ TraceL(KOk, file);
+ }
+ else
+ {
+ _LIT(KErr, "FAILED");
+ TraceL(KErr, file);
+ }
+
+ CleanupStack::PopAndDestroy(&file);
+ CleanupStack::PopAndDestroy(&fileserver);
+
+ return (success) ? 0 : 1;
+ }
+
+// Cleanup stack harness
+GLDEF_C TInt E32Main()
+ {
+ __UHEAP_MARK;
+ CTrapCleanup* cleanupStack = CTrapCleanup::New();
+ TInt result = 1;
+ TRAPD(error, result = TestMainL());
+ _LIT(KLbsExeClient, "CT Lbs Exe Client");
+ __ASSERT_ALWAYS(!error, User::Panic(KLbsExeClient, error));
+ delete cleanupStack;
+ __UHEAP_MARKEND;
+ return result;
+ }
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/lbsclient/scripts/setup_smoketest_lbs.script Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,22 @@
+//
+// Copyright (c) 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:
+//
+
+RUN_UTILS MkDir c:\smoketest\
+
+RUN_UTILS CopyFile z:\smoketest\smoketest_lbs.ini c:\smoketest\smoketest_lbs.ini
+RUN_UTILS MakeReadWrite c:\smoketest\smoketest_lbs.ini
+RUN_UTILS CopyFile z:\smoketest\smoketest_lbs.script c:\smoketest\smoketest_lbs.script
+RUN_UTILS MakeReadWrite c:\smoketest\smoketest_lbs.script
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/lbsclient/scripts/smoketest_lbs.script Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,37 @@
+// 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:
+//
+
+PRINT Run LBS smoketest
+
+LOAD_SUITE LbsClientTestServer -SharedData
+WAIT 1000
+
+START_TESTCASE SMOKE_LBS_0001
+//! @SYMTestCaseID SMOKE_LBS_0001
+//! @SYMTestCaseDesc Request module count (use GetNumModules)
+//! and ensure a count of 2 is returned to indicate the correct
+//! number of modules is installed (Network and A-GPS modules).
+
+PRINT Run LbsClientTestServer
+
+RUN_TEST_STEP 010 LbsClientTestServer LbsStep_ResetDefaultAdmin
+RUN_TEST_STEP 030 LbsClientTestServer LbsStep_StartLbs
+
+RUN_TEST_STEP 010 LbsClientTestServer LbsStep_InstallScheduler
+RUN_TEST_STEP 20 LbsClientTestServer LbsClientStep_ModInfo c:\smoketest\smoketest_lbs.ini LBS-Mod-Cnt-0001
+
+RUN_TEST_STEP 030 LbsClientTestServer LbsStep_StopLbs
+
+END_TESTCASE SMOKE_LBS_0001
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/lbsclient/src/ctlbsclienteventtimer.cpp Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,168 @@
+// Copyright (c) 2001-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:
+//
+
+
+
+// INCLUDE FILES
+#include "ctlbsclienteventtimer.h"
+#include "mctlbsrequestobserver.h"
+#include <coemain.h>
+#include "ctlbsclientrequestor.h"
+
+// ================= MEMBER FUNCTIONS =======================
+
+// C++ default constructor can NOT contain any code, that
+// might leave.
+//
+CT_LbsClientEventTimer::CT_LbsClientEventTimer()
+ : CActive(EActivePriorityDefault),
+ iTimer(),
+ iObserver(NULL),
+ iCompletionCode(KNoEvent)
+ {
+ }
+
+// EPOC default constructor can leave.
+void CT_LbsClientEventTimer::ConstructL(CTestExecuteLogger& aLogger)
+ {
+ iLogger = aLogger;
+ User::LeaveIfError(iTimer.CreateLocal());
+ CActiveScheduler::Add(this);
+ }
+
+// Two-phased constructor.
+CT_LbsClientEventTimer* CT_LbsClientEventTimer::NewL(CTestExecuteLogger& aLogger)
+ {
+ CT_LbsClientEventTimer* self = NewLC(aLogger);
+ CleanupStack::Pop();
+ return self;
+ }
+
+// Two-phased constructor.
+CT_LbsClientEventTimer* CT_LbsClientEventTimer::NewLC(CTestExecuteLogger& aLogger)
+ {
+ CT_LbsClientEventTimer* self =
+ new (ELeave) CT_LbsClientEventTimer();
+ CleanupStack::PushL(self); // push to clean-up stack
+ self->ConstructL(aLogger); // construct
+ return self; // return new object
+ }
+
+// Destructor
+CT_LbsClientEventTimer::~CT_LbsClientEventTimer()
+ {
+ iObserver = NULL;
+ Cancel();
+ iTimer.Close();
+ }
+
+// ---------------------------------------------------------
+// CT_LbsClientEventTimer::SetObserver
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CT_LbsClientEventTimer::SetObserver(MCT_LbsRequestObserver* aObserver)
+ {
+ iObserver = aObserver;
+ }
+
+// ---------------------------------------------------------
+// CT_LbsClientEventTimer::CompletionCode
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+TInt CT_LbsClientEventTimer::CompletionCode() const
+ {
+ return iCompletionCode;
+ }
+
+// ---------------------------------------------------------
+// CT_LbsClientEventTimer::ResetCompletionCode
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CT_LbsClientEventTimer::ResetCompletionCode()
+ {
+ iCompletionCode = KNoEvent;
+ }
+
+// ---------------------------------------------------------
+// CT_LbsClientEventTimer::Start
+// starts the RTimer
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CT_LbsClientEventTimer::Start(TInt aTimeout)
+ {
+ iTimer.After(iStatus, aTimeout);
+ SetActive();
+ }
+
+// ---------------------------------------------------------
+// CT_LbsClientEventTimer::DoCancel
+// cancels the RTimer
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CT_LbsClientEventTimer::DoCancel()
+ {
+ iTimer.Cancel();
+ }
+
+// ---------------------------------------------------------
+// CPosNotifierTimer::RunL
+// report a timeout to the observer
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CT_LbsClientEventTimer::RunL()
+ {
+ iCompletionCode = iStatus.Int();
+ RequestComplete();
+ }
+
+// ---------------------------------------------------------
+// CT_LbsClientEventTimer::RunError
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+TInt CT_LbsClientEventTimer::RunError(TInt /*aError*/)
+ {
+ return KErrNone;
+ }
+
+// ---------------------------------------------------------
+// CT_LbsClientEventTimer::RequestComplete
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CT_LbsClientEventTimer::RequestComplete()
+ {
+ if (iObserver)
+ {
+ TRAPD(err, iObserver->RequestCompleteL());
+ if(KErrNone != err)
+ {
+ _LIT(KRequestCompleteError, "Error in LbsRequester: %d");
+ ERR_PRINTF2(KRequestCompleteError, err);
+ }
+ }
+ }
+
+// End of File
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/lbsclient/src/ctlbsclientgetlkpao.cpp Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,99 @@
+// 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:
+// TODO - should this be moved somewhere more central (testutils, say)?
+//
+//
+
+
+
+/**
+ @file ctlbsclientgetlkpao.cpp
+*/
+
+#include "ctlbsclientgetlkpao.h"
+#include <lbs.h>
+
+_LIT(KGetLastKnownPosAO, "GetLastKnownPosAO");
+
+CT_LbsClientGetLastKnownPosAO::~CT_LbsClientGetLastKnownPosAO()
+/**
+ * Destructor
+ */
+ {
+ Cancel();
+ }
+
+
+
+CT_LbsClientGetLastKnownPosAO::CT_LbsClientGetLastKnownPosAO(MT_GetLastKnownPosObserver& aCaller) : CActive(EPriorityIdle), iCaller(aCaller)
+/**
+ * Constructor - will not leave
+ */
+ {
+ CActiveScheduler::Add(this);
+ }
+
+
+CT_LbsClientGetLastKnownPosAO* CT_LbsClientGetLastKnownPosAO::NewL(MT_GetLastKnownPosObserver& aUser)
+/**
+ * 'public constructor' may leave
+ */
+ {
+ CT_LbsClientGetLastKnownPosAO* self = new(ELeave)CT_LbsClientGetLastKnownPosAO(aUser);
+
+ return self;
+ }
+
+
+void CT_LbsClientGetLastKnownPosAO::GetLastKnownPosL(RPositioner& aPositioner, TPositionInfo& aPosInfo)
+/**
+ * wrapper for async positioner function GetLastKnownPosition().
+ * Will panic if there's another outstanding request.
+ */
+ {
+ __ASSERT_ALWAYS(!IsActive(), User::Panic(KGetLastKnownPosAO, KErrInUse));
+
+ iPositioner = aPositioner;
+
+ // TO DO: this requestor stuff will be removed when we're using the real Location Server:
+ User::LeaveIfError(iPositioner.SetRequestor( CRequestor::ERequestorService,
+ CRequestor::EFormatApplication,
+ _L("Tom Tom")));
+
+ iRequestId = EPositionerGetLastKnownPosition; // required for cancel
+
+ // Make async call
+ aPositioner.GetLastKnownPosition(aPosInfo, iStatus);
+
+ // Let the active scheduler know we're waiting (active)
+ SetActive();
+ }
+
+void CT_LbsClientGetLastKnownPosAO::DoCancel()
+ {
+ iPositioner.CancelRequest(iRequestId);
+ }
+
+void CT_LbsClientGetLastKnownPosAO::RunL()
+ {
+ // iStatus will contain error code eg KErrUnknown if no position cached
+ // async request completed. Notify caller via callback:
+ iCaller.GetLastKnownPositionCallback(iStatus);
+ }
+
+TInt CT_LbsClientGetLastKnownPosAO::RunError(TInt aError)
+ { // called if RunL leaves. aError contains the error code
+ return aError;
+ }
+// EOF
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/lbsclient/src/ctlbsclientnotifyposupdao.cpp Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,102 @@
+// 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:
+// This is the class implementation for the Notify position update tests
+// TODO - should this be moved somewhere more central (testutils, say)?
+//
+//
+
+
+
+/**
+ @file ctlbsclientnotifyposupdao.cpp
+*/
+
+#include "ctlbsclientnotifyposupdao.h"
+#include <lbs.h>
+#include <lbsadmin.h>
+
+_LIT(KNotifyPosUpdAO, "NotifyPosUpdAO");
+
+CT_LbsClientNotifyPosUpdAO::~CT_LbsClientNotifyPosUpdAO()
+/**
+ * Destructor
+ */
+ {
+ Cancel();
+ }
+
+
+
+CT_LbsClientNotifyPosUpdAO::CT_LbsClientNotifyPosUpdAO(MT_NotifyPosUpdateObserver& aCaller) : CActive(EPriorityIdle), iCaller(aCaller)
+/**
+ * Constructor - will not leave
+ */
+ {
+ CActiveScheduler::Add(this);
+ }
+
+
+CT_LbsClientNotifyPosUpdAO* CT_LbsClientNotifyPosUpdAO::NewL(MT_NotifyPosUpdateObserver& aCaller)
+/**
+ * 'public constructor' may leave
+ */
+ {
+ CT_LbsClientNotifyPosUpdAO* me = new(ELeave)CT_LbsClientNotifyPosUpdAO(aCaller);
+
+ return me;
+ }
+
+
+void CT_LbsClientNotifyPosUpdAO::NotifyPosUpdateL(RPositioner& aPositioner, TPositionInfo& aPosInfo)
+/**
+ * wrapper for async positioner function NotifyPositionUpdate().
+ * Will panic if there's another outstanding request.
+ */
+ {
+ __ASSERT_ALWAYS(!IsActive(), User::Panic(KNotifyPosUpdAO, KErrInUse));
+
+ iPositioner = aPositioner;
+ iRequestId = EPositionerNotifyPositionUpdate; // required for cancel
+
+ // TO DO: this requestor stuff will be removed when we're using the real Location Server:
+ User::LeaveIfError(iPositioner.SetRequestor(CRequestor::ERequestorService,
+ CRequestor::EFormatApplication,
+ _L("Tom Tom")));
+
+
+ // Make async call
+ aPositioner.NotifyPositionUpdate(aPosInfo, iStatus);
+
+ // Let the active scheduler know we're waiting (active)
+ SetActive();
+ }
+
+void CT_LbsClientNotifyPosUpdAO::DoCancel()
+ {
+ TInt err = iPositioner.CancelRequest(iRequestId);
+ }
+
+
+void CT_LbsClientNotifyPosUpdAO::RunL()
+ {
+ // iStatus will contain error code eg KErrUnknown if no position cached
+ // async request completed. Notify caller via callback:
+ iCaller.NotifyPositionUpdateCallback(iStatus);
+ }
+
+TInt CT_LbsClientNotifyPosUpdAO::RunError(TInt aError)
+ { // called if RunL leaves. aError contains the error code
+ return aError;
+ }
+// EOF
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/lbsclient/src/ctlbsclientobserver.cpp Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,153 @@
+// Copyright (c) 2002-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:
+//
+
+
+
+// INCLUDE FILES
+#include "ctlbsclientobserver.h"
+
+
+// CONSTANTS
+// Apparently the EposServer name is same on WINS and ARMI
+_LIT(KEPosServerName, "!PosServer");
+
+_LIT(KPrivacyServerName, "eposprivsrv"); // TBD: Is this name OK?
+
+// ================= MEMBER FUNCTIONS =======================
+
+
+// ---------------------------------------------------------
+// CT_LbsClientObserver::WaitForEPosShutdown
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CT_LbsClientObserver::WaitForEPosShutdown()
+ {
+ WaitForProcessDeath(KEPosServerName);
+ }
+
+void EPosShutdownWaitCleanupItem(TAny*)
+ {
+ CT_LbsClientObserver::WaitForEPosShutdown();
+ }
+
+// ---------------------------------------------------------
+// CT_LbsClientObserver::EPosShutdownWaitPushL
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CT_LbsClientObserver::EPosShutdownWaitPushL()
+ {
+ CleanupStack::PushL(TCleanupItem(EPosShutdownWaitCleanupItem));
+ }
+
+// ---------------------------------------------------------
+// CT_LbsClientObserver::EPosAliveL
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+TBool CT_LbsClientObserver::EPosAliveL()
+ {
+ return ProcessAliveL(KEPosServerName);
+ }
+
+// ---------------------------------------------------------
+// CT_LbsClientObserver::WaitForPrivacyServerShutdown
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CT_LbsClientObserver::WaitForPrivacyServerShutdown()
+ {
+ WaitForProcessDeath(KPrivacyServerName);
+ }
+
+void PrivacyServerShutdownWaitCleanupItem(TAny*)
+ {
+ CT_LbsClientObserver::WaitForPrivacyServerShutdown();
+ }
+
+// ---------------------------------------------------------
+// CT_LbsClientObserver::PrivacyServerShutdownWaitPushL
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CT_LbsClientObserver::PrivacyServerShutdownWaitPushL()
+ {
+ CleanupStack::PushL(TCleanupItem(PrivacyServerShutdownWaitCleanupItem));
+ }
+
+// ---------------------------------------------------------
+// CT_LbsClientObserver::PrivacyServerAliveL
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+TBool CT_LbsClientObserver::PrivacyServerAliveL()
+ {
+ return ProcessAliveL(KPrivacyServerName);
+ }
+
+// ---------------------------------------------------------
+// CT_LbsClientObserver::WaitForProcessDeath
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CT_LbsClientObserver::WaitForProcessDeath(const TDesC& aProcessName)
+ {
+#ifdef __WINS__
+ RThread process;
+#else
+ RProcess process;
+#endif
+
+ if (process.Open(aProcessName))
+ {
+ return;
+ }
+
+ TRequestStatus status;
+ process.Logon(status);
+ User::WaitForRequest(status);
+
+ process.Close();
+ }
+
+// ---------------------------------------------------------
+// CT_LbsClientObserver::ProcessAliveL
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+TBool CT_LbsClientObserver::ProcessAliveL(const TDesC& aProcessName)
+ {
+ TFindServer find(aProcessName);
+ TFullName name;
+ if (find.Next(name) == KErrNone) // server found
+ {
+ return ETrue;
+ }
+ else
+ {
+ return EFalse;
+ }
+ }
+
+// End of File
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/lbsclient/src/ctlbsclientperiodictester.cpp Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,457 @@
+// Copyright (c) 2001-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:
+//
+
+
+
+// INCLUDE FILES
+#include "ctlbsclientperiodictester.h"
+#include "ctlbsclientlog.h"
+
+// CONSTANTS
+const TInt KSmallestUpdateIntervalToLog = 4000000; //2000000
+const TInt KMilliSecondTolerance = 2500000; //One second
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+// -----------------------------------------------------------------------------
+// CPeriodicTester::CPeriodicTester
+// C++ default constructor can NOT contain any code, that
+// might leave.
+// -----------------------------------------------------------------------------
+//
+CT_LbsClientPeriodicTester::CT_LbsClientPeriodicTester() : CActive(CActive::EPriorityHigh), iError(EFalse), iErrorCode(KErrNone)
+ {
+ }
+
+// -----------------------------------------------------------------------------
+// CPeriodicTester::ConstructL
+//
+// Symbian 2nd phase constructor can leave.
+// -----------------------------------------------------------------------------
+//
+void CT_LbsClientPeriodicTester::ConstructL(
+ TTimeIntervalMicroSeconds aInterval,
+ const TDesC& aServiceName,
+ CT_LbsClientLog* aLog,
+ TUid aUid,
+ TInt aNumberOfRuns)
+ {
+ iLog = aLog;
+ iName = aServiceName;
+ iNumberOfRuns = aNumberOfRuns;
+ iInterval = aInterval;
+ iUid = aUid;
+ iNumberOfUpdates = 0;
+ iPrematureChangeOfParameters = EFalse;
+ iCanceledRequest = EFalse;
+ iCancelRequest = EFalse;
+ iWriteToLog = ETrue; //EFalse
+ iRecentTime = TTime(0);
+ iPositionInfo = TPositionInfo();
+
+ _LIT(KConnectErr, "Error when connecing to EPos server, %d");
+ TInt err = iPosServer.Connect();
+ AssertTrueL(err == KErrNone, KConnectErr, err);
+
+ _LIT(KOpenErr, "Error when opening positioner, %d");
+ err = iPositioner.Open(iPosServer, aUid);
+ AssertTrueL(err == KErrNone, KOpenErr, err);
+
+ TPositionUpdateOptions posOption;
+ posOption.SetUpdateInterval(aInterval);
+
+ _LIT(KUpdateErr, "Error when setting update interval, %d");
+ err = iPositioner.SetUpdateOptions(posOption);
+ AssertTrueL(err == KErrNone, KUpdateErr, err);
+
+ iPositioner.SetRequestor(CRequestor::ERequestorService,
+ CRequestor::EFormatApplication, aServiceName);
+
+ CActiveScheduler::Add(this);
+ }
+
+// -----------------------------------------------------------------------------
+// CPeriodicTester::NewL
+//
+// Two-phased constructor.
+// -----------------------------------------------------------------------------
+//
+CT_LbsClientPeriodicTester* CT_LbsClientPeriodicTester::NewL(
+ TTimeIntervalMicroSeconds aInterval,
+ const TDesC& aServiceName,
+ CT_LbsClientLog* aLog,
+ TUid aUid,
+ TInt aNumberOfRuns)
+ {
+ CT_LbsClientPeriodicTester* self = new( ELeave ) CT_LbsClientPeriodicTester;
+
+ CleanupStack::PushL(self);
+ self->ConstructL(aInterval, aServiceName, aLog, aUid, aNumberOfRuns);
+ CleanupStack::Pop();
+
+ return self;
+ }
+
+
+// Destructor
+CT_LbsClientPeriodicTester::~CT_LbsClientPeriodicTester()
+ {
+ iPositioner.Close();
+ iPosServer.Close();
+
+ iLog = NULL;
+ }
+
+// -----------------------------------------------------------------------------
+// CPeriodicTester::RunL
+//
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+void CT_LbsClientPeriodicTester::RunL()
+ {
+ iNumberOfUpdates++;
+ //User::Leave(-10); //used for testing the test code
+ TBuf<175> buf;
+ _LIT(KStatus,"Status invalid in RunL, status = %d");
+ buf.Format(KStatus, iStatus.Int());
+ AssertTrueL((iStatus == KErrNone || iStatus == KPositionQualityLoss ||
+ iStatus == KErrCancel), buf, iStatus.Int());
+ if(iNumberOfUpdates <= iNumberOfRuns)
+ {
+ _LIT(KTime, "%F%H:%F%T:%F%S:%F%*C3");
+ TBuf<100> time;
+ TTime now;
+ now.UniversalTime();
+ TInt difference;
+ TInt smallestIntervalToLog = KSmallestUpdateIntervalToLog;
+ if(iNumberOfUpdates == 1)
+ {
+ difference = I64LOW(now.MicroSecondsFrom(iRecentTime).Int64());
+ }
+ else
+ {
+ difference = I64LOW(now.MicroSecondsFrom(iRecentTime).Int64());
+ }
+
+ _LIT(KInterval, "The interval is %d, and the difference is %d");
+ TBuf<150> buf;
+ buf.Format(KInterval,iInterval.Int64(), difference);
+ iLog->Put (buf);
+ if((iInterval.Int64() > smallestIntervalToLog) && (I64LOW(iRecentTime.Int64()) != 0))
+ {
+ _LIT(KTimeErr, "ERROR: Time difference greater than tolerated interval, time difference = %d");
+ AssertTrueL(difference < (iInterval.Int64() + KMilliSecondTolerance), KTimeErr, I64LOW(now.MicroSecondsFrom(iRecentTime).Int64()));
+
+ if(difference < 0)
+ {
+ #ifdef __WINS__
+ _LIT(KEarlyErr, "ERROR: Negative time difference on WINS greater than 0.4s");
+ AssertTrueL((KToleratedEarliness > -(difference)), KEarlyErr, KErrTotalLossOfPrecision);
+ #else
+ _LIT(KEarlyErr, "ERROR: Time difference negative on target");
+ iLog->Put(KEarlyErr);
+ User::LeaveIfError(KErrTotalLossOfPrecision);
+ #endif
+
+ }
+ }
+
+ if(iWriteToLog && ((iNumberOfUpdates % KTracePeriod) == 0))
+ {
+ now.UniversalTime();
+ now.FormatL(time, KTime);
+ _LIT(KLog, "Client got update no. %d at %S, Time-diff = %d, Status = ");
+ TBuf<175> buf;
+ buf.Format(KLog, iNumberOfUpdates, &time, difference);
+ buf.AppendNum(iStatus.Int());
+ buf.Append(iName);
+ _LIT(KNrOfRuns, "Nr of runs = ");
+ buf.Append(KNrOfRuns);
+ buf.AppendNum(iNumberOfRuns);
+ iLog->Put(buf);
+ }
+
+ if(iPrematureChangeOfParameters)
+ {
+ iInterval = TTimeIntervalMicroSeconds(2000000);
+ User::After(I64LOW(iInterval.Int64()));
+
+ TPositionUpdateOptions posOption;
+ posOption.SetUpdateInterval(iInterval);
+
+ TInt err = iPositioner.SetUpdateOptions(posOption);
+ _LIT(KChange, "ERROR: Got error code when setting update options prematurely in ChangeTestParameters");
+ AssertTrueL(err == KErrNone, KChange, err);
+ iPrematureChangeOfParameters = EFalse;
+ }
+
+ RequestNotification();
+
+ if(iCancelRequest)
+ {
+ User::After(3000000);
+ iPositioner.CancelRequest(EPositionerNotifyPositionUpdate);
+ iCancelRequest = EFalse;
+ iCanceledRequest = ETrue;
+ }
+
+ if(iCanceledRequest)
+ {
+ iCanceledRequest = EFalse;
+ _LIT(KCancelErr, "ERROR: Status was not KErrCancel after CancelRequest");
+ AssertTrueL(iStatus.Int() == KErrCancel, KCancelErr, KErrCancel);
+ }
+ }
+ else
+ {
+ CActiveScheduler::Stop();
+ }
+
+ }
+
+
+// -----------------------------------------------------------------------------
+// CT_LbsClientPeriodicTester::RunError
+//
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+TInt CT_LbsClientPeriodicTester::RunError(TInt aError)
+ {
+ iError = ETrue;
+ iErrorCode = aError;
+ CActiveScheduler::Stop();
+ _LIT(KErrorInRunL, "Error code in RunError is, %d");
+ TBuf<100> buf;
+ buf.Format(KErrorInRunL, aError);
+ iLog -> Put(buf);
+ return KErrNone;
+ }
+
+
+// -----------------------------------------------------------------------------
+// CT_LbsClientPeriodicTester::IsCompletedOK
+//
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+TBool CT_LbsClientPeriodicTester::IsCompletedOK()
+ {
+ return !iError;
+ }
+
+// -----------------------------------------------------------------------------
+// CT_LbsClientPeriodicTester::GetError
+//
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+TInt CT_LbsClientPeriodicTester::GetError()
+ {
+ return iErrorCode;
+ }
+
+// -----------------------------------------------------------------------------
+// CT_LbsClientPeriodicTester::ChangeTestParametersL
+//
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+void CT_LbsClientPeriodicTester::ChangeTestParametersL(TTimeIntervalMicroSeconds aInterval, TInt aNumberOfRuns)
+ {
+ iNumberOfRuns = aNumberOfRuns;
+ iNumberOfUpdates = 0;
+ iInterval = aInterval;
+ iRecentTime = TTime(0);
+ iError = EFalse;
+ iErrorCode = KErrNone;
+
+ TPositionUpdateOptions posOption;
+ posOption.SetUpdateInterval(aInterval);
+
+ TInt err = iPositioner.SetUpdateOptions(posOption);
+ _LIT(KChange, "ERROR: When setting update options in ChangeTestParameters, err: %d");
+ AssertTrueL(err == KErrNone, KChange, err);
+ }
+
+// -----------------------------------------------------------------------------
+// CT_LbsClientPeriodicTester::ChangeRequestorInformation
+//
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+void CT_LbsClientPeriodicTester::ChangeRequestorInformation(const TDesC& aServiceName)
+ {
+ iPositioner.SetRequestor(CRequestor::ERequestorService,
+ CRequestor::EFormatApplication, aServiceName);
+ }
+
+// -----------------------------------------------------------------------------
+// CT_LbsClientPeriodicTester::ClosePositioner
+//
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+void CT_LbsClientPeriodicTester::ClosePositioner()
+ {
+ iPositioner.Close();
+ }
+
+// -----------------------------------------------------------------------------
+// CT_LbsClientPeriodicTester::OpenPositionerL
+//
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+void CT_LbsClientPeriodicTester::OpenPositionerL(const TDesC& aServiceName)
+ {
+ _LIT(KOpenErr, "Error when opening positioner, %d");
+ TInt err = iPositioner.Open(iPosServer, iUid);
+ AssertTrueL(err == KErrNone, KOpenErr, err);
+
+ iPositioner.SetRequestor(CRequestor::ERequestorService,
+ CRequestor::EFormatApplication, aServiceName);
+ }
+
+// -----------------------------------------------------------------------------
+// CT_LbsClientPeriodicTester::SetMaxAgeL
+//
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+void CT_LbsClientPeriodicTester::SetMaxAgeL(TTimeIntervalMicroSeconds aInterval)
+ {
+ TPositionUpdateOptions posOption;
+ posOption.SetUpdateInterval(iInterval);
+ posOption.SetMaxUpdateAge(aInterval);
+
+ TInt err = iPositioner.SetUpdateOptions(posOption);
+ _LIT(KChange, "ERROR: When setting max age in SetMaxAge, err: %d");
+ AssertTrueL(err == KErrNone, KChange, err);
+ }
+
+// -----------------------------------------------------------------------------
+// CT_LbsClientPeriodicTester::SetPartialUpdateL
+//
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+void CT_LbsClientPeriodicTester::SetPartialUpdateL(TBool aUpdateOption)
+ {
+ TPositionUpdateOptions posOption;
+ posOption.SetUpdateInterval(iInterval);
+ posOption.SetAcceptPartialUpdates(aUpdateOption);
+
+ TInt err = iPositioner.SetUpdateOptions(posOption);
+ _LIT(KChange, "ERROR: When setting partial update in SetPartialUpdate, err: %d");
+ AssertTrueL(err == KErrNone, KChange, err);
+ }
+
+// -----------------------------------------------------------------------------
+// CT_LbsClientPeriodicTester::SetTimeOutL
+//
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+void CT_LbsClientPeriodicTester::SetTimeOutL(TTimeIntervalMicroSeconds aInterval)
+ {
+ TPositionUpdateOptions posOption;
+ posOption.SetUpdateInterval(iInterval);
+ posOption.SetUpdateTimeOut(aInterval);
+
+ TInt err = iPositioner.SetUpdateOptions(posOption);
+ _LIT(KChange, "ERROR: When setting timeout in SetTimeOut");
+ AssertTrueL(err == KErrNone, KChange, err);
+ }
+
+// -----------------------------------------------------------------------------
+// CT_LbsClientPeriodicTester::SetChangeParametersPrematurely
+//
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+void CT_LbsClientPeriodicTester::SetChangeParametersPrematurely(TBool aCondition)
+ {
+ iPrematureChangeOfParameters = aCondition;
+ }
+
+// -----------------------------------------------------------------------------
+// CT_LbsClientPeriodicTester::CancelRequest
+//
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+void CT_LbsClientPeriodicTester::CancelRequest()
+ {
+ iCancelRequest= ETrue;
+ iCanceledRequest = EFalse;
+ }
+
+
+// -----------------------------------------------------------------------------
+// CT_LbsClientPeriodicTester::RequestNotification
+//
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+void CT_LbsClientPeriodicTester::RequestNotification()
+ {
+ TTime now;
+ now.UniversalTime();
+ iRecentTime = now;
+ iPositioner.NotifyPositionUpdate(iPositionInfo, iStatus);
+ SetActive();
+ }
+
+// -----------------------------------------------------------------------------
+// CT_LbsClientPeriodicTester::RequestNotification
+//
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+void CT_LbsClientPeriodicTester::GetPosition(TPositionInfo& aPosInfo)
+ {
+ aPosInfo = iPositionInfo;
+ }
+
+// -----------------------------------------------------------------------------
+// CT_LbsClientPeriodicTester::DoCancel
+//
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+void CT_LbsClientPeriodicTester::DoCancel()
+ {
+ }
+
+// ---------------------------------------------------------
+// CT_LbsClientPeriodicTester::AssertTrueL
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CT_LbsClientPeriodicTester::AssertTrueL(TBool aCondition, const TDesC& aErrorMsg, TInt aErrorCode)
+ {
+ if (!aCondition)
+ {
+ TBuf<100> buf;
+ buf.Format(aErrorMsg, aErrorCode);
+ iLog->Put(buf);
+ User::Leave(aErrorCode);
+ }
+ }
+
+// End of File
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/lbsclient/src/ctlbsclientportedsuiteserver.cpp Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,360 @@
+// 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 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:
+// ctlbsclientportedserver.cpp
+// Test server for ported client tests
+//
+//
+
+#include "ctlbsclientportedsuiteserver.h"
+#include "ctlbsclientpostp1.h"
+#include "ctlbsclientpostp2.h"
+#include "ctlbsclientpostp11.h"
+#include "ctlbsclientpostp17.h"
+#include "ctlbsclientpostp21.h"
+#include "ctlbsclientpostp22.h"
+#include "ctlbsclientpostp25.h"
+#include "ctlbsclientpostp27.h"
+#include "ctlbsclientpostp76.h"
+#include "ctlbsclientpostp93.h"
+#include "ctlbsclientpostp169.h"
+#include "ctlbsclientpostp173.h"
+#include "ctlbsclientpostp176.h"
+#include "ctlbsclientpostp178.h"
+#include "ctlbsclientpostp179.h"
+#include "ctlbsclientpostp188.h"
+#include "ctlbsclientpostp189.h"
+#include "ctlbsclientpostp193.h"
+#include "ctlbsclientpostp194.h"
+#include "ctlbsclientpostp195.h"
+#include "ctlbsclientpostp201.h"
+#include "ctlbsclientpostp203.h"
+#include "ctlbsclientpostp204.h"
+#include "ctlbsclientpostp208.h"
+#include "ctlbsclientpostp213.h"
+#include "ctlbsclientpostp217.h"
+#include "ctlbsclientpostp218.h"
+#include "ctlbsclientpostp222.h"
+#include "ctlbsclientpostp223.h"
+#include "ctlbsclientpostp224.h"
+#include "ctlbsclientpostp227.h"
+#include "ctlbsclientpostp254.h"
+#include "ctlbsclientpostp256.h"
+#include "ctlbsclientpostp257.h"
+#include "ctlbsclientpostp259.h"
+#include "ctlbsclientpostp261.h"
+#include "ctlbsclientpostp269.h"
+#include "ctlbsclientpostp271.h"
+#include "ctlbsclientpostp272.h"
+#include "ctlbsclientpostp274.h"
+#include "ctlbsclientpostp275.h"
+#include "ctlbsclientpostp4701.h"
+#include "ctlbsclientpostp4702.h"
+#include "ctlbsclientpostp4703.h"
+#include "ctlbsclientpostp4704.h"
+#include "ctlbsclientpostp4705.h"
+#include "ctlbsclientpostp4706.h"
+#include "ctlbsclientpostp4707.h"
+#include "ctlbsclientpostp4708.h"
+#include "ctlbsclientpostp4709.h"
+#include "ctlbsclientpostp4722.h"
+#include "ctlbsclientpostp4723.h"
+
+_LIT(KServerName,"te_LbsPortedSuite");
+CT_LbsClientPortedSuite* CT_LbsClientPortedSuite::NewL()
+/**
+ * @return - Instance of the test server
+ * Same code for Secure and non-secure variants
+ * Called inside the MainL() function to create and start the
+ * CTestServer derived server.
+ */
+ {
+ CT_LbsClientPortedSuite * server = new (ELeave) CT_LbsClientPortedSuite();
+ CleanupStack::PushL(server);
+
+ server->ConstructL(KServerName);
+ CleanupStack::Pop(server);
+ return server;
+ }
+
+
+// Secure variants much simpler
+// For EKA2, just an E32Main and a MainL()
+LOCAL_C void MainL()
+/**
+ * Secure variant
+ * Much simpler, uses the new Rendezvous() call to sync with the client
+ */
+ {
+ // Leave the hooks in for platform security
+#if (defined __DATA_CAGING__)
+ RProcess().DataCaging(RProcess::EDataCagingOn);
+ RProcess().DataCaging(RProcess::ESecureApiOn);
+#endif
+ CActiveScheduler* sched=NULL;
+ sched=new(ELeave) CActiveScheduler;
+ CActiveScheduler::Install(sched);
+ CT_LbsClientPortedSuite* server = NULL;
+ // Create the CTestServer derived server
+ TRAPD(err,server = CT_LbsClientPortedSuite::NewL());
+ if(!err)
+ {
+ // Sync with the client and enter the active scheduler
+ RProcess::Rendezvous(KErrNone);
+ sched->Start();
+ }
+ delete server;
+ delete sched;
+ }
+
+
+
+GLDEF_C TInt E32Main()
+/**
+ * @return - Standard Epoc error code on process exit
+ * Secure variant only
+ * Process entry point. Called by client using RProcess API
+ */
+ {
+ __UHEAP_MARK;
+ CTrapCleanup* cleanup = CTrapCleanup::New();
+ if(cleanup == NULL)
+ {
+ return KErrNoMemory;
+ }
+ TRAPD(err,MainL());
+ delete cleanup;
+ __UHEAP_MARKEND;
+ return err;
+ }
+
+
+CTestStep* CT_LbsClientPortedSuite::CreateTestStep(const TDesC& aStepName)
+/**
+ * @return - A CTestStep derived instance
+ * Secure and non-secure variants
+ * Implementation of CTestServer pure virtual
+ */
+ {
+ CTestStep* testStep = NULL;
+
+ if(aStepName == KTestProcedure1)
+ {
+ testStep = new CT_LbsClientPosTp1(*this);
+ }
+ if(aStepName == KTestProcedure2)
+ {
+ testStep = new CT_LbsClientPosTp2(*this);
+ }
+ if(aStepName == KTestProcedure11)
+ {
+ testStep = new CT_LbsClientPosTp11(*this);
+ }
+ if(aStepName == KTestProcedure17)
+ {
+ testStep = new CT_LbsClientPosTp17(*this);
+ }
+ if(aStepName == KTestProcedure21)
+ {
+ testStep = new CT_LbsClientPosTp21(*this);
+ }
+ if(aStepName ==KTestProcedure22)
+ {
+ testStep = new CT_LbsClientPosTp22(*this);
+ }
+ if(aStepName == KTestProcedure25)
+ {
+ testStep = new CT_LbsClientPosTp25(*this);
+ }
+ if(aStepName == KTestProcedure27)
+ {
+ testStep = new CT_LbsClientPosTp27(*this);
+ }
+ if(aStepName == KTestProcedure76)
+ {
+ testStep = new CT_LbsClientPosTp76(*this);
+ }
+ if(aStepName == KTestProcedure93)
+ {
+ testStep = new CT_LbsClientPosTp93(*this);
+ }
+ if(aStepName == KTestProcedure169)
+ {
+ testStep = new CT_LbsClientPosTp169(*this);
+ }
+ if(aStepName == KTestProcedure173)
+ {
+ testStep = new CT_LbsClientPosTp173(*this);
+ }
+ if(aStepName == KTestProcedure176)
+ {
+ testStep = new CT_LbsClientPosTp176(*this);
+ }
+ if(aStepName == KTestProcedure178)
+ {
+ testStep = new CT_LbsClientPosTp178(*this);
+ }
+ if(aStepName == KTestProcedure179)
+ {
+ testStep = new CT_LbsClientPosTp179(*this);
+ }
+ if(aStepName == KTestProcedure188)
+ {
+ testStep = new CT_LbsClientPosTp188(*this);
+ }
+ if(aStepName == KTestProcedure189)
+ {
+ testStep = new CT_LbsClientPosTp189(*this);
+ }
+ if(aStepName == KTestProcedure193)
+ {
+ testStep = new CT_LbsClientPosTp193(*this);
+ }
+ if(aStepName == KTestProcedure194)
+ {
+ testStep = new CT_LbsClientPosTp194(*this);
+ }
+ if(aStepName == KTestProcedure195)
+ {
+ testStep = new CT_LbsClientPosTp195(*this);
+ }
+ if(aStepName == KTestProcedure201)
+ {
+ testStep = new CT_LbsClientPosTp201(*this);
+ }
+ if(aStepName == KTestProcedure203)
+ {
+ testStep = new CT_LbsClientPosTp203(*this);
+ }
+ if(aStepName == KTestProcedure204)
+ {
+ testStep = new CT_LbsClientPosTp204(*this);
+ }
+ if(aStepName == KTestProcedure208)
+ {
+ testStep = new CT_LbsClientPosTp208(*this);
+ }
+ if(aStepName == KTestProcedure213)
+ {
+ testStep = new CT_LbsClientPosTp213(*this);
+ }
+ if(aStepName == KTestProcedure217)
+ {
+ testStep = new CT_LbsClientPosTp217(*this);
+ }
+ if(aStepName == KTestProcedure218)
+ {
+ testStep = new CT_LbsClientPosTp218(*this);
+ }
+ if(aStepName == KTestProcedure222)
+ {
+ testStep = new CT_LbsClientPosTp222(*this);
+ }
+ if(aStepName == KTestProcedure223)
+ {
+ testStep = new CT_LbsClientPosTp223(*this);
+ }
+ if(aStepName == KTestProcedure224)
+ {
+ testStep = new CT_LbsClientPosTp224(*this);
+ }
+ if(aStepName == KTestProcedure227)
+ {
+ testStep = new CT_LbsClientPosTp227(*this);
+ }
+ if(aStepName == KTestProcedure254)
+ {
+ testStep = new CT_LbsClientPosTp254(*this);
+ }
+ if(aStepName == KTestProcedure256)
+ {
+ testStep = new CT_LbsClientPosTp256(*this);
+ }
+ if(aStepName == KTestProcedure257)
+ {
+ testStep = new CT_LbsClientPosTp257(*this);
+ }
+ if(aStepName == KTestProcedure259)
+ {
+ testStep = new CT_LbsClientPosTp259(*this);
+ }
+ if(aStepName == KTestProcedure261)
+ {
+ testStep = new CT_LbsClientPosTp261(*this);
+ }
+ if(aStepName == KTestProcedure269)
+ {
+ testStep = new CT_LbsClientPosTp269(*this);
+ }
+ if(aStepName == KTestProcedure271)
+ {
+ testStep = new CT_LbsClientPosTp271(*this);
+ }
+ if(aStepName == KTestProcedure272)
+ {
+ testStep = new CT_LbsClientPosTp272(*this);
+ }
+ if(aStepName == KTestProcedure274)
+ {
+ testStep = new CT_LbsClientPosTp274(*this);
+ }
+ if(aStepName == KTestProcedure275)
+ {
+ testStep = new CT_LbsClientPosTp275(*this);
+ }
+ if(aStepName == KTestProcedure4701)
+ {
+ testStep = new CT_LbsClientPosTp4701(*this);
+ }
+ if(aStepName == KTestProcedure4702)
+ {
+ testStep = new CT_LbsClientPosTp4702(*this);
+ }
+ if(aStepName == KTestProcedure4703)
+ {
+ testStep = new CT_LbsClientPosTp4703(*this);
+ }
+ if(aStepName == KTestProcedure4704)
+ {
+ testStep = new CT_LbsClientPosTp4704(*this);
+ }
+ if(aStepName == KTestProcedure4705)
+ {
+ testStep = new CT_LbsClientPosTp4705(*this);
+ }
+ if(aStepName == KTestProcedure4706)
+ {
+ testStep = new CT_LbsClientPosTp4706(*this);
+ }
+ if(aStepName == KTestProcedure4707)
+ {
+ testStep = new CT_LbsClientPosTp4707(*this);
+ }
+ if(aStepName == KTestProcedure4708)
+ {
+ testStep = new CT_LbsClientPosTp4708(*this);
+ }
+ if(aStepName == KTestProcedure4709)
+ {
+ testStep = new CT_LbsClientPosTp4709(*this);
+ }
+ if(aStepName == KTestProcedure4722)
+ {
+ testStep = new CT_LbsClientPosTp4722(*this);
+ }
+ if(aStepName == KTestProcedure4723)
+ {
+ testStep = new CT_LbsClientPosTp4723(*this);
+ }
+ return testStep;
+ }
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/lbsclient/src/ctlbsclientpostp1.cpp Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,265 @@
+// Copyright (c) 2001-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:
+//
+
+
+
+// INCLUDES
+#include "ctlbsclientpostp1.h"
+#include <EPos_CPosModules.h>
+#include <EPos_CPosModuleUpdate.h>
+#include <EPos_CPosModuleIdList.h>
+#include <LbsSatellite.h>
+
+// CONSTANTS
+
+// ================= MEMBER FUNCTIONS =======================
+
+// ---------------------------------------------------------
+// Constructor.
+// ---------------------------------------------------------
+CT_LbsClientPosTp1::CT_LbsClientPosTp1(CT_LbsServer& aParent): CT_LbsPortedStepBase(aParent)
+ {
+ _LIT(KTestName, "TP1 - Request location from default PSY");
+ SetTestStepName(KTestName);
+ }
+
+// ---------------------------------------------------------
+// Destructor.
+// ---------------------------------------------------------
+CT_LbsClientPosTp1::~CT_LbsClientPosTp1()
+ {
+ }
+
+// ---------------------------------------------------------
+// CT_LbsClientPosTp1::CloseTest
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CT_LbsClientPosTp1::CloseTest()
+ {
+ ClosePositioner();
+ Disconnect();
+ }
+
+// ---------------------------------------------------------
+// CT_LbsClientPosTp1::StartL
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CT_LbsClientPosTp1::StartL()
+ {
+ ConnectL();
+
+ CPosModules* db = CPosModules::OpenL();
+ CleanupStack::PushL(db);
+
+ SetupPsyL(iUidMultiPsy);
+
+ _LIT(KSetupPSY, "TP1: Has Setup Multi PSY");
+ INFO_PRINTF1(KSetupPSY);
+
+ //setting priority
+ TPositionModuleInfo moduleInfoHp;//Hp - high prio;
+ TPositionModuleInfo moduleInfoLp;//Lp - low prio;
+
+ CPosModuleIdList* prioList = db->ModuleIdListLC();
+ db->GetModuleInfoL(prioList->At(0), moduleInfoHp);
+
+ CPosModuleUpdate* moduleUpdate = CPosModuleUpdate::NewLC();
+ moduleUpdate->SetUpdateAvailability(ETrue);
+
+ if (iUidMultiPsy.iUid == moduleInfoHp.ModuleId().iUid)
+ {
+ // Case when Multi PSY has highest prio:
+ // Ensuring it is enabled
+ _LIT(KMultiHighest, "TP1: Case when Multi PSY has highest prio");
+ INFO_PRINTF1(KMultiHighest);
+ db->UpdateModuleL((*prioList)[0], *moduleUpdate);
+ }
+ else
+ {
+ // Case when Multi PSY has not highest prio:
+ //
+ _LIT(KMultiNotHighest, "TP1: Case when Multi PSY has NOT highest prio");
+ INFO_PRINTF1(KMultiNotHighest);
+ db->GetModuleInfoL(iUidMultiPsy, moduleInfoLp);
+ // Ensuring it is enabled
+ db->UpdateModuleL(iUidMultiPsy, *moduleUpdate);
+
+ TUint hp = db->PriorityL(moduleInfoHp.ModuleId());
+ TUint lp = db->PriorityL(moduleInfoLp.ModuleId());
+
+ // Changing prio of highest prio PSY and Multi PSY.
+ // Setting Multi PSY to highest prio
+ db->SetModulePriorityL(iUidMultiPsy, hp);
+ db->SetModulePriorityL((*prioList)[0], lp);
+ }
+
+ _LIT(KTestPSY1On, "TP1: Enabling Test PSY 1");
+ INFO_PRINTF1(KTestPSY1On);
+ db -> UpdateModuleL(iUidTestPsy1, *moduleUpdate);
+ _LIT(KTestPSY2On, "TP1: Enabling Test PSY 2");
+ INFO_PRINTF1(KTestPSY2On);
+ db -> UpdateModuleL(iUidTestPsy2, *moduleUpdate);
+
+ CleanupStack::PopAndDestroy(moduleUpdate);
+ CleanupStack::PopAndDestroy(2, db); // db, prioList
+
+ User::LeaveIfError(OpenPositioner());
+
+ // Request data from default psy should be Multi psy
+ _LIT(KService, "service");
+ TPositionInfo posInfo = TPositionInfo();
+ TInt err = PerformSyncRequest(KService, &posInfo);
+ if (err != KErrNone)
+ {
+ _LIT(KErrorRequest, "The request was not completed with KErrNone");
+ LogErrorAndLeaveL(KErrorRequest, err);
+ }
+
+ if (iUidMultiPsy.iUid != posInfo.ModuleId().iUid)
+ {
+ _LIT(KIncorrectPsyError, "TP1. Position from wrong PSY received");
+ LogErrorAndLeaveL(KIncorrectPsyError);
+ }
+
+ HPositionGenericInfo* genericInfo = HPositionGenericInfo::NewLC();
+ err = PerformSyncRequest(KService, &(*genericInfo));
+ if (err != KErrNone)
+ {
+ _LIT(KErrorRequest, "The request was not completed with KErrNone");
+ LogErrorAndLeaveL(KErrorRequest);
+ }
+
+ if (iUidMultiPsy.iUid != (genericInfo -> ModuleId()).iUid)
+ {
+ _LIT(KIncorrectPsyError,
+ "TP1. Position from wrong PSY received");
+ LogErrorAndLeaveL(KIncorrectPsyError);
+ }
+
+ TPositionCourseInfo courseInfo = TPositionCourseInfo();
+ err = PerformSyncRequest(KService, &courseInfo);
+ if (err != KErrNone)
+ {
+ _LIT(KErrorRequest, "Course info supported by default, but request failed");
+ LogErrorAndLeaveL(KErrorRequest);
+ }
+
+ TPositionSatelliteInfo satelliteInfo = TPositionSatelliteInfo();
+ err = PerformSyncRequest(KService, &satelliteInfo);
+ if (err != KErrNone)
+ {
+ _LIT(KErrorRequest, "Satellite info supported by default, but request failed");
+ LogErrorAndLeaveL(KErrorRequest);
+ }
+
+ //Changing the priority and verifiy that it still possilbe
+ //to request updated from a psy if basic position information
+ //is used and that it is not possilbe to request sat or cource
+ //any more.
+ SetupPsyL(iUidTestPsy2);
+ User::After(3000000);
+
+ // Request data from default psy should be test psy 2 now
+ err = PerformSyncRequest(KService, &posInfo);
+ if (err != KErrNone)
+ {
+ _LIT(KErrorRequest, "The request was not completed with KErrNone");
+ LogErrorAndLeaveL(KErrorRequest);
+ }
+
+ if (iUidTestPsy2.iUid != posInfo.ModuleId().iUid)
+ {
+ _LIT(KIncorrectPsyError,
+ "TP1. Position from wrong PSY received");
+ LogErrorAndLeaveL(KIncorrectPsyError);
+ }
+
+ err = PerformSyncRequest(KService, &(*genericInfo));
+ if (err != KErrNone)
+ {
+ _LIT(KErrorRequest, "The request was not completed with KErrNone");
+ LogErrorAndLeaveL(KErrorRequest);
+ }
+
+ if (iUidTestPsy2.iUid != (genericInfo -> ModuleId()).iUid)
+ {
+ _LIT(KIncorrectPsyError,
+ "TP1. Position from wrong PSY received");
+ LogErrorAndLeaveL(KIncorrectPsyError);
+ }
+
+ err = PerformSyncRequest(KService, &courseInfo);
+ if (err != KErrArgument)
+ {
+ _LIT(KErrorRequest, "Course info not supported by default, KErrArgument not returned");
+ LogErrorAndLeaveL(KErrorRequest);
+ }
+
+
+ err = PerformSyncRequest(KService, &satelliteInfo);
+ if (err != KErrArgument)
+ {
+ _LIT(KErrorRequest, "Satellite info not supported by default, KErrArgument not returned");
+ LogErrorAndLeaveL(KErrorRequest);
+ }
+
+ //check that it is possilbe to change the different
+ //type of class info during periodic request and
+ //that the periodic update will fail if the class
+ //type is incorrect.
+ TTimeIntervalMicroSeconds interval = TTimeIntervalMicroSeconds(1000000);
+ TPositionUpdateOptions posOption;
+ posOption.SetUpdateInterval(interval);
+ _LIT(KUpdateErr, "Error when setting update interval, %d");
+ err = iPositioner.SetUpdateOptions(posOption);
+ AssertTrueL(err == KErrNone, KUpdateErr, err);
+
+ _LIT(KErrPeriodic, "The periodic request did not return KErrNone, %d");
+ err = PerformSyncRequest(KService, &posInfo);
+ AssertTrueL(err == KErrNone , KErrPeriodic, err);
+
+ _LIT(KErrPeriodicArr, "The periodic request did not return KErrArgument, %d");
+ err = PerformSyncRequest(KService, &satelliteInfo);
+ AssertTrueL(err == KErrArgument , KErrPeriodicArr, err);
+ SetupPsyL(iUidMultiPsy);
+ User::After(3000000);
+ err = PerformSyncRequest(KService, &satelliteInfo);
+ AssertTrueL(err == KErrNone , KErrPeriodic, err);
+
+ CleanupStack::PopAndDestroy(genericInfo);
+ ClosePositioner();
+ Disconnect();
+ }
+
+// ---------------------------------------------------------
+// CT_LbsClientPosTp1::AssertTrueSecL
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CT_LbsClientPosTp1::AssertTrueL(TBool aCondition, const TDesC& aErrorMsg, TInt aErrorCode)
+ {
+ if (!aCondition)
+ {
+ TBuf<100> buf;
+ buf.Format(aErrorMsg, aErrorCode);
+ LogErrorAndLeaveL(buf);
+ }
+ }
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/lbsclient/src/ctlbsclientpostp11.cpp Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,133 @@
+// Copyright (c) 2001-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:
+//
+
+
+
+// INCLUDES
+#include "ctlbsclientpostp11.h"
+#include "ctlbsclientobserver.h"
+#include <eikenv.h>
+
+
+// ================= MEMBER FUNCTIONS =======================
+
+// ---------------------------------------------------------
+// Constructor.
+// ---------------------------------------------------------
+CT_LbsClientPosTp11::CT_LbsClientPosTp11(CT_LbsServer& aParent): CT_LbsPortedStepBase(aParent)
+ {
+ _LIT(KTestName, "TP11 - EPos start and termination");
+ SetTestStepName(KTestName);
+ }
+
+// ---------------------------------------------------------
+// Destructor.
+// ---------------------------------------------------------
+CT_LbsClientPosTp11::~CT_LbsClientPosTp11()
+ {
+ }
+
+// ---------------------------------------------------------
+// CT_LbsClientPosTp11::CheckEPosActivityL
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CT_LbsClientPosTp11::CheckEPosActivityL(TBool aExpectEPosLiveness)
+ {
+ if (aExpectEPosLiveness && !CT_LbsClientObserver::EPosAliveL())
+ {
+ _LIT(KError, "Expected EPos server to be alive but it wasn't");
+ LogErrorAndLeaveL(KError);
+ }
+ if (!aExpectEPosLiveness && CT_LbsClientObserver::EPosAliveL())
+ {
+ _LIT(KError, "Expected EPos server to be dead but it wasn't");
+ LogErrorAndLeaveL(KError);
+ }
+ }
+
+// ---------------------------------------------------------
+// CT_LbsClientPosTp11::ServerAliveL
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+TBool CT_LbsClientPosTp11::ServerAliveL(const TDesC& aServerName)
+ {
+ TFindServer find(aServerName);
+ TFullName name;
+ if (find.Next(name) == KErrNone) // server found
+ {
+ TBuf<100> buf;
+ _LIT(KFoundServer, "Found server: ");
+ buf.Append(KFoundServer);
+ buf.Append(name);
+ INFO_PRINTF1(buf);
+ return ETrue;
+ }
+ else
+ {
+ return EFalse;
+ }
+ }
+
+// ---------------------------------------------------------
+// CT_LbsClientPosTp11::StartL
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CT_LbsClientPosTp11::StartL()
+ {
+ const TInt KTimeEPosIsStillActive = 1000000;
+ const TInt KTimeEPosHasShutDown = 4000000;
+
+ User::After(2000000);
+
+ CT_LbsClientObserver::WaitForEPosShutdown();
+
+ RPositionServer client1;
+ RPositionServer client2;
+ RPositionServer client3;
+
+ CheckEPosActivityL(EFalse);
+
+ User::LeaveIfError(client1.Connect());
+ CleanupClosePushL(client1);
+ CheckEPosActivityL(ETrue);
+
+ User::LeaveIfError(client2.Connect());
+ CleanupClosePushL(client2);
+ CheckEPosActivityL(ETrue);
+
+ User::LeaveIfError(client3.Connect());
+ CleanupClosePushL(client3);
+ CheckEPosActivityL(ETrue);
+
+ client1.Close();
+ CheckEPosActivityL(ETrue);
+ client2.Close();
+ CheckEPosActivityL(ETrue);
+ client3.Close();
+
+ User::After(TTimeIntervalMicroSeconds32(KTimeEPosIsStillActive));
+ CheckEPosActivityL(ETrue);
+ User::After(TTimeIntervalMicroSeconds32(
+ KTimeEPosHasShutDown - KTimeEPosIsStillActive));
+ CheckEPosActivityL(EFalse);
+
+ CleanupStack::Pop(3); // client1-3
+ }
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/lbsclient/src/ctlbsclientpostp169.cpp Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,496 @@
+// Copyright (c) 2001-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:
+//
+
+
+
+// INCLUDES
+#include "ctlbsclientpostp169.h"
+#include <badesca.h>
+#include <EPos_CPosModules.h>
+#include <EPos_CPosModuleUpdate.h>
+#include <EPos_CPosModuleIdList.h>
+#include <LbsCommon.h>
+#include <LbsPositionInfo.h>
+
+// CONSTANTS
+
+// ================= MEMBER FUNCTIONS =======================
+
+// ---------------------------------------------------------
+// Constructor.
+// ---------------------------------------------------------
+CT_LbsClientPosTp169::CT_LbsClientPosTp169(CT_LbsServer& aParent): CT_LbsPortedStepBase(aParent)
+ {
+ _LIT(KTestName, "TP169 - Modules Db Tests");
+ SetTestStepName(KTestName);
+ }
+
+// ---------------------------------------------------------
+// Destructor.
+// ---------------------------------------------------------
+CT_LbsClientPosTp169::~CT_LbsClientPosTp169()
+ {
+ }
+
+// ---------------------------------------------------------
+// CT_LbsClientPosTp169::StartL
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CT_LbsClientPosTp169::StartL()
+ {
+ _LIT(KErrorMsg1, "Wrong priority order in module list");
+
+
+ CPosModules* db = CPosModules::OpenL();
+ CleanupStack::PushL(db);
+
+
+ CPosModuleIdList* prioList = db->ModuleIdListLC();
+
+//////////////////// TC194 //////////////////// List Modules
+
+ _LIT(KErrorMsg4, "Mismatch between list by settings & aquisition API");
+ _LIT(KErrorMsg2, "Installed module in list is returned as uninstalled by IsModuleInstalled");
+ TUid moduleUid;
+ TUid moduleid1;
+ TUint lastPrio = 0;
+ TUint thisPrio = 0;
+ TInt count = 0;
+ TPositionModuleInfo moduleInfo;
+ for (count = 0 ; count < prioList->Count() ; count++)
+ {
+ moduleUid = (*prioList)[count];
+ ////////////////////////////////////
+
+
+ TBool IsInstalled=db->IsModuleInstalled(moduleUid);
+ AssertTrueL(IsInstalled,KErrorMsg2);
+
+ db->GetModuleInfoL((*prioList)[count], moduleInfo);
+ moduleid1=moduleInfo.ModuleId();
+ AssertTrueL(moduleid1==moduleUid,KErrorMsg4);
+ ////////////////////////////////////
+
+ thisPrio = db->PriorityL(moduleUid);
+
+ if (count > 0)
+ {
+ AssertTrueL(thisPrio > lastPrio,
+ KErrorMsg1);
+ }
+
+ lastPrio = thisPrio;
+ }
+
+ CleanupStack::PopAndDestroy(prioList); // prioList
+
+//////////////////// TC195 //////////////////// Get Module Properties
+
+
+ CPosModuleUpdate* moduleUpdate = CPosModuleUpdate::NewLC(); // destroy!
+ moduleUpdate->SetUpdateAvailability(ETrue);
+ moduleUpdate->SetUpdateCost(TPositionQuality::ECostCharge); // EEPosHigh
+ //////////////////////////////////////////////////
+ moduleUpdate->SetUpdateVisibility(ETrue);
+ db->UpdateModuleL(iUidTestPsy2, *moduleUpdate);
+
+
+ db->SetModulePriorityL(iUidTestPsy2, 3);
+
+ db->GetModuleInfoL(iUidTestPsy2,
+ moduleInfo);
+
+
+
+ TPositionQuality quality;
+ moduleInfo.GetPositionQuality(quality);
+
+ _LIT(KModName, "Test PSY 2");
+ _LIT(KStatusErrorText, "Wrong status data in module info");
+ _LIT(KVersionErrorText, "Wrong version data in module info");
+ _LIT(KUidErrorText, "Wrong uid data in module info");
+ _LIT(KNameErrorText, "Wrong name data in module info");
+ _LIT(KPosTechErrorText, "Wrong pos tech data in module info");
+ _LIT(KTTFFErrorText, "Wrong TTFF data in module info");
+ _LIT(KTTFErrorText, "Wrong TTF data in module info");
+ _LIT(KHAccErrorText, "Wrong HAcc data in module info");
+ _LIT(KVAccErrorText, "Wrong VAcc data in module info");
+ _LIT(KCostErrorText, "Wrong cost data in module info");
+ _LIT(KPowerCostErrorText, "Wrong power cost data in module info");
+ _LIT(KClassesErrorText, "Wrong class info in module info");
+
+
+ AssertTrueL(moduleInfo.IsAvailable(), KStatusErrorText);
+ TVersion version = moduleInfo.Version();
+ AssertTrueL(version.iMajor == 1, KVersionErrorText);
+ AssertTrueL(version.iMinor == 0, KVersionErrorText);
+ AssertTrueL(version.iBuild == 0, KVersionErrorText);
+
+ AssertTrueL(moduleInfo.ModuleId() == iUidTestPsy2, KUidErrorText);
+ TBuf<100> moduleName;
+ moduleInfo.GetModuleName(moduleName);
+ AssertTrueL(moduleName == KModName, KNameErrorText);
+ AssertTrueL(moduleInfo.TechnologyType() == TPositionModuleInfo::ETechnologyTerminal,
+ KPosTechErrorText);
+
+ AssertTrueL(moduleInfo.ClassesSupported(EPositionInfoFamily) ==
+ (EPositionGenericInfoClass | EPositionInfoClass),
+ KClassesErrorText);
+
+ AssertTrueL(quality.TimeToFirstFix() == TTimeIntervalMicroSeconds(3000000),
+ KTTFFErrorText);
+ AssertTrueL(quality.TimeToNextFix() == TTimeIntervalMicroSeconds(3000000),
+ KTTFErrorText);
+ AssertTrueL(quality.HorizontalAccuracy() == 2, KHAccErrorText);
+ AssertTrueL(quality.VerticalAccuracy() == 3, KVAccErrorText);
+ AssertTrueL(quality.CostIndicator() == TPositionQuality::ECostCharge,
+ KCostErrorText); // Updated cost value
+ AssertTrueL(quality.PowerConsumption() == TPositionQuality::EPowerZero,
+ KPowerCostErrorText);
+
+//////////////////// TC196 //////////////////// Set Module Properties
+
+ _LIT(KErrorTp196b, "Cost not updated correctly");
+ _LIT(KErrorMsg3, "Wrong Visibility");
+ _LIT(KErrorMsgPrio, "Changing priority of an invisible module");
+
+ // Make sure test psy 2 is enabled.
+ CPosModuleUpdate* moduleUpdate196 = CPosModuleUpdate::NewLC(); // destroy!
+ moduleUpdate196->SetUpdateAvailability(ETrue);
+ moduleUpdate->SetUpdateCost(TPositionQuality::ECostZero);
+ db->UpdateModuleL(iUidTestPsy2, *moduleUpdate196);
+
+ // Disable psy
+ moduleUpdate196->SetUpdateAvailability(EFalse);
+ db->UpdateModuleL(iUidTestPsy2, *moduleUpdate196);
+
+ // Update cost variable to ECostZero
+ moduleUpdate196->SetUpdateCost(TPositionQuality::ECostZero);
+ db->UpdateModuleL(iUidTestPsy2, *moduleUpdate196);
+ db->GetModuleInfoL(iUidTestPsy2,
+ moduleInfo);
+ moduleInfo.GetPositionQuality(quality);
+ AssertTrueL(quality.CostIndicator() == TPositionQuality::ECostZero, KErrorTp196b);
+
+ // Update cost variable to ECostPossible
+ moduleUpdate196->SetUpdateCost(TPositionQuality::ECostPossible);
+ db->UpdateModuleL(iUidTestPsy2, *moduleUpdate196);
+ db->GetModuleInfoL(iUidTestPsy2,
+ moduleInfo);
+ moduleInfo.GetPositionQuality(quality);
+ AssertTrueL(quality.CostIndicator() == TPositionQuality::ECostPossible, KErrorTp196b);
+
+ // Update cost variable to high
+ moduleUpdate196->SetUpdateCost(TPositionQuality::ECostCharge);
+ db->UpdateModuleL(iUidTestPsy2, *moduleUpdate196);
+ db->GetModuleInfoL(iUidTestPsy2,
+ moduleInfo);
+ moduleInfo.GetPositionQuality(quality);
+ AssertTrueL(quality.CostIndicator() == TPositionQuality::ECostCharge, KErrorTp196b);
+
+
+ ////////////////////////////////////
+ moduleUpdate196->SetUpdateAvailability(ETrue);
+
+ moduleUpdate196->SetUpdateVisibility(EFalse);
+ db->UpdateModuleL(iUidTestPsy2, *moduleUpdate196);
+ TBool IsVisble=db->IsModuleVisibleL(iUidTestPsy2);
+ AssertTrueL(IsVisble==EFalse,
+ KErrorMsg3);
+
+ // Change priority of an invisible module
+
+ TRAPD(err,db->SetModulePriorityL(iUidTestPsy2, 4));
+ AssertTrueL(err==KErrNotFound,KErrorMsgPrio);
+
+
+ moduleUpdate196->SetUpdateVisibility(ETrue);
+ db->UpdateModuleL(iUidTestPsy2, *moduleUpdate196);
+ IsVisble=db->IsModuleVisibleL(iUidTestPsy2);
+ AssertTrueL(IsVisble,KErrorMsg3);
+ ////////////////////////////////////
+
+//////////////////// TC197 //////////////////// Module Priority
+
+ // Change the priority of the external gps module, and check that the other
+ // modules are updated correctly
+ // Change from 6 to 3
+
+ _LIT(KErrorTextPrio, "Priority test failed after change of priority");
+ _LIT(KErrorVisibility1, "Invisible module is in list");
+ _LIT(KErrorVisibility2, "visible module is not in list after changing it from invisible");
+ db->SetModulePriorityL(iUidTestPsy2, 6);
+ prioList = db->ModuleIdListLC();
+ lastPrio = 0;
+ thisPrio = 0;
+ for (count = 0 ; count < prioList->Count() ; count++)
+ {
+ moduleUid = (*prioList)[count];
+ thisPrio = db->PriorityL(moduleUid);
+
+ if (count > 0)
+ {
+ AssertTrueL(thisPrio > lastPrio,
+ KErrorMsg1);
+ }
+
+ lastPrio = thisPrio;
+ }
+
+ // Remember the uid:s of the modules close to iUidTestPsy2:
+ TUid uid2a = (*prioList)[2];
+ TUid uid3a = (*prioList)[3];
+ TUid uid4a = (*prioList)[4];
+ TUid uid5a = (*prioList)[5];
+ TUid uid6a = (*prioList)[6];
+ TUid uid7a = (*prioList)[7];
+ TUid uid8a = (*prioList)[8];
+ TUid uid0a = (*prioList)[0];
+
+ db->SetModulePriorityL(iUidTestPsy2, 3);
+
+ CleanupStack::PopAndDestroy(prioList); // prioList
+ prioList = db->ModuleIdListLC();
+
+ TUid uid2b = (*prioList)[2];
+ TUid uid3b = (*prioList)[3];
+ TUid uid4b = (*prioList)[4];
+ TUid uid5b = (*prioList)[5];
+ TUid uid6b = (*prioList)[6];
+ TUid uid7b = (*prioList)[7];
+ TUid uid8b = (*prioList)[8];
+ TUid uid0b = (*prioList)[0];
+
+ AssertTrueL(uid2a == uid2b, KErrorTextPrio);
+ AssertTrueL(uid3a == uid4b, KErrorTextPrio);
+ AssertTrueL(uid4a == uid5b, KErrorTextPrio);
+ AssertTrueL(uid5a == uid6b, KErrorTextPrio);
+ AssertTrueL(uid6a == uid3b, KErrorTextPrio);
+ AssertTrueL(uid7a == uid7b, KErrorTextPrio);
+ AssertTrueL(uid8a == uid8b, KErrorTextPrio);
+ AssertTrueL(uid0a == uid0b, KErrorTextPrio);
+
+ db->SetModulePriorityL(iUidTestPsy2, 7);
+
+ CleanupStack::PopAndDestroy(prioList); // prioList
+ prioList = db->ModuleIdListLC();
+
+ uid2a = (*prioList)[2];
+ uid3a = (*prioList)[3];
+ uid4a = (*prioList)[4];
+ uid5a = (*prioList)[5];
+ uid6a = (*prioList)[6];
+ uid7a = (*prioList)[7];
+ uid8a = (*prioList)[8];
+ uid0a = (*prioList)[0];
+ TUid uid1a = (*prioList)[1];
+
+ AssertTrueL(uid2b == uid2a, KErrorTextPrio);
+ AssertTrueL(uid3b == uid7a, KErrorTextPrio);
+ AssertTrueL(uid4b == uid3a, KErrorTextPrio);
+ AssertTrueL(uid5b == uid4a, KErrorTextPrio);
+ AssertTrueL(uid6b == uid5a, KErrorTextPrio);
+ AssertTrueL(uid7b == uid6a, KErrorTextPrio);
+ AssertTrueL(uid8b == uid8a, KErrorTextPrio);
+ AssertTrueL(uid0b == uid0a, KErrorTextPrio);
+
+
+ TInt bottomPrio = prioList->Count() - 1;
+
+ // Change top priority to bottom priority
+
+ db->SetModulePriorityL(uid0a, bottomPrio);
+ CleanupStack::PopAndDestroy(prioList); // prioList
+ prioList = db->ModuleIdListLC();
+
+ AssertTrueL((*prioList)[0] == uid1a, KErrorTextPrio);
+ AssertTrueL(uid0a == (*prioList)[bottomPrio], KErrorTextPrio);
+ AssertTrueL(uid7a == (*prioList)[6], KErrorTextPrio);
+
+
+ // Change bottom priority to top priority
+ TUid topPrioUid = (*prioList)[0];
+ TUid bottomPrioUid = (*prioList)[bottomPrio];
+ TUid nextBottomPrioUid = (*prioList)[bottomPrio - 1];
+
+ db->SetModulePriorityL(bottomPrioUid, 0);
+ CleanupStack::PopAndDestroy(prioList); // prioList
+ prioList = db->ModuleIdListLC();
+
+ AssertTrueL((*prioList)[0] == bottomPrioUid, KErrorTextPrio);
+ AssertTrueL((*prioList)[1] == topPrioUid, KErrorTextPrio);
+ AssertTrueL((*prioList)[bottomPrio] == nextBottomPrioUid, KErrorTextPrio);
+
+ CleanupStack::PopAndDestroy(prioList); // prioList
+
+ ////////////////////////////////////
+
+ db->SetModulePriorityL(iUidTestPsy2, 0);
+
+ prioList = db->ModuleIdListLC();
+
+ uid0a = (*prioList)[0];
+ uid1a = (*prioList)[1];
+ uid2a = (*prioList)[2];
+ uid3a = (*prioList)[3];
+ uid4a = (*prioList)[4];
+ uid5a = (*prioList)[5];
+ uid6a = (*prioList)[6];
+ uid7a = (*prioList)[7];
+ uid8a = (*prioList)[8];
+
+ moduleUpdate196->SetUpdateVisibility(EFalse);
+ db->UpdateModuleL(iUidTestPsy2, *moduleUpdate196);
+
+ CleanupStack::PopAndDestroy(prioList); // prioList
+ prioList = db->ModuleIdListLC();
+
+ TInt IsInList=prioList->Find(iUidTestPsy2);
+ AssertTrueL(IsInList==KErrNotFound, KErrorVisibility1);
+
+
+ uid0b = (*prioList)[0];
+ TUid uid1b = (*prioList)[1];
+ uid2b = (*prioList)[2];
+ uid3b = (*prioList)[3];
+ uid4b = (*prioList)[4];
+ uid5b = (*prioList)[5];
+ uid6b = (*prioList)[6];
+ uid7b = (*prioList)[7];
+
+
+ AssertTrueL(uid1a == uid0b, KErrorTextPrio);
+ AssertTrueL(uid2a == uid1b, KErrorTextPrio);
+ AssertTrueL(uid3a == uid2b, KErrorTextPrio);
+ AssertTrueL(uid4a == uid3b, KErrorTextPrio);
+ AssertTrueL(uid5a == uid4b, KErrorTextPrio);
+ AssertTrueL(uid6a == uid5b, KErrorTextPrio);
+ AssertTrueL(uid7a == uid6b, KErrorTextPrio);
+ AssertTrueL(uid8a == uid7b, KErrorTextPrio);
+
+ moduleUpdate196->SetUpdateVisibility(ETrue);
+ db->UpdateModuleL(iUidTestPsy2, *moduleUpdate196);
+
+ CleanupStack::PopAndDestroy(prioList); // prioList
+ prioList = db->ModuleIdListLC();
+
+ IsInList=prioList->Find(iUidTestPsy2);
+
+ TInt priority=db->PriorityL(iUidTestPsy2);
+
+
+ AssertTrueL(IsInList==priority, KErrorVisibility2);
+
+ CleanupStack::PopAndDestroy(prioList); // prioList
+ CleanupStack::PopAndDestroy(2, moduleUpdate);
+
+ ////////////////////////////////////
+
+ CleanupStack::PopAndDestroy(db); // db
+
+ }
+
+
+// ---------------------------------------------------------
+// CT_LbsClientPosTp169::TestNaNFromPSY
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CT_LbsClientPosTp169::TestNaNFromPSY()
+ {
+ _LIT(KFunctionName, "We are inside TestNaNFromPSY()");
+ INFO_PRINTF1(KFunctionName);
+ CPosModules* db = CPosModules::OpenL();
+ CleanupStack::PushL(db);
+
+ TPositionModuleInfo moduleInfo;
+ TBuf<100> moduleName;
+
+ // Use Panic Psy in this test, should have Horizontal accuracy defined to 0
+ // and vertical accuracy not defined at all in resource file (should default to 0)
+ // and when reading these attributes using the modulesdb they should be of type NaN (Not A Number)
+ CPosModuleUpdate* moduleUpdate = CPosModuleUpdate::NewLC();
+ moduleUpdate->SetUpdateAvailability(ETrue);
+ db->UpdateModuleL(iUidPanicPsy, *moduleUpdate);
+
+ db->GetModuleInfoL(iUidPanicPsy,
+ moduleInfo);
+
+ moduleInfo.GetModuleName(moduleName);
+
+ TPositionQuality quality;
+ moduleInfo.GetPositionQuality(quality);
+
+ if (!Math::IsNaN(quality.HorizontalAccuracy()))
+ {
+ _LIT(KErrorAndLeave, "HorizontalAccuracy should be NaN");
+ LogErrorAndLeaveL(KErrorAndLeave);
+ }
+ else
+ {
+ _LIT(KHorizontalAccuracy, "HorizontalAccuracy NaN");
+ INFO_PRINTF1(KHorizontalAccuracy);
+ }
+
+ if (!Math::IsNaN(quality.VerticalAccuracy()))
+ {
+ _LIT(KErrorAndLeave, "VerticalAccuracy should be NaN");
+ LogErrorAndLeaveL(KErrorAndLeave);
+ }
+ else
+ {
+ _LIT(KVerticalAccuracy, "VerticalAccuracy NaN");
+ INFO_PRINTF1(KVerticalAccuracy);
+ }
+
+ CleanupStack::PopAndDestroy(moduleUpdate);
+ CleanupStack::PopAndDestroy(db);
+ }
+
+// ---------------------------------------------------------
+// CT_LbsClientPosTp169::AssertTrueL
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CT_LbsClientPosTp169::AssertTrueL(TBool aCondition, const TDesC& aErrorMsg)
+ {
+ if (!aCondition)
+ {
+ LogErrorAndLeaveL(aErrorMsg);
+ }
+ }
+
+
+// ---------------------------------------------------------
+// CT_LbsClientPosTp169::AssertTrueSecL
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CT_LbsClientPosTp169::AssertTrueSecL(TBool aCondition, const TDesC& aErrorMsg, TInt aErrorCode)
+ {
+ if (!aCondition)
+ {
+ TBuf<100> buf;
+ buf.Format(aErrorMsg, aErrorCode);
+ LogErrorAndLeaveL(buf);
+ }
+ }
+
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/lbsclient/src/ctlbsclientpostp17.cpp Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,63 @@
+// Copyright (c) 2001-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:
+//
+
+
+
+// INCLUDES
+#include "ctlbsclientpostp17.h"
+
+// CONSTANTS
+
+// ================= MEMBER FUNCTIONS =======================
+
+// ---------------------------------------------------------
+// Constructor.
+// ---------------------------------------------------------
+CT_LbsClientPosTp17::CT_LbsClientPosTp17(CT_LbsServer& aParent): CT_LbsPortedStepBase(aParent)
+ {
+ _LIT(KTestName, "TP17 - Open nonexisting PSY");
+ SetTestStepName(KTestName);
+ }
+
+// ---------------------------------------------------------
+// Destructor.
+// ---------------------------------------------------------
+CT_LbsClientPosTp17::~CT_LbsClientPosTp17()
+ {
+ }
+// ---------------------------------------------------------
+// CT_LbsClientPosTp17::StartL
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CT_LbsClientPosTp17::StartL()
+ {
+ TUid nonExistent;
+ nonExistent.iUid = 0x01234DCBD;
+
+ TBuf<100> output;
+
+ ConnectL();
+ TInt err = OpenPositionerByName(nonExistent);
+ if (err != KErrNotFound )
+ {
+ output.Format(output, KErrNotFound , err);
+ LogErrorAndLeaveL(output);
+ }
+ Disconnect();
+ }
+
+//End of File
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/lbsclient/src/ctlbsclientpostp173.cpp Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,358 @@
+// Copyright (c) 2002-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:
+//
+
+
+
+
+// INCLUDES
+#include "ctlbsclientpostp173.h"
+#include <badesca.h>
+#include <EPos_CPosModules.h>
+#include <EPos_CPosModuleUpdate.h>
+#include <EPos_CPosModuleIdList.h>
+#include <LbsCommon.h>
+#include <LbsPositionInfo.h>
+#include "tctlbsclientmodulesobserver.h"
+
+
+void MyStopActive(TAny* /*aAny*/)
+ {
+ CActiveScheduler::Stop();
+ }
+
+// ================= MEMBER FUNCTIONS =======================
+
+// ---------------------------------------------------------
+// Constructor.
+// ---------------------------------------------------------
+CT_LbsClientPosTp173::CT_LbsClientPosTp173(CT_LbsServer& aParent): CT_LbsPortedStepBase(aParent)
+ {
+ _LIT(KTestName, "TP173 - Notify Module Events");
+ SetTestStepName(KTestName);
+ }
+
+
+// ---------------------------------------------------------
+// Destructor.
+// ---------------------------------------------------------
+CT_LbsClientPosTp173::~CT_LbsClientPosTp173()
+ {
+ }
+
+// ---------------------------------------------------------
+// CT_LbsClientPosTp173::StartL
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CT_LbsClientPosTp173::StartL()
+ {
+ iNoEvents = EFalse;
+ iError = EFalse;
+ // This test listens for events.
+ // There is no data in the event, so all that is needed to be done is
+ // to see that an event is generated. This test doesn't fail if unsuccessful,
+ // it hangs.
+
+ CPosModules* db = CPosModules::OpenL();
+ CleanupStack::PushL(db);
+
+ db->SetObserverL(*this);
+
+ TInt prio = db->PriorityL(iUidTestPsy2);
+ if (prio > 0)
+ {
+ prio = 0;
+ }
+ else
+ {
+ prio = 1; // this assumes that more that one PSY is installed
+ }
+
+ CPosModuleUpdate* visibileUpdate = CPosModuleUpdate::NewLC();
+ visibileUpdate->SetUpdateVisibility(ETrue);
+ db->UpdateModuleL(iUidTestPsy2, *visibileUpdate);
+
+ db->SetModulePriorityL(iUidTestPsy2, prio);
+ CleanupStack::PopAndDestroy(visibileUpdate);
+
+
+ // Wait for event
+ DoEventHandlingL();
+
+ CPosModuleUpdate* availUpdate = CPosModuleUpdate::NewLC();
+
+
+ TPositionModuleInfo info;
+ db -> GetModuleInfoL(iUidTestPsy2, info);
+ TBool available = info.IsAvailable();
+
+ availUpdate->SetUpdateAvailability(/*ETrue*/ !available);
+ db->UpdateModuleL(iUidTestPsy2, *availUpdate);
+
+ CleanupStack::PopAndDestroy(availUpdate);
+
+ // Wait for event
+ DoEventHandlingL();
+
+ CPosModuleUpdate* costUpdate = CPosModuleUpdate::NewLC();
+
+ TPositionQuality quality;
+ info.GetPositionQuality(quality);
+ TPositionQuality::TCostIndicator indicator = quality.CostIndicator();
+ switch (indicator)
+ {
+ case TPositionQuality::ECostUnknown:
+ indicator = TPositionQuality::ECostZero;
+ break;
+ case TPositionQuality::ECostZero:
+ indicator = TPositionQuality::ECostPossible;
+ break;
+ case TPositionQuality::ECostPossible:
+ indicator = TPositionQuality::ECostCharge;
+ break;
+ case TPositionQuality::ECostCharge:
+ indicator = TPositionQuality::ECostPossible;
+ break;
+ default:
+ _LIT(KErrorAndLeave, "quality indicator does not exist");
+ LogErrorAndLeaveL(KErrorAndLeave);
+ }
+
+ costUpdate->SetUpdateCost(/*TPositionQuality::ECostCharge*/ indicator);
+ db->UpdateModuleL(iUidTestPsy2, *costUpdate);
+
+ CleanupStack::PopAndDestroy(costUpdate);
+
+ // Wait for event
+ DoEventHandlingL();
+
+ ////////////////////////////////////
+
+ CPosModuleUpdate* visibilityUpdate = CPosModuleUpdate::NewLC();
+ visibilityUpdate->SetUpdateVisibility(EFalse);
+ db->UpdateModuleL(iUidTestPsy2, *visibilityUpdate);
+ CleanupStack::PopAndDestroy(visibilityUpdate);
+
+ DoEventHandlingL();
+
+ ////////////////////////////////////
+
+ CMyNotificationTimer* timer = CMyNotificationTimer::NewLC(this);
+
+ TTimeIntervalMicroSeconds ttfUpdate(1000000);
+ TPositionQuality dynQualityUpdate;
+ dynQualityUpdate.SetHorizontalAccuracy(30.0);
+ dynQualityUpdate.SetTimeToNextFix(ttfUpdate);
+
+ timer->StartNotificationTimer();
+ iNoEvents = ETrue;
+ // Wait for event
+ DoEventHandlingL();
+
+////////////////////////////////////
+
+
+
+
+ db->RemoveObserver();
+ CleanupStack::PopAndDestroy(2, db);
+ }
+
+// ---------------------------------------------------------
+// CT_LbsClientPosTp173::DoEventHandlingL
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CT_LbsClientPosTp173::DoEventHandlingL()
+ {
+ //User::After(20);
+ CActiveScheduler::Start();
+ CheckErrorL();
+ }
+
+// ---------------------------------------------------------
+// CT_LbsClientPosTp173::CheckErrorL
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CT_LbsClientPosTp173::CheckErrorL()
+ {
+ if (iError)
+ {
+ LogErrorAndLeaveL(iErrorText);
+ }
+ }
+
+// ---------------------------------------------------------
+// CT_LbsClientPosTp173::HandleDatabaseChangeL
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+void CT_LbsClientPosTp173::HandleSettingsChangeL(TPosModulesEvent /*aModuleEvent*/)
+ {
+
+ CleanupStack::PushL(TCleanupItem(MyStopActive));
+ if (iNoEvents)
+ {
+ _LIT(KErrorText, "Event received when no event should have been received");
+ iErrorText = KErrorText;
+ iError = ETrue;
+ }
+
+ CleanupStack::PopAndDestroy();
+ }
+
+// ---------------------------------------------------------
+// CT_LbsClientPosTp173::AssertTrueSecL
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CT_LbsClientPosTp173::AssertTrueSecL(TBool aCondition, const TDesC& aErrorMsg, TInt aErrorCode)
+ {
+ if (!aCondition)
+ {
+ TBuf<100> buf;
+ buf.Format(aErrorMsg, aErrorCode);
+ LogErrorAndLeaveL(buf);
+ }
+ }
+
+// ---------------------------------------------------------
+// CT_LbsClientPosTp173::NotifyTimeout
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CT_LbsClientPosTp173::NotifyTimeout()
+ {
+ CleanupStack::PushL(TCleanupItem(MyStopActive));
+ if (!iNoEvents)
+ {
+ _LIT(KErrorText, "No event received when event should have been received");
+ iErrorText = KErrorText;
+ iError = ETrue;
+ }
+
+ CleanupStack::PopAndDestroy();
+ }
+
+// ---------------------------------------------------------
+// CNotificationTimer::~CNotificationTimer
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+//Implementation of a CNotificationTimer
+
+// destructor
+CMyNotificationTimer::~CMyNotificationTimer()
+ {
+ Cancel();
+ iMainControl = NULL;
+ }
+
+// ---------------------------------------------------------
+// CNotificationTimer::NewLC
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+// Two-phased constructor.
+CMyNotificationTimer* CMyNotificationTimer::NewLC(CT_LbsClientPosTp173* aMainControl)
+ {
+ CMyNotificationTimer* self=new (ELeave) CMyNotificationTimer(aMainControl);
+ CleanupStack::PushL(self);
+ self->ConstructL();
+ return self;
+ }
+
+// ---------------------------------------------------------
+// CNotificationTimer::NewL
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+// Two-phased constructor.
+CMyNotificationTimer* CMyNotificationTimer::NewL(CT_LbsClientPosTp173* aMainControl)
+ {
+ CMyNotificationTimer* self = NewLC(aMainControl);
+ CleanupStack::Pop();
+ return self;
+ }
+
+// ---------------------------------------------------------
+// CNotificationTimer::StartNotificationTimer
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+void CMyNotificationTimer::StartNotificationTimer()
+ {
+ CTimer::After(iNotificationTimout);
+ }
+
+// ---------------------------------------------------------
+// CNotificationTimer::DoCancel
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CMyNotificationTimer::DoCancel()
+ {
+ CTimer::DoCancel();
+ }
+
+// ---------------------------------------------------------
+// CNotificationTimer::ConstructL
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CMyNotificationTimer::ConstructL()
+ {
+ CTimer::ConstructL();
+ iNotificationTimout = 5000000;
+ //add this object to the active scheduler
+ CActiveScheduler::Add(this);
+ }
+
+// ---------------------------------------------------------
+// CNotificationTimer::CNotificationTimer
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+//c++ default constructor
+CMyNotificationTimer::CMyNotificationTimer(CT_LbsClientPosTp173* aMainControl)
+:CTimer(CActive::EPriorityStandard)
+ {
+ iMainControl = aMainControl;
+ }
+
+// ---------------------------------------------------------
+// CNotificationTimer::RunL
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CMyNotificationTimer::RunL()
+ {
+ iMainControl->NotifyTimeout();
+ }
+
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/lbsclient/src/ctlbsclientpostp176.cpp Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,203 @@
+// Copyright (c) 2002-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:
+//
+
+
+
+// INCLUDES
+#include "ctlbsclientpostp176.h"
+#include <EPos_CPosModules.h>
+#include <EPos_CPosModuleUpdate.h>
+#include <EPos_CPosModuleIdList.h>
+// ================= MEMBER FUNCTIONS =======================
+
+// ---------------------------------------------------------
+// Constructor.
+// ---------------------------------------------------------
+CT_LbsClientPosTp176::CT_LbsClientPosTp176(CT_LbsServer& aParent): CT_LbsPortedStepBase(aParent)
+ {
+ _LIT(KTestName, "TP176 - Basic PSY test");
+ SetTestStepName(KTestName);
+ }
+
+// ---------------------------------------------------------
+// Destructor.
+// ---------------------------------------------------------
+CT_LbsClientPosTp176::~CT_LbsClientPosTp176()
+ {
+ }
+
+// ---------------------------------------------------------
+// CT_LbsClientPosTp176::CloseTest
+// Always called after the test, even if the test leaves
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CT_LbsClientPosTp176::CloseTest()
+ {
+
+ }
+
+// ---------------------------------------------------------
+// CT_LbsClientPosTp176::CloseTest
+// Always called after the test, even if the test leaves
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CT_LbsClientPosTp176::InitTestL()
+ {
+
+ }
+
+// ---------------------------------------------------------
+// CT_LbsClientPosTp176::StartL
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CT_LbsClientPosTp176::StartL()
+ {
+ _LIT(KService, "service");
+ CPosModules *modDb = CPosModules::OpenL();
+ CleanupStack::PushL(modDb);
+ CPosModuleUpdate* moduleUpdate = CPosModuleUpdate::NewLC();
+
+ moduleUpdate->SetUpdateAvailability(ETrue);
+ modDb->UpdateModuleL(iUidTestPsyTp176, *moduleUpdate);
+ modDb->UpdateModuleL(iUidTestPsy1, *moduleUpdate);
+
+ CleanupStack::PopAndDestroy(2);
+
+ ConnectL();
+
+ User::LeaveIfError(OpenPositionerByName(iUidTestPsyTp176));
+ TPositionInfo info = TPositionInfo();
+
+ // Request data from test psy 176 psy
+ TInt err = PerformSyncRequest(KService, &info);
+
+ if (err != KErrNone)
+ {
+ _LIT(KErrorRequest, "The request was not completed with KErrorNone");
+ LogErrorAndLeaveL(KErrorRequest);
+ }
+
+ // just to make sure that dynamic quality is updated
+ err = PerformSyncRequest(KService, &info);
+
+ if (err != KErrNone)
+ {
+ _LIT(KErrorRequest, "The request was not completed with KErrorNone");
+ LogErrorAndLeaveL(KErrorRequest);
+ }
+
+
+ HPositionGenericInfo* genericInfo = HPositionGenericInfo::NewLC();
+
+ // Request a genericInfo from test psy 176 should fail.
+ err = PerformSyncRequest(KService, genericInfo);
+
+
+ //Magic number KErrHardwareNotAvailable is used to check that the psy is
+ //not responsible for determine if the class is supported.
+ if (err == KErrHardwareNotAvailable)
+ {
+ _LIT(KErrorRequest, "The type checking was done in the PSY");
+ LogErrorAndLeaveL(KErrorRequest);
+ }
+ else if (err != KErrArgument)
+ {
+ _LIT(KErrWrongType, "Wrong error type returned");
+ LogErrorAndLeaveL(KErrWrongType);
+ }
+
+
+ // not set uid
+ err = PerformSyncRequest(KService, &info);
+
+ if (err != KErrGeneral)
+ {
+ _LIT(KErrorRequest, "The request was not completed with KErrGeneral");
+ LogErrorAndLeaveL(KErrorRequest);
+ }
+
+
+ // incorrect uid, but existing
+ err = PerformSyncRequest(KService, &info);
+ if (err != KErrGeneral)
+ {
+ _LIT(KErrorRequest, "The request was not completed with KErrGeneral");
+ LogErrorAndLeaveL(KErrorRequest);
+ }
+
+ //incorrect uid
+ err = PerformSyncRequest(KService, &info);
+ if (err != KErrGeneral)
+ {
+ _LIT(KErrorRequest, "The request was not completed with KErrGeneral");
+ LogErrorAndLeaveL(KErrorRequest);
+ }
+
+
+ ClosePositioner();
+ Disconnect();
+
+ CleanupStack::PopAndDestroy(); //genericInfo
+
+ }
+
+
+
+TBool CT_LbsClientPosTp176::IsQualityUpdatedL(TUid aUid)
+ {
+ TBool updated = ETrue;
+ CPosModules *modDb = CPosModules::OpenL();
+ CleanupStack::PushL(modDb);
+
+ TPositionQuality dynQuality;
+
+ //TTimeIntervalMicroSeconds timeToFirstFix = dynQuality.TimeToNextFix();
+ TTimeIntervalMicroSeconds timeToFirstFixBefore;
+ TReal32 horAccBefore;
+ TReal32 horAccAfter = dynQuality.HorizontalAccuracy();
+
+ if (aUid == iUidTestPsyTp176)
+ {
+ timeToFirstFixBefore = iQuality.TimeToNextFix();
+ horAccBefore = iQuality.HorizontalAccuracy();
+ }
+ else
+ {
+ timeToFirstFixBefore = iQualityTestPsy1.TimeToNextFix();
+ horAccBefore = iQualityTestPsy1.HorizontalAccuracy();
+ }
+
+
+ if (horAccBefore != horAccAfter)
+ {
+ updated = ETrue;
+ iQuality = dynQuality;
+ _LIT(KUpdated, "Dynamic Quality is updated");
+ INFO_PRINTF1(KUpdated);
+ }
+ else
+ {
+ updated = EFalse;
+ _LIT(KNotUpdated, "Dynamic Quality is NOT updated");
+ INFO_PRINTF1(KNotUpdated);
+ }
+
+ CleanupStack::PopAndDestroy();
+ return updated;
+ }
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/lbsclient/src/ctlbsclientpostp178.cpp Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,366 @@
+// Copyright (c) 2001-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:
+//
+
+
+
+// INCLUDES
+#include "ctlbsclientpostp178.h"
+#include <EPos_CPosModules.h>
+#include <EPos_CPosModuleUpdate.h>
+
+// CONSTANTS
+
+// ================= MEMBER FUNCTIONS =======================
+
+// ---------------------------------------------------------
+// Constructor.
+// ---------------------------------------------------------
+CT_LbsClientPosTp178::CT_LbsClientPosTp178(CT_LbsServer& aParent): CT_LbsPortedStepBase(aParent)
+ {
+ _LIT(KTestName, "Tp178 - Request Timeout");
+ SetTestStepName(KTestName);
+ }
+
+// ---------------------------------------------------------
+// Destructor.
+// ---------------------------------------------------------
+CT_LbsClientPosTp178::~CT_LbsClientPosTp178()
+ {
+ }
+
+// ---------------------------------------------------------
+// CT_LbsClientPosTp178::CloseTest
+// Always called after the test, even if the test leaves
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CT_LbsClientPosTp178::CloseTest()
+{
+ ClosePositioner();
+ Disconnect();
+}
+
+
+TInt Timeout178(TAny* /*aNothing*/)
+ {
+ CActiveScheduler::Stop();
+ return KErrNone;
+ }
+
+void StartSchedulerForAWhile178L(TTimeIntervalMicroSeconds32 aTimeout)
+ {
+ CPeriodic* timer = CPeriodic::NewL(CActive::EPriorityStandard);
+ CleanupStack::PushL(timer);
+ timer->Start(aTimeout, aTimeout, TCallBack(Timeout178));
+ CActiveScheduler::Start();
+ CleanupStack::PopAndDestroy(timer);
+ }
+
+// ---------------------------------------------------------
+// CT_LbsClientPosTp178::StartL
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CT_LbsClientPosTp178::StartL()
+ {
+ _LIT(KServiceAccept, "SAAA");
+
+ SetupPsyL(iUidTestPsy3);
+
+ RPositioner positioner;
+ TPositionInfo info = TPositionInfo();
+
+ ConnectL();
+
+ User::LeaveIfError(positioner.Open(iPosServer,iUidTestPsy3));
+ CleanupClosePushL(positioner);
+
+ TInt Err = positioner.SetRequestor(CRequestor::ERequestorService,
+ CRequestor::EFormatApplication, KServiceAccept);
+
+ TPositionUpdateOptions updateOptionsLong, updateOptionsShort;
+
+ TTimeIntervalMicroSeconds longInterval(7000000);
+
+ updateOptionsLong.SetUpdateTimeOut(longInterval);
+ Err = positioner.SetUpdateOptions(updateOptionsLong);
+
+ TTimeIntervalMicroSeconds shortInterval(2000000);
+ updateOptionsShort.SetUpdateTimeOut(shortInterval);
+
+ TPositionUpdateOptions theUpdateOptions;
+ Err = positioner.GetUpdateOptions(theUpdateOptions);
+
+ if (theUpdateOptions.UpdateTimeOut() != updateOptionsLong.UpdateTimeOut() ||
+ updateOptionsLong.UpdateTimeOut() != longInterval)
+ {
+ _LIT(KUpdateOptions, "The update option was not set correctly");
+ LogErrorAndLeaveL(KUpdateOptions);
+ }
+
+ _LIT(KDelayMsg, "The successfull requests was completed within %d microsecs.");
+ _LIT(KCancelMsg, "The canceled requests was completed within %d microsecs.");
+
+ TRequestStatus status;
+
+ for (TInt i = 0; i < 10; i++) // makes 10 test inorder to get some statistic
+ {
+
+ positioner.SetUpdateOptions(updateOptionsLong);
+ TTime requestStartTime;
+
+ requestStartTime.UniversalTime();
+ positioner.NotifyPositionUpdate(info, status);
+ User::WaitForRequest(status);
+ TTime requestStopTime;
+ requestStopTime.UniversalTime();
+
+ TTimeIntervalMicroSeconds durationMicro = requestStopTime.MicroSecondsFrom(requestStartTime);
+
+ TInt duration = durationMicro.Int64();
+
+ TBuf<100> timeMsg;
+ timeMsg.Format(KDelayMsg, duration);
+ INFO_PRINTF1(timeMsg);
+
+ //check error status
+ if (status != KErrNone)
+ {
+ _LIT(KErrPositionRequest, "error code returned from NotifyPositionUpdate, error code = %d");
+ TBuf<100> buf;
+ buf.Format(KErrPositionRequest, status.Int());
+ LogErrorAndLeaveL(buf);
+ }
+
+
+ TTimeIntervalMicroSeconds shortInterval(2000000);
+ updateOptionsShort.SetUpdateTimeOut(shortInterval);
+
+ positioner.SetUpdateOptions(updateOptionsShort);
+
+ requestStartTime.UniversalTime();
+ positioner.NotifyPositionUpdate(info, status);
+ User::WaitForRequest(status);
+ requestStopTime.UniversalTime();
+
+ durationMicro = requestStopTime.MicroSecondsFrom(requestStartTime);
+
+ duration = durationMicro.Int64();
+
+#ifdef __WINS__
+ TTimeIntervalMicroSeconds winsFail(100000);
+ durationMicro = TTimeIntervalMicroSeconds(durationMicro.Int64()+winsFail.Int64());
+#endif
+
+ timeMsg.Format(KCancelMsg, duration);
+ INFO_PRINTF1(timeMsg);
+
+
+ if (status != KErrTimedOut)
+ {
+ _LIT(KErrPositionRequest, "Request did not returned KErrTimedOut, status code = %d.");
+ TBuf<100> buf;
+ buf.Format(KErrPositionRequest, status.Int());
+ LogErrorAndLeaveL(buf);
+ }
+
+ //Check that the request was not aborted before the Interval
+ //Remove this condition if a lot of data is needed in test log.
+ if (durationMicro < shortInterval)
+ {
+ _LIT(KErrInterval, " The request was aborted before the set timed out ");
+ LogErrorAndLeaveL(KErrInterval);
+ }
+
+
+ } // end for loop
+ CleanupStack::PopAndDestroy(1); //positioner
+ Disconnect();
+
+ // Do timeout test
+ TestTimeoutL();
+
+ // Do cancel test
+ TestCancelL();
+
+ // ESLI-5QRA7U just check that it is not possible to set a timeout that is less than
+ // the update interval
+ TestOptionL();
+ }
+
+// ---------------------------------------------------------
+// CT_LbsClientPosTp178::TestTimeout
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CT_LbsClientPosTp178::TestTimeoutL()
+ {
+ _LIT(KSTART, "TestTimeout()");
+ _LIT(KEND, "TestTimeout() passed");
+ _LIT(KTIME, "Request took %d us");
+
+ // Setup verification stuff
+ INFO_PRINTF1(KSTART);
+
+ //TPrivDlgDiagnostics tmpdiag;
+ TTime requestStartTime;
+ TTime requestStopTime;
+ TTimeIntervalMicroSeconds durationMicro;
+
+ TBuf<100> buf;
+
+ _LIT(KService, "SAAA");
+ TPositionUpdateOptions updateOptions;
+
+ TTimeIntervalMicroSeconds longInterval(7000000);
+ ConnectL();
+ SetupPsyL(iUidTestPsy3);
+
+ OpenPositionerByName(iUidTestPsy3);
+ updateOptions.SetUpdateTimeOut(longInterval);
+
+ // Access protected member (iPositioner) here
+ iPositioner.SetUpdateOptions(updateOptions);
+
+ _LIT(KONE, "Perform first request, should NOT time out");
+ INFO_PRINTF1(KONE);
+
+ requestStartTime.UniversalTime();
+ //Make one request to verify psy
+ PerformRequestL(KService, CRequestor::ERequestorService, CRequestor::EFormatApplication);
+
+ CheckRequestResultL(KErrNone);
+ requestStopTime.UniversalTime();
+
+ durationMicro = requestStopTime.MicroSecondsFrom(requestStartTime);
+ TInt duration = durationMicro.Int64();
+
+ buf.Format(KTIME, duration);
+ INFO_PRINTF1(buf);
+
+ ClosePositioner();
+
+ OpenPositionerByName(iUidTestPsy3);
+ // ECancelButton means that the Automatised class should wait for a cancel call
+ // before returning result
+
+ updateOptions.SetUpdateTimeOut(longInterval);
+
+ // Access protected (iPositioner) member here
+ iPositioner.SetUpdateOptions(updateOptions);
+
+ _LIT(KTWO, "Perform second request, should not time out");
+ INFO_PRINTF1(KTWO);
+
+ //Make one request to verify psy
+ TPositionInfo info = TPositionInfo();
+ requestStartTime.UniversalTime();
+ TInt err = PerformSyncRequest(KService, &info);
+ requestStopTime.UniversalTime();
+
+ if (err != KErrNone)
+ {
+ _LIT(KError, "Wrong result from iStatus, should be KErrNone, was %d");
+ TBuf<100> buf;
+ buf.Format(KError, err);
+ LogErrorAndLeaveL(buf);
+ }
+
+ durationMicro = requestStopTime.MicroSecondsFrom(requestStartTime);
+ duration = durationMicro.Int64();
+
+ buf.Format(KTIME, duration);
+ INFO_PRINTF1(buf);
+
+ ClosePositioner();
+ Disconnect();
+
+ INFO_PRINTF1(KEND);
+}
+
+// ---------------------------------------------------------
+// CT_LbsClientPosTp178::TestCancel
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CT_LbsClientPosTp178::TestCancelL()
+ {
+ _LIT(KSTART, "TestCancel()");
+ _LIT(KEND, "TestCancel() passed");
+
+ // Setup verification stuff
+ INFO_PRINTF1(KSTART);
+
+ _LIT(KService, "SAAA");
+ ConnectL();
+ SetupPsyL(iUidTestPsy3);
+
+ OpenPositionerByName(iUidTestPsy3);
+
+ PerformRequestL(KService, CRequestor::ERequestorService, CRequestor::EFormatApplication);
+ StartSchedulerForAWhile178L(2000000);
+ iPositioner.CancelRequest(EPositionerNotifyPositionUpdate);
+ CheckRequestResultL(KErrCancel);
+
+ ClosePositioner();
+ Disconnect();
+
+ INFO_PRINTF1(KEND);
+}
+
+
+void CT_LbsClientPosTp178::TestOptionL()
+ {
+ SetupPsyL(iUidTestPsy3);
+
+ RPositioner positioner;
+
+ ConnectL();
+
+ User::LeaveIfError(positioner.Open(iPosServer,iUidTestPsy3));
+ CleanupClosePushL(positioner);
+
+ _LIT(KKalle, "Kalle");
+ positioner.SetRequestor(CRequestor::ERequestorService,
+ CRequestor::EFormatApplication, KKalle);
+
+ TPositionUpdateOptions updateOptions;
+
+ TTimeIntervalMicroSeconds timeoutInterval(4000000);
+ TTimeIntervalMicroSeconds periodicInterval(7000000);
+
+ updateOptions.SetUpdateTimeOut(timeoutInterval);
+ updateOptions.SetUpdateInterval(periodicInterval);
+ TInt err = positioner.SetUpdateOptions(updateOptions);
+ if (err != KErrArgument)
+ {
+ _LIT(KErrArg, "Possible to set timout < update interval, error code = %d");
+ TBuf<100> buf;
+ buf.Format(KErrArg, err);
+ INFO_PRINTF1(buf);
+ LogErrorAndLeaveL(buf);
+ }
+
+ //should never be runned;
+ CleanupStack::PopAndDestroy(1); //positioner
+ Disconnect();
+ }
+
+
+// End of File
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/lbsclient/src/ctlbsclientpostp179.cpp Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,207 @@
+// Copyright (c) 2001-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:
+//
+
+
+
+// INCLUDES
+#include "ctlbsclientpostp179.h"
+#include "ctlbsposclientholder.h"
+#include <e32keys.h>
+
+// CONSTANTS
+_LIT(KPosPhoneTimeLocaleFormat,
+ " phone time: %F%H:%F%T:%F%S:%F%C");
+
+// ================= MEMBER FUNCTIONS =======================
+
+// ---------------------------------------------------------
+// Constructor.
+// ---------------------------------------------------------
+CT_LbsClientPosTp179::CT_LbsClientPosTp179(CT_LbsServer& aParent): CT_LbsPortedStepBase(aParent)
+ {
+ _LIT(KTestName, "Tp179 - One Client, same PSY");
+ SetTestStepName(KTestName);
+ }
+
+// ---------------------------------------------------------
+// Destructor.
+// ---------------------------------------------------------
+CT_LbsClientPosTp179::~CT_LbsClientPosTp179()
+ {
+ }
+
+// ---------------------------------------------------------
+// CT_LbsClientPosTp179::CloseTest
+// Always called after the test, even if the test leaves
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CT_LbsClientPosTp179::CloseTest()
+ {
+ }
+
+// ---------------------------------------------------------
+// CT_LbsClientPosTp179::StartL
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CT_LbsClientPosTp179::StartL()
+ {
+ const TInt NumClients = 3;
+ SetupPsyL(iUidTestPsy12);
+
+ //Make one request, the performance requirement are not valid for
+ //the first request.
+ TTime startTime, stopTime;
+ TTime serverStartTime, serverStopTime;
+ TTimeIntervalMicroSeconds requestTime, connectionTime;
+ TBuf<150> buf;
+
+ serverStartTime.UniversalTime();
+ ConnectL();
+ serverStopTime.UniversalTime();
+
+ User::LeaveIfError(OpenPositioner());
+
+ TPositionInfo posInfo = TPositionInfo();
+ _LIT(KService, "service");
+ // Request data from default psy should be test psy 2
+ startTime.UniversalTime();
+ TInt err = PerformSyncRequest(KService, &posInfo);
+ stopTime.UniversalTime();
+
+ if (err != KErrNone)
+ {
+ _LIT(KErrorRequest, "The request was not completed with KErrorNone");
+ LogErrorAndLeaveL(KErrorRequest);
+ }
+
+ requestTime = stopTime.MicroSecondsFrom(startTime);
+ connectionTime = serverStopTime.MicroSecondsFrom(serverStartTime);
+
+ // Added some extra timing here
+ _LIT(KDebug, "Connecting to Epos took: %d us");
+ buf.Format(KDebug, connectionTime.Int64());
+ INFO_PRINTF1(buf);
+ _LIT(KSeparator, "********");
+ INFO_PRINTF1(KSeparator);
+ buf.Zero();
+ _LIT(KFirstRequest, "The first request took: %d us");
+ buf.Format(KFirstRequest, requestTime.Int64());
+ INFO_PRINTF1(buf);
+ INFO_PRINTF1(KSeparator);
+
+ CT_LbsPosClientHolder* clients = CT_LbsPosClientHolder::NewLC(NumClients, iUidTestPsy12, ETrue);
+
+ TTime starttime,stoptime;
+
+ starttime.UniversalTime();
+
+ clients->MakeRequests();
+
+ stoptime.UniversalTime();
+
+ // Substract total delay incurred due to TestPsy2...i.e 2sec
+ TInt duration=stoptime.Int64()-starttime.Int64()-2000000;
+
+ _LIT(KMessage,"3 simultaneous requests from 3 different sub-sessions with a psy completed in %d microsec");
+ TBuf<256> message;
+ message.Format(KMessage,duration);
+ INFO_PRINTF1(message);
+
+ if(duration>3000000)
+ {
+ _LIT(KTime, "Time taken>3 sec");
+ INFO_PRINTF1(KTime);
+ }
+
+ TPositionInfo position[NumClients];
+
+ TTimeIntervalMicroSeconds
+ reqTime[NumClients],
+ reqTimeLimit(5000000),
+ timeDifferenceLimit(500000);
+ TInt status;
+ TBool error = EFalse;
+
+ //some printing mostly used for information purpose.
+ for (TInt i = 0; i < NumClients; i++)
+ {
+ clients->GetResult(status, position[i], reqTime[i], i);
+ TPosition tmp;
+ position[i].GetPosition(tmp);
+ if (status != 0)
+ {
+ _LIT(KError, "The position requested could not be retrieved, status = %d");
+ buf.Format(KError, status);
+ ERR_PRINTF1(buf);
+ error = ETrue;
+ }
+ if (reqTime[i].Int64() > reqTimeLimit.Int64())
+ {
+ _LIT(KErrorMsg, "The request time of client %d took more than 5 seconds, req. time = %d microsecs.");
+ buf.Format(KErrorMsg, i, reqTime[i].Int64());
+ ERR_PRINTF1(buf);
+ error = ETrue;
+ }
+ for (TInt j = 0; j < i; j++)
+ {
+ _LIT(KReqMsg, "client %d request time: %d");
+
+ buf.Format(KReqMsg, j, reqTime[j].Int64());
+ INFO_PRINTF1(buf);
+ TPosition posi;
+ TPosition posj;
+ position[i].GetPosition(posi);
+ position[j].GetPosition(posj);
+ posj.Time().FormatL(buf, KPosPhoneTimeLocaleFormat);
+ INFO_PRINTF1(buf);
+
+ buf.Format(KReqMsg, i, reqTime[i].Int64());
+ INFO_PRINTF1(buf);
+ posi.Time().FormatL(buf, KPosPhoneTimeLocaleFormat);
+ INFO_PRINTF1(buf);
+
+ _LIT(KSeparator, "********");
+ INFO_PRINTF1(KSeparator);
+
+ if (Abs(reqTime[i].Int64() - reqTime[j].Int64()) > timeDifferenceLimit.Int64())
+ {
+ _LIT(KMsg1, "Requests by client %d and %d wasn't served simultaniously: %d microsecs difference between reqTime.");
+ TBuf<150> buf;
+ buf.Format(KMsg1, i, j, Abs(reqTime[i].Int64() - reqTime[j].Int64()));
+ ERR_PRINTF1(buf);
+ error = ETrue;
+ }
+ if (Abs(posi.Time().Int64() - posj.Time().Int64()) > timeDifferenceLimit.Int64())
+ {
+ _LIT(KMsg2, "Requests by client %d and %d wasn't served simultaniously: %d microsecs difference between phoneTime.");
+ TBuf<150> buf;
+ buf.Format(KMsg2, i, j, Abs(posi.Time().Int64() - posj.Time().Int64()));
+ ERR_PRINTF1(buf);
+ error = ETrue;
+ }
+ }
+ }
+
+ CleanupStack::PopAndDestroy(); //clients
+ ClosePositioner();
+
+ Disconnect();
+
+ if (error)
+ User::Leave(KErrGeneral);
+ }
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/lbsclient/src/ctlbsclientpostp188.cpp Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,178 @@
+// Copyright (c) 2001-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:
+//
+
+
+
+// INCLUDES
+#include "ctlbsclientpostp188.h"
+#include <EPos_CPosModules.h>
+#include <EPos_CPosModuleUpdate.h>
+
+// CONSTANTS
+const TInt32 KUidNonExistingPsy = 0x01111111;
+const TInt KMaxMessageSize = 200;
+
+// ================= MEMBER FUNCTIONS =======================
+
+// ---------------------------------------------------------
+// Constructor.
+// ---------------------------------------------------------
+CT_LbsClientPosTp188::CT_LbsClientPosTp188(CT_LbsServer& aParent): CT_LbsPortedStepBase(aParent)
+ {
+ _LIT(KTestName,"Tp188 - Get Module Status");
+ SetTestStepName(KTestName);
+ }
+
+// ---------------------------------------------------------
+// Destructor.
+// ---------------------------------------------------------
+CT_LbsClientPosTp188::~CT_LbsClientPosTp188()
+ {
+ }
+
+// ---------------------------------------------------------
+// CT_LbsClientPosTp188::StartL
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CT_LbsClientPosTp188::StartL()
+ {
+ SetupPsyL(iUidTestStatusPsy);
+
+ // Synchronous request to start server.
+ ConnectL();
+
+ // Request status information for PSY.
+ TPositionModuleStatus moduleStatus = TPositionModuleStatus();
+ TInt err = iPosServer.GetModuleStatus(moduleStatus, iUidTestStatusPsy);
+ _LIT(KErrFailStatus1, "1. Error when getting module status, error code = %d");
+ AssertTrueL(err == KErrNone, KErrFailStatus1, err);
+
+ iModuleStatus.SetDeviceStatus(TPositionModuleStatus::EDeviceInactive);
+ iModuleStatus.SetDataQualityStatus(TPositionModuleStatus::EDataQualityUnknown);
+
+ CheckModuleStatusL(moduleStatus);
+
+ // Disable PSY.
+ CPosModules* db = CPosModules::OpenL();
+ CleanupStack::PushL(db);
+ CPosModuleUpdate* moduleUpdate = CPosModuleUpdate::NewLC();
+
+ moduleUpdate->SetUpdateAvailability(EFalse);
+ db->UpdateModuleL(iUidTestStatusPsy, *moduleUpdate);
+
+ User::After(1000000);
+
+ // Request status information for PSY.
+ err = iPosServer.GetModuleStatus(moduleStatus, iUidTestStatusPsy);
+ _LIT(KErrFailStatus2, "2. Error when getting module status, error code = %d");
+ AssertTrueL(err == KErrNone, KErrFailStatus2, err);
+
+ iModuleStatus.SetDeviceStatus(TPositionModuleStatus::EDeviceDisabled);
+ iModuleStatus.SetDataQualityStatus(TPositionModuleStatus::EDataQualityUnknown);
+
+ User::After(1000000);
+
+ CheckModuleStatusL(moduleStatus);
+
+ // Request status information for a non-existing PSY.
+ TUid aNonExistingUid;
+ aNonExistingUid.iUid = KUidNonExistingPsy;
+ err = iPosServer.GetModuleStatus(moduleStatus, aNonExistingUid);
+ _LIT(KErrFailStatus3, "3. Error when getting module status, error code = %d");
+ AssertTrueL(err == KErrNotFound, KErrFailStatus3, err);
+
+ SetupPsyL(iUidTestStatusPsy);
+
+ // Request to be notified about Module Status Events.
+ TPositionModuleStatusEvent statusEvent;
+ TRequestStatus status = KErrNone;
+ statusEvent.SetRequestedEvents(TPositionModuleStatusEvent::EEventDeviceStatus); // Obligatory to set Requested events, EEventAll works also.
+ iPosServer.NotifyModuleStatusEvent(statusEvent, status, iUidTestStatusPsy);
+
+ // Open a subsession to PSY.
+ err = OpenPositionerByName(iUidTestStatusPsy);
+ _LIT(KErrFailStatus4, "4. Error when opening module , error code = %d");
+ AssertTrueL(err == KErrNone, KErrFailStatus4, err);
+
+ CleanupStack::PopAndDestroy(moduleUpdate);
+ CleanupStack::PopAndDestroy(db);
+
+ User::WaitForRequest(status);
+ _LIT(KErrFailStatus5, "5. Error in completed request, error code = %d");
+ AssertTrueL(status.Int() == KErrNone, KErrFailStatus5, err);
+
+ // Request status information for PSY.
+ err = iPosServer.GetModuleStatus(moduleStatus, iUidTestStatusPsy);
+ _LIT(KErrFailStatus6, "6. Error whe getting module status, error code = %d");
+ AssertTrueL(err == KErrNone, KErrFailStatus6, err);
+
+ iModuleStatus.SetDeviceStatus(TPositionModuleStatus::EDeviceReady);
+ iModuleStatus.SetDataQualityStatus(TPositionModuleStatus::EDataQualityNormal);
+ CheckModuleStatusL(moduleStatus);
+
+ ClosePositioner();
+
+
+ Disconnect();
+
+ }
+
+// ---------------------------------------------------------
+// CT_LbsClientPosTp188::CheckModuleStatus
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CT_LbsClientPosTp188::CheckModuleStatusL(const TPositionModuleStatus& aStatus)
+ {
+ TBuf<KMaxMessageSize> buf;
+ _LIT(KStatus,"Checking module status");
+ INFO_PRINTF1(KStatus);
+
+ _LIT(KDevSta, "Device Status (EDeviceUnknown = 0, EDeviceError = 1, EDeviceDisabled = 2, EDeviceInactive = 3, EDeviceInitialising = 4, EDeviceStandBy = 5, EDeviceReady = 6, EDeviceActive = 7) : %d");
+ buf.Format(KDevSta, aStatus.DeviceStatus());
+ INFO_PRINTF1(buf);
+ buf.Zero();
+
+ _LIT(KDatQual, "Data Quality Status (EDataQualityUnknown = 0, EDataQualityLoss = 1, EDataQualityPartial = 2, EDataQualityNormal = 3) : , %d");
+ buf.Format(KDatQual, aStatus.DataQualityStatus());
+ INFO_PRINTF1(buf);
+ buf.Zero();
+
+ //unused TInt myVar = iModuleStatus.DeviceStatus();
+ //unused TInt myVar2 = aStatus.DeviceStatus();
+
+ if (iModuleStatus.DeviceStatus() != aStatus.DeviceStatus() ||
+ iModuleStatus.DataQualityStatus() != aStatus.DataQualityStatus())
+ {
+ if (iModuleStatus.DeviceStatus() != aStatus.DeviceStatus())
+ {
+ _LIT(KError, "Status is not correct, Status returned %d Status expected %d");
+ buf.Format(KError, aStatus.DeviceStatus(), iModuleStatus.DeviceStatus());
+ LogErrorAndLeaveL(buf);
+ }
+ else
+ {
+ _LIT(KError , "Quality is not correct, Quality returned %d Quality expected");
+ buf.Format(KError, aStatus.DataQualityStatus(), iModuleStatus.DataQualityStatus());
+ LogErrorAndLeaveL(KError);
+ }
+
+ }
+ }
+
+// End of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/lbsclient/src/ctlbsclientpostp189.cpp Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,343 @@
+// Copyright (c) 2001-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:
+//
+
+
+
+// INCLUDES
+#include "ctlbsclientpostp189.h"
+#include <EPos_CPosModules.h>
+#include <EPos_CPosModuleUpdate.h>
+
+// CONSTANTS
+const TInt32 KUidNonExistingPsy = 0x01111111;
+const TInt KMaxMessageSize = 200;
+const TInt KNrOfDeviceStatusChanges = 8; // 9 since some are ignored
+// ================= MEMBER FUNCTIONS =======================
+
+// ---------------------------------------------------------
+// Constructor.
+// ---------------------------------------------------------
+CT_LbsClientPosTp189::CT_LbsClientPosTp189(CT_LbsServer& aParent): CT_LbsPortedStepBase(aParent)
+ {
+ _LIT(KTestName, "Tp189 - Status Events");
+ SetTestStepName(KTestName);
+ }
+
+// ---------------------------------------------------------
+// Destructor.
+// ---------------------------------------------------------
+CT_LbsClientPosTp189::~CT_LbsClientPosTp189()
+ {
+ }
+
+// ---------------------------------------------------------
+// CT_LbsClientPosTp189::StartL
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CT_LbsClientPosTp189::StartL()
+ {
+ _LIT(KDeviceStatusValues, "Device Status Values (Unknown = 0, Error = 1, Disabled = 2, Inactive = 3, Initialising = 4, StandBy = 5, Ready = 6, Active = 7)");
+ INFO_PRINTF1(KDeviceStatusValues);
+ _LIT(KDataQualityValue, "Data Quality Status (Unknown = 0, Loss = 1, Partial = 2, Normal = 3)");
+ INFO_PRINTF1(KDataQualityValue);
+
+ _LIT(KSetTestStatusPsy, "Setting up TestStatusPsy");
+ INFO_PRINTF1(KSetTestStatusPsy);
+
+ SetupPsyL(iUidTestStatusPsy);
+
+ TPositionModuleStatusEvent statusEvent2;
+ statusEvent2.SetRequestedEvents(TPositionModuleStatusEvent::EEventDeviceStatus);
+ TRequestStatus status2 = KErrNone;
+ RPositionServer client2;
+ CleanupClosePushL(client2);
+ TInt err = client2.Connect();
+ _LIT(KConnectError, "TP18 Unable to open connection to Epos, return code %d");
+ AssertTrueL(err == KErrNone, KConnectError, err);
+
+ // Synchronous request to start server.
+ ConnectL();
+
+ // 1. Request to be notified about Module Status Events.
+ TPositionModuleStatusEvent statusEvent;
+ TRequestStatus status = KErrNone;
+
+ // Open a subsession to PSY.1
+ _LIT(KOpenPSY, "Calling OpenPositionerByName");
+ INFO_PRINTF1(KOpenPSY);
+ err = OpenPositionerByName(iUidTestStatusPsy);
+ _LIT(KErrOpen, "1. Error when opening subsession to PSY , error code = %d");
+ AssertTrueL(err == KErrNone, KErrOpen, err);
+
+
+ for(TInt i = 0; i < (KNrOfDeviceStatusChanges - 1); i++) //Iterate through different device statuses. Skip first and last
+ {
+ RequestWaitAndLogEventL(TPositionModuleStatusEvent::EEventDeviceStatus);
+ }
+
+ RequestWaitAndLogEventL(TPositionModuleStatusEvent::EEventDataQualityStatus); //Test to be notified about data quality changes
+
+ // Renew request before proceeding
+ statusEvent.SetRequestedEvents(TPositionModuleStatusEvent::EEventDeviceStatus);
+ iPosServer.NotifyModuleStatusEvent(statusEvent, status, iUidTestStatusPsy);
+
+ // 2. Disable PSY1.
+ CPosModules* db = CPosModules::OpenL();
+ CleanupStack::PushL(db);
+ CPosModuleUpdate* moduleUpdate = CPosModuleUpdate::NewLC();
+
+ moduleUpdate->SetUpdateAvailability(EFalse);
+ db->UpdateModuleL(iUidTestStatusPsy, *moduleUpdate);
+ _LIT(KWaitStatus, "Waiting for status after UpdateModuleL1");
+ INFO_PRINTF1(KWaitStatus);
+ User::WaitForRequest(status);
+
+ _LIT(KWait, "Error when request completed, error code = %d");
+ iExpectedStatus.SetDeviceStatus(TPositionModuleStatus::EDeviceDisabled);
+ iExpectedStatus.SetDataQualityStatus(TPositionModuleStatus::EDataQualityNormal);
+
+ TPositionModuleStatus getStatus;
+ statusEvent.GetModuleStatus(getStatus);
+
+ if (iExpectedStatus.DeviceStatus() != getStatus.DeviceStatus() ||
+ iExpectedStatus.DataQualityStatus() != getStatus.DataQualityStatus())
+ {
+ TBuf<100> buf;
+ if (iExpectedStatus.DeviceStatus() != getStatus.DeviceStatus())
+ {
+ _LIT(KError, "Status is not correct, Status returned %d Status expected %d");
+ buf.Format(KError, getStatus.DeviceStatus(), iExpectedStatus.DeviceStatus());
+ LogErrorAndLeaveL(buf);
+ }
+ else
+ {
+ _LIT(KError , "Quality is not correct, Quality returned %d Quality expected");
+ buf.Format(KError, getStatus.DataQualityStatus(), iExpectedStatus.DataQualityStatus());
+ LogErrorAndLeaveL(KError);
+ }
+ }
+
+ // 3. Renew request
+ iPosServer.NotifyModuleStatusEvent(statusEvent, status, iUidTestStatusPsy);
+ _LIT(KNotifyModuleStatusEvent, "Called NotifyModuleStatusEvent");
+ INFO_PRINTF1(KNotifyModuleStatusEvent);
+
+ // 4. Enable PSY1
+ moduleUpdate->SetUpdateAvailability(ETrue);
+ db->UpdateModuleL(iUidTestStatusPsy, *moduleUpdate);
+ _LIT(KWaitUpdateModuleL2, "Waiting for status after UpdateModuleL2");
+ INFO_PRINTF1(KWaitUpdateModuleL2);
+
+ User::WaitForRequest(status);
+ AssertTrueL(status.Int() == KErrNone, KWait, status.Int());
+
+ // 5. Renew request
+ iPosServer.NotifyModuleStatusEvent(statusEvent, status, iUidTestStatusPsy);
+ client2.NotifyModuleStatusEvent(statusEvent2, status2, iUidMultiPsy);
+
+ // 7. Disable PSY1
+ _LIT(KDisable, "Disabling TestStatusPsy");
+ INFO_PRINTF1(KDisable);
+ moduleUpdate->SetUpdateAvailability(EFalse);
+ db->UpdateModuleL(iUidTestStatusPsy, *moduleUpdate);
+
+ // 9. Enable PSY2
+ _LIT(KEnable, "Enabling MultiPsy");
+ INFO_PRINTF1(KEnable);
+ moduleUpdate->SetUpdateAvailability(ETrue);
+ db->UpdateModuleL(iUidMultiPsy, *moduleUpdate);
+
+ _LIT(KStatus, "Waiting for status & status2");
+ INFO_PRINTF1(KStatus);
+ User::WaitForRequest(status, status2);
+ if (status == KRequestPending)
+ {
+ User::WaitForRequest(status);
+ }
+ else
+ {
+ User::WaitForRequest(status2);
+ }
+
+
+ AssertTrueL(status.Int() == KErrNone, KWait, status.Int());
+ AssertTrueL(status2.Int() == KErrNone, KWait, status2.Int());
+
+ // 10. Renew request for all PSYs
+ iPosServer.NotifyModuleStatusEvent(statusEvent, status, iUidTestStatusPsy);
+
+ // 11. Enable PSY1
+ moduleUpdate->SetUpdateAvailability(ETrue);
+ db->UpdateModuleL(iUidTestStatusPsy, *moduleUpdate);
+ _LIT(KWaitUpdateModuleL3, "Waiting for status after UpdateModuleL3");
+ INFO_PRINTF1(KWaitUpdateModuleL3);
+
+ User::WaitForRequest(status);
+ AssertTrueL(status.Int() == KErrNone, KWait, status.Int());
+
+ // Open a subsession to PSY.1
+ err = iPositioner2.Open(iPosServer, iUidTestStatusPsy);
+ _LIT(KErrOpenOther, "7. Error when opening subsession to PSY , error code = %d");
+ AssertTrueL(err == KErrNone, KErrOpenOther, err);
+
+ User::After(10000000); //wait for all psy event to timeout
+ // Renew request for all PSYs
+ iPosServer.NotifyModuleStatusEvent(statusEvent, status);
+ User::After(1000000);
+ // 14. Close subsession to PSY1. All events execept close event has happen
+ iPositioner2.Close();
+ _LIT(KStatusClose, "Waiting for status after Close");
+ INFO_PRINTF1(KStatusClose);
+
+ User::WaitForRequest(status);
+ err = status.Int();
+ _LIT(KStatusErr, "status: %d");
+ INFO_PRINTF2(KStatusErr, err);
+ AssertTrueL(err == KErrNone, KWait, err);
+
+
+ // 15. Renew request for PSY1
+ iPosServer.NotifyModuleStatusEvent(statusEvent, status, iUidTestStatusPsy);
+
+ User::After(600000);
+ // 16. Cancel request
+ TInt cancelErr = iPosServer.CancelRequest(EPositionServerNotifyModuleStatusEvent);
+ _LIT(KCancel, "7. Error canceling request, error code = %d");
+ AssertTrueL(cancelErr == KErrNone, KCancel, cancelErr);
+ _LIT(KStatusCancelRequest, "Waiting for status after CancelRequest");
+ INFO_PRINTF1(KStatusCancelRequest);
+
+ User::WaitForRequest(status);
+ AssertTrueL(status.Int() == KErrCancel, KCancel, status.Int());
+
+ // 17. Cancel request again
+ cancelErr = iPosServer.CancelRequest(EPositionServerNotifyModuleStatusEvent);
+ AssertTrueL(cancelErr == KErrNotFound, KCancel, cancelErr);
+
+ // 18. Request for non-existing PSY.
+ _LIT(KNonExistingPSY, "Request for non-existing PSY");
+ INFO_PRINTF1(KNonExistingPSY);
+ TUid aNonExistingUid;
+ aNonExistingUid.iUid = KUidNonExistingPsy;
+ iPosServer.NotifyModuleStatusEvent(statusEvent, status, aNonExistingUid);
+ _LIT(KStatusWaiting, "Waiting for status");
+ INFO_PRINTF1(KStatusWaiting);
+
+ User::WaitForRequest(status);
+ AssertTrueL(status.Int() == KErrNotFound, KWait, status.Int());
+
+
+ CleanupStack::PopAndDestroy(moduleUpdate);
+ CleanupStack::PopAndDestroy(db);
+ CleanupStack::PopAndDestroy(&client2);
+
+ _LIT(KClosePositioner, "Calling ClosePositioner");
+ INFO_PRINTF1(KClosePositioner);
+ ClosePositioner();
+
+ Disconnect();
+ }
+
+// ---------------------------------------------------------
+// CT_LbsClientPosTp189::CheckModuleStatus
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CT_LbsClientPosTp189::RequestWaitAndLogEventL(const TInt aEventToListenFor)
+ {
+ TPositionModuleStatusEvent statusEvent;
+ TRequestStatus status = KErrNone;
+
+ if(aEventToListenFor == TPositionModuleStatusEvent::EEventDataQualityStatus)
+ {
+ statusEvent.SetRequestedEvents(TPositionModuleStatusEvent::EEventDataQualityStatus);
+ }
+ else
+ {
+ statusEvent.SetRequestedEvents(TPositionModuleStatusEvent::EEventDeviceStatus);
+ }
+
+ // Renew request
+ iPosServer.NotifyModuleStatusEvent(statusEvent, status, iUidTestStatusPsy);
+
+ User::WaitForRequest(status);
+ _LIT(KErrLoopOpen, "Error in loop when opening subsession to PSY , error code = %d");
+ AssertTrueL(status.Int() == KErrNone, KErrLoopOpen, status.Int());
+
+ // Get status information for PSY.
+ TPositionModuleStatus moduleStatus = TPositionModuleStatus();
+ TInt err = iPosServer.GetModuleStatus(moduleStatus, iUidTestStatusPsy);
+ _LIT(KGet, "Error when getting module status from PSY , error code = %d");
+ AssertTrueL(err == KErrNone, KGet, err);
+ CheckModuleStatusL(moduleStatus);
+ }
+// ---------------------------------------------------------
+// CT_LbsClientPosTp189::CheckModuleStatus
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CT_LbsClientPosTp189::CheckModuleStatusL(const TPositionModuleStatus& aStatus , const TBool /*aCheckStatus*/)
+ {
+ TBuf<KMaxMessageSize> buf;
+ _LIT(KStatus,"Checking module status");
+ INFO_PRINTF1(KStatus);
+ _LIT(KErrBoundary, "The value on status/quaity is out of range");
+
+ _LIT(KDevSta, "Device Status = %d");
+ TInt status = aStatus.DeviceStatus();
+ buf.Format(KDevSta, status);
+ INFO_PRINTF1(buf);
+ buf.Zero();
+ //check that status value is not out of range
+ switch(status)
+ {
+ case TPositionModuleStatus::EDeviceUnknown:
+ case TPositionModuleStatus::EDeviceError:
+ case TPositionModuleStatus::EDeviceInitialising:
+ case TPositionModuleStatus::EDeviceStandBy:
+ case TPositionModuleStatus::EDeviceReady:
+ case TPositionModuleStatus::EDeviceActive:
+ case TPositionModuleStatus::EDeviceInactive: //the psy should not be able to report this
+ break;
+ case TPositionModuleStatus::EDeviceDisabled: //the psy should not be able to report this
+ default:
+ LogErrorAndLeaveL(KErrBoundary);
+ }
+
+
+
+ _LIT(KDatQual, "Data Quality Status = %d");
+ TInt quality = aStatus.DataQualityStatus();
+ buf.Format(KDatQual, quality);
+ INFO_PRINTF1(buf);
+ buf.Zero();
+ //check that qauality value is not out of range
+ switch(quality)
+ {
+ case TPositionModuleStatus::EDataQualityUnknown:
+ case TPositionModuleStatus::EDataQualityLoss:
+ case TPositionModuleStatus::EDataQualityPartial:
+ case TPositionModuleStatus::EDataQualityNormal:
+ break;
+ default:
+ LogErrorAndLeaveL(KErrBoundary);
+ }
+ }
+
+// End of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/lbsclient/src/ctlbsclientpostp193.cpp Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,129 @@
+// Copyright (c) 2001-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:
+//
+
+
+
+// INCLUDES
+#include "ctlbsclientpostp193.h"
+#include "ctlbsposclientholder.h"
+#include <e32keys.h>
+
+// CONSTANTS
+
+// ================= MEMBER FUNCTIONS =======================
+
+// ---------------------------------------------------------
+// Constructor.
+// ---------------------------------------------------------
+CT_LbsClientPosTp193::CT_LbsClientPosTp193(CT_LbsServer& aParent): CT_LbsPortedStepBase(aParent)
+ {
+ _LIT(KTestName, "TP193 - Maximum number of Clients");
+ SetTestStepName(KTestName);
+ }
+
+// ---------------------------------------------------------
+// Destructor.
+// ---------------------------------------------------------
+CT_LbsClientPosTp193::~CT_LbsClientPosTp193()
+ {
+ }
+
+// ---------------------------------------------------------
+// CT_LbsClientPosTp193::CloseTest
+// Always called after the test, even if the test leaves
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CT_LbsClientPosTp193::CloseTest()
+ {
+ }
+
+// ---------------------------------------------------------
+// CT_LbsClientPosTp193::StartL
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CT_LbsClientPosTp193::StartL()
+ {
+ SetupPsyL(iUidTestPsy2);
+
+ User::After(2000000);
+
+ const TInt KNrOfClients = 25;
+ CT_LbsPosClientHolder* clients = CT_LbsPosClientHolder::NewLC(KNrOfClients,iUidTestPsy2);
+
+ TTime starttime,stoptime;
+
+ starttime.UniversalTime();
+
+ clients->MakeRequests();
+
+ stoptime.UniversalTime();
+
+ // Substract total delay incurred due to TestPsy2...i.e 2sec
+ TInt duration=stoptime.Int64()-starttime.Int64()-2000000;
+
+ _LIT(KMessage,"25 simultaneous requests from 25 different sessions with a psy completed in %d microsec");
+ TBuf<256> message;
+ message.Format(KMessage,duration);
+ INFO_PRINTF1(message);
+
+ if(duration>3000000)
+ {
+ _LIT(KTime, "Time taken>3 sec");
+ INFO_PRINTF1(KTime);
+ }
+
+ //check the result of the request
+ //only KErrNoMemory or KErrNone is allowed.
+ // CONSTANTS
+
+ TPositionInfo position[KNrOfClients];
+
+ TTimeIntervalMicroSeconds reqTime[KNrOfClients];
+ TInt status;
+ TBool error = EFalse;
+ TBuf<150> buf;
+
+ //some printing mostly used for information purpose.
+ for (TInt i = 0; i < KNrOfClients; i++)
+ {
+ clients->GetResult(status, position[i], reqTime[i], i);
+ if (status != 0)
+ {
+ _LIT(KError, "The position requested could not be retrieved, status = %d");
+ buf.Format(KError, status);
+ ERR_PRINTF1(buf);
+ if (status != -4)
+ {
+ error = ETrue;
+ }
+ }
+ _LIT(KReqMsg, "client %d request time: %d");
+
+ buf.Format(KReqMsg, i, reqTime[i].Int64());
+ INFO_PRINTF1(buf);
+ _LIT(KSeparator, "********");
+ INFO_PRINTF1(KSeparator);
+ }
+
+ if (error)
+ {
+ _LIT(KErrorCode, "The requests was not completed with KErrNoMemory or KErrNone");
+ LogErrorAndLeaveL(KErrorCode);
+ }
+ CleanupStack::PopAndDestroy(clients); //clients
+ }
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/lbsclient/src/ctlbsclientpostp194.cpp Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,87 @@
+// Copyright (c) 2002-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:
+//
+
+
+
+// INCLUDE FILES
+#include "ctlbsclientpostp194.h"
+#include "ctlbsclientperiodictester.h"
+
+// CONSTANTS
+_LIT(KServiceName1, " aaaaaaaaaaa");
+_LIT(KServiceName2, " bbbbbbbbbbb");
+
+// ================= MEMBER FUNCTIONS =======================
+
+
+// ---------------------------------------------------------
+// Constructor.
+// ---------------------------------------------------------
+CT_LbsClientPosTp194::CT_LbsClientPosTp194(CT_LbsServer& aParent): CT_LbsPortedStepBase(aParent)
+ {
+ _LIT(KTestName, "TP194 - Periodic Updates, Duration test");
+ SetTestStepName(KTestName);
+ }
+
+// ---------------------------------------------------------
+// Destructor.
+// ---------------------------------------------------------
+CT_LbsClientPosTp194::~CT_LbsClientPosTp194()
+ {
+ }
+
+// ---------------------------------------------------------
+// CT_LbsClientPosTp194::StartL
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CT_LbsClientPosTp194::StartL()
+ {
+
+ SetupPsyL(iUidMultiPsy);
+
+ TInt numberOfRuns = 100;
+ TTimeIntervalMicroSeconds interval5 = TTimeIntervalMicroSeconds(4000000);
+ TUid uid = iUidMultiPsy;
+
+ CT_LbsClientPeriodicTester* periodicTester1 = CT_LbsClientPeriodicTester::NewL(interval5, KServiceName1, iLog, uid, numberOfRuns);
+ CleanupStack::PushL(periodicTester1);
+
+ CT_LbsClientPeriodicTester* periodicTester2 = CT_LbsClientPeriodicTester::NewL(interval5, KServiceName2, iLog, uid, numberOfRuns);
+ CleanupStack::PushL(periodicTester2);
+
+ periodicTester1->RequestNotification();
+ periodicTester2->RequestNotification();
+
+ // Active scheduler is stopped two times.
+ CActiveScheduler::Start();
+ CActiveScheduler::Start();
+
+ //check for errors
+ TBool test1 = periodicTester1 -> IsCompletedOK();
+ TBool test2 = periodicTester2 -> IsCompletedOK();
+
+ CleanupStack::PopAndDestroy(2,periodicTester1);
+
+ if (!test1 || !test2)
+ {
+ _LIT(KError, "Test did not complete with no error, check log file");
+ LogErrorAndLeaveL(KError);
+ }
+
+ }
+
+// End of File
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/lbsclient/src/ctlbsclientpostp195.cpp Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,129 @@
+// Copyright (c) 2002-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:
+//
+
+
+
+// INCLUDE FILES
+#include "ctlbsclientpostp195.h"
+#include <LbsPositionInfo.h>
+#include <Lbs.h>
+#include <LbsCommon.h>
+#include <LbsRequestor.h>
+
+// ================= MEMBER FUNCTIONS =======================
+
+// ---------------------------------------------------------
+// Constructor.
+// ---------------------------------------------------------
+CT_LbsClientPosTp195::CT_LbsClientPosTp195(CT_LbsServer& aParent): CT_LbsPortedStepBase(aParent)
+ {
+ _LIT(KTestName, "TP195 - Periodic Updates, Slow PSY");
+ SetTestStepName(KTestName);
+ }
+
+// ---------------------------------------------------------
+// Destructor.
+// ---------------------------------------------------------
+CT_LbsClientPosTp195::~CT_LbsClientPosTp195()
+ {
+ }
+
+// ---------------------------------------------------------
+// CT_LbsClientPosTp195::StartL
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CT_LbsClientPosTp195::StartL()
+ {
+ SetupPsyL(iUidTestPsy3);
+
+ TInt numberOfRuns = 5;
+ TTimeIntervalMicroSeconds interval = TTimeIntervalMicroSeconds(2000000);
+ const TInt slowPsyUpdate = 4000000;
+
+ #ifdef __WINS__
+ const TInt KErrorInterval = 2500000;
+ #else
+ const TInt KErrorInterval = 500000;
+ #endif
+
+
+ RPositionServer posServer;
+ CleanupClosePushL(posServer);
+ RPositioner positioner;
+ CleanupClosePushL(positioner);
+ TPositionInfo positionInfo = TPositionInfo();
+
+ _LIT(KConnectErr, "Error when connecing to EPos server, %d");
+ TInt err = posServer.Connect();
+ AssertTrueL(err == KErrNone, KConnectErr, err);
+
+ _LIT(KOpenErr, "Error when opening positioner, %d");
+ err = positioner.Open(posServer, iUidTestPsy3);
+ AssertTrueL(err == KErrNone, KOpenErr, err);
+
+ TPositionUpdateOptions posOption;
+ posOption.SetUpdateInterval(interval);
+
+ _LIT(KUpdateErr, "Error when setting update interval, %d");
+ err = positioner.SetUpdateOptions(posOption);
+ AssertTrueL(err == KErrNone, KUpdateErr, err);
+
+ _LIT(KService ,"Service");
+ positioner.SetRequestor(CRequestor::ERequestorService,
+ CRequestor::EFormatApplication, KService);
+
+ //do a couple of request and check the times between requests.
+
+ TTime now, startTime;
+ TTimeIntervalMicroSeconds requestTime;
+ _LIT(KErrorRequest, "Error in request");
+ TRequestStatus status;
+ TInt64 reqTime;
+
+ for (TInt i = 0; i < numberOfRuns; i++)
+ {
+ startTime.UniversalTime();
+ positioner.NotifyPositionUpdate(positionInfo, status);
+ User::WaitForRequest(status);
+ err = status.Int();
+ AssertTrueL(err == KErrNone, KErrorRequest, err);
+ now.UniversalTime();
+ requestTime = now.MicroSecondsFrom(startTime);
+ _LIT(KError, "Request time, %d microsecs.");
+ TBuf<100> buf;
+ reqTime = requestTime.Int64();
+ buf.Format(KError, reqTime);
+ INFO_PRINTF1(buf);
+ if (i != 0)
+ {
+ //check that the time is ok, by accepting an error interval
+ TInt var1 = 2000000 + slowPsyUpdate + KErrorInterval;
+ TInt var2 = 2000000 + (slowPsyUpdate - KErrorInterval);
+ if (reqTime > var1 || reqTime < var2)
+ {
+ _LIT(KErrorInterval, "The update is not within valid range");
+ LogErrorAndLeaveL(KErrorInterval);
+ }
+ }
+ }
+
+ CleanupStack::PopAndDestroy(&positioner);
+ CleanupStack::PopAndDestroy(&posServer);
+
+ }
+
+// End of File
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/lbsclient/src/ctlbsclientpostp2.cpp Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,213 @@
+// Copyright (c) 2001-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:
+//
+
+
+
+
+// INCLUDES
+#include "ctlbsclientpostp2.h"
+#include "ctlbsclientpositionconstants.h"
+#include <LbsSatellite.h>
+
+// CONSTANTS
+
+// ================= MEMBER FUNCTIONS =======================
+
+// ---------------------------------------------------------
+// Constructor.
+// ---------------------------------------------------------
+CT_LbsClientPosTp2::CT_LbsClientPosTp2(CT_LbsServer& aParent): CT_LbsPortedStepBase(aParent)
+ {
+ _LIT(KTestName, "TP2 - Request location from specific PSY");
+ SetTestStepName(KTestName);
+ }
+
+// ---------------------------------------------------------
+// Destructor.
+// ---------------------------------------------------------
+CT_LbsClientPosTp2::~CT_LbsClientPosTp2()
+ {
+ }
+
+// ---------------------------------------------------------
+// CT_LbsClientPosTp2::StartL
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CT_LbsClientPosTp2::StartL()
+ {
+ SetupPsyL(iUidMultiPsy);
+
+ //synchronous request
+ ConnectL();
+
+ User::LeaveIfError(OpenPositionerByName(iUidMultiPsy));
+
+ TPositionInfo info = TPositionInfo();
+
+ RequestL(info);
+ CheckPositionInfoL(info);
+
+ TPositionCourseInfo courseInfo;
+
+ RequestL(courseInfo);
+ CheckPositionCourseInfoL(courseInfo);
+
+ TPositionSatelliteInfo satelliteInfo;
+
+ RequestL(satelliteInfo);
+ CheckPositionSatelliteInfoL(satelliteInfo);
+
+
+ HPositionGenericInfo* genericInfo = HPositionGenericInfo::NewLC();
+
+ RequestL(*genericInfo);
+ CheckGenericInfoL(*genericInfo);
+
+ CleanupStack::PopAndDestroy(); //genericInfo
+
+ ClosePositioner();
+
+ Disconnect();
+ }
+
+
+// ---------------------------------------------------------
+// CT_LbsClientPosTp2::AssertTrueL
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CT_LbsClientPosTp2::AssertTrueL(TBool aCondition, const TDesC& aErrorMsg)
+ {
+ if (!aCondition)
+ {
+ LogErrorAndLeaveL(aErrorMsg);
+ }
+ }
+
+void CT_LbsClientPosTp2::RequestL(TPositionInfoBase& aInfoBase)
+ {
+ _LIT(KService, "service");
+ TInt err = PerformSyncRequest(KService, &aInfoBase);
+
+ if (err != KErrNone)
+ {
+ _LIT(KErrorRequest, "The request was not completed with KErrorNone, errCode = %d");
+ TBuf<100> buf;
+ buf.Format(KErrorRequest, err);
+ LogErrorAndLeaveL(buf);
+ }
+
+ _LIT(KIncorrectPsySyncRequestError,
+ "TP2. Position from wrong PSY received (sync request).");
+ AssertTrueL(iUidMultiPsy == aInfoBase.ModuleId(), KIncorrectPsySyncRequestError);
+ }
+
+void CT_LbsClientPosTp2::CheckPositionInfoL(TPositionInfo& aInfo)
+ {
+ TPosition pos;
+ aInfo.GetPosition(pos);
+ CheckPositionL(pos);
+ }
+
+void CT_LbsClientPosTp2::CheckPositionCourseInfoL(TPositionCourseInfo& aCourseInfo)
+ {
+ CheckPositionInfoL(aCourseInfo);
+ TCourse course;
+ aCourseInfo.GetCourse(course);
+ if (course.Heading() != KHeading ||
+ course.Speed() != KSpeed ||
+ course.SpeedAccuracy() != KSpeedAcc ||
+ course.HeadingAccuracy() != KHeadingAcc )
+ {
+ _LIT(KErrCourse, "Course not correct");
+ LogErrorAndLeaveL(KErrCourse);
+ }
+ }
+
+void CT_LbsClientPosTp2::CheckPositionSatelliteInfoL(TPositionSatelliteInfo& aSatelliteInfo)
+ {
+ CheckPositionCourseInfoL(aSatelliteInfo);
+ if((TUint)aSatelliteInfo.NumSatellitesUsed() != KNumberOfSatellitesUsed ||
+ aSatelliteInfo.SatelliteTime() != TTime(KSatelliteTime) ||
+ (TUint)aSatelliteInfo.NumSatellitesInView() != KNumberOfSatellitesInView ||
+ aSatelliteInfo.HorizontalDoP() != KHorizontalDoPValue ||
+ aSatelliteInfo.VerticalDoP() != KVerticalDoPValue ||
+ aSatelliteInfo.TimeDoP() != KTimeDoPValue)
+ {
+ _LIT(KErrBasicSat, "Basic satellite information not correct");
+ LogErrorAndLeaveL(KErrBasicSat);
+ }
+ TInt sats = aSatelliteInfo.NumSatellitesInView();
+ for (int i = 0; i < sats; i++)
+ {
+ TSatelliteData satelliteData;
+ TInt err = aSatelliteInfo.GetSatelliteData(i,satelliteData);
+ if (err != KErrNone)
+ {
+ _LIT(KErrGetSat, "Not possible to get satellite data, error code = %d");
+ TBuf<100> buf;
+ buf.Format(KErrGetSat, err);
+ LogErrorAndLeaveL(buf);
+ }
+ if ( (i%2) == 0 )
+ {
+ if( satelliteData.SatelliteId() != (KSatelliteId +i) ||
+ satelliteData.Azimuth() != KAzimuth ||
+ satelliteData.Elevation() != KElevation ||
+ satelliteData.IsUsed() != KIsUsed ||
+ satelliteData.SignalStrength() != KSignalStrength)
+ {
+ _LIT(KErrSatDataEven, "Incorrect satellite data on even satellites");
+ LogErrorAndLeaveL(KErrSatDataEven);
+ }
+ }
+ else
+ {
+ if( satelliteData.SatelliteId() != (KSatelliteId +i) ||
+ satelliteData.Azimuth() != KAzimuthOdd ||
+ satelliteData.Elevation() != KElevationOdd ||
+ satelliteData.IsUsed() != KIsUsedOdd ||
+ satelliteData.SignalStrength() != KSignalStrengthOdd)
+ {
+ _LIT(KErrSatDataOdd, "Incorrect satellite data on odd satellites");
+ LogErrorAndLeaveL(KErrSatDataOdd);
+ }
+ }
+
+ }
+ }
+
+void CT_LbsClientPosTp2::CheckGenericInfoL(HPositionGenericInfo& aGenericInfo)
+ {
+ CheckPositionInfoL(aGenericInfo);
+
+ }
+
+void CT_LbsClientPosTp2::CheckPositionL(TPosition& aPos)
+ {
+ if (aPos.Time() != TTime(KPositionTime) ||
+ aPos.HorizontalAccuracy() != KHorizontalAcc ||
+ aPos.VerticalAccuracy() != KVerticalAcc ||
+ aPos.Latitude() != KLatitude ||
+ aPos.Longitude() != KLongitude ||
+ aPos.Altitude() != KAltitude)
+ {
+ _LIT(KErrPosition, "Wrong position returned");
+ LogErrorAndLeaveL(KErrPosition);
+ }
+ }
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/lbsclient/src/ctlbsclientpostp201.cpp Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,188 @@
+// Copyright (c) 2001-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:
+//
+
+
+
+// INCLUDE FILES
+#include "ctlbsclientpostp201.h"
+#include <LbsPositionInfo.h>
+#include <Lbs.h>
+#include <LbsCommon.h>
+#include <LbsRequestor.h>
+#include <s32file.h>
+#include "ctlbsclientobserver.h"
+
+// CONSTANTS
+const TInt KSecond = 1*1000*1000;
+const TInt KMaxSentenceLength = 60; //Max length of each line in EXEClient-logfile
+const TInt KNoOfEXCalls = 3; // Nr of calls to ExeClient
+_LIT(KExeClientPath, "ctlbsexeclient");
+_LIT(KExeResultPath, "c:\\logs\\execlientresult%d.txt");
+_LIT(KSucce, "Test %d was successful");
+_LIT(KFail, "Test %d failed");
+_LIT8(KSuccess, "SUCCESS"); //String to search for that indicates the test was succesful
+
+// ================= MEMBER FUNCTIONS =======================
+
+// ---------------------------------------------------------
+// Constructor.
+// ---------------------------------------------------------
+CT_LbsClientPosTp201::CT_LbsClientPosTp201(CT_LbsServer& aParent): CT_LbsPortedStepBase(aParent)
+ {
+ _LIT(KTestName, "TP201 - Exe Client");
+ SetTestStepName(KTestName);
+ }
+
+// ---------------------------------------------------------
+// Destructor.
+// ---------------------------------------------------------
+CT_LbsClientPosTp201::~CT_LbsClientPosTp201()
+ {
+ }
+
+// ---------------------------------------------------------
+// CT_LbsClientPosTp201::StartL
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CT_LbsClientPosTp201::StartL()
+ {
+
+ //This test can be run on emulator now.
+ TInt result;
+ TInt i;
+ TInt foundsucces;
+ RProcess execlient[KNoOfEXCalls];
+ RFile file;
+ RFileReadStream fstream;
+ RFs fileSession;
+ User::LeaveIfError(fileSession.Connect());
+ CleanupClosePushL(fileSession);
+ CleanupClosePushL(fstream);
+ CleanupClosePushL(file);
+ CFileMan* fileMan = CFileMan::NewL(fileSession);
+ CleanupStack::PushL(fileMan);
+
+ _LIT(KRemoveFiles, "Remove files");
+ INFO_PRINTF1(KRemoveFiles);
+
+ //1. First check for old ExeClientResult-files to remove.
+ TBuf<40> filepath;
+ filepath.Append(KExeResultPath);
+ for ( i = 1; i<=KNoOfEXCalls; i++)
+ {
+ filepath.Format(KExeResultPath,i);
+ TInt err = fileMan->Delete(filepath, CFileMan::EOverWrite);
+ if (err != KErrNone && err != KErrNotFound)
+ {
+ _LIT(KErrRemoveDll, "Removal of a previous ExeClientResult-file failed!");
+ TBuf<50> buf;
+ buf.Format(KErrRemoveDll, err);
+ LogErrorAndLeaveL(buf);
+ }
+ }
+
+ _LIT(KStartClients, "Start clients");
+ INFO_PRINTF1(KStartClients);
+
+ //2. Make 3 calls to ExeClient.
+ for ( i = 1; i<= KNoOfEXCalls; i++)
+ {
+ //Start the execlient-process
+ result = execlient[i-1].Create(KExeClientPath, KNullDesC);
+ User::LeaveIfError(result);
+ execlient[i-1].Resume(); //make the execlient visible
+ User::After(6000000);
+ }
+
+ CT_LbsClientObserver::WaitForEPosShutdown(); //Wait for Epos to complete
+ User::After(KSecond); //Wait for completion of writing to files. 1 minute.
+ for ( i = 0; i < KNoOfEXCalls; i++)
+ {
+ TRequestStatus closed;
+ execlient[i].Logon(closed);
+ User::WaitForRequest(closed);
+
+ TBuf<100> exit;
+ _LIT(KExitClient, "Client %d exited: Type %d, Reason %d");
+ exit.Format(KExitClient,
+ i+1, execlient[i].ExitType(), execlient[i].ExitReason());
+ INFO_PRINTF1(exit);
+
+ execlient[i].Close(); //Close handle to exe-client
+ }
+ _LIT(KCheckResults, "Check results");
+ INFO_PRINTF1(KCheckResults);
+
+ //3. See if all calls were successes
+ TBuf<40> successinfo;
+ successinfo.Append(KSucce);
+ TBuf<40> failinfo;
+ failinfo.Append(KFail);
+ for ( i = 1; i <= KNoOfEXCalls; i++)
+ {
+ filepath.Format(KExeResultPath,i);
+ User::LeaveIfError(file.Open(fileSession, filepath, EFileShareReadersOnly));//open read only
+ fstream.Attach(file);
+
+ TBuf8<KMaxSentenceLength> dbuffer; //Buffer to place read data from file
+ TBuf8<KMaxSentenceLength> prevbuffer; //Buffer to place previous read data from file
+ TBool search = ETrue;
+ const TChar eoline(';');
+ while (search)
+ {
+ dbuffer.Delete(0, KMaxSentenceLength);
+ TRAPD(ferr, (fstream.ReadL(dbuffer,eoline)));
+ if ( ferr == KErrEof)
+ {
+ search = EFalse; //stop searching
+ }
+ else if ( ferr == KErrNone)
+ {
+ prevbuffer.Delete(0, KMaxSentenceLength);
+ prevbuffer = dbuffer;
+ }
+ else
+ {
+ _LIT(KReadError, "Error when reading from log-file.");
+ LogErrorAndLeaveL(KReadError);
+ }
+ }
+ //Check if success
+ foundsucces = prevbuffer.Find(KSuccess);
+ if ( foundsucces != KErrNotFound)
+ {
+ successinfo.Format(KSucce,i);
+ INFO_PRINTF1(successinfo);
+ }
+ else
+ {
+ failinfo.Format(KFail,i);
+ LogErrorAndLeaveL(failinfo);
+ }
+ } //for
+
+ _LIT(KDone, "Done.");
+ INFO_PRINTF1(KDone);
+
+ //4. Let's clean...
+ CleanupStack::PopAndDestroy(fileMan); //fileMan
+ CleanupStack::PopAndDestroy(&file); //file
+ CleanupStack::PopAndDestroy(&fstream); //fstream
+ CleanupStack::PopAndDestroy(&fileSession); //fileSession
+ }
+
+// End of File
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/lbsclient/src/ctlbsclientpostp203.cpp Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,433 @@
+// Copyright (c) 2001-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:
+//
+
+
+
+// INCLUDE FILES
+#include "ctlbsclientpostp203.h"
+#include "ctlbsrequester.h"
+#include <LbsPositionInfo.h>
+#include <Lbs.h>
+#include <LbsCommon.h>
+#include <LbsRequestor.h>
+#include <EPos_CPosModules.h>
+#include <EPos_CPosModuleUpdate.h>
+
+// ================= MEMBER FUNCTIONS =======================
+
+// Constructor.
+CT_LbsClientPosTp203::CT_LbsClientPosTp203(CT_LbsServer& aParent): CT_LbsPortedStepBase(aParent)
+ {
+ _LIT(KTestName, "TP203 - Periodic Update, default psy");
+ SetTestStepName(KTestName);
+ }
+
+// Destructor
+CT_LbsClientPosTp203::~CT_LbsClientPosTp203()
+ {
+ RDebug::Print(_L("CT_LbsClientPosTp203::~CT_LbsClientPosTp203"));
+ }
+
+// ---------------------------------------------------------
+// CPosTp203::CloseTest
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CT_LbsClientPosTp203::CloseTest()
+ {
+ RDebug::Print(_L("CT_LbsClientPosTp203::CloseTest"));
+
+ delete iPeriodicTimer;
+ iPeriodicTimer = NULL;
+ }
+
+// ---------------------------------------------------------
+// CPosTp203::StartL
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CT_LbsClientPosTp203::StartL()
+ {
+ const TInt KLongErrorInterval = 3000000;
+
+#ifdef __WINS__
+ const TInt KNormalErrorInterval = 1500000;
+#else
+ const TInt KNormalErrorInterval = 500000;
+#endif
+
+
+ TInt numberOfRuns = 6;
+ TInt normalInterval = 4500000;
+ // Using the same interval as the slow psy (TestPsy3) to make things easy.
+ TTimeIntervalMicroSeconds interval = TTimeIntervalMicroSeconds(normalInterval);
+ TTimeIntervalMicroSeconds shortInterval = TTimeIntervalMicroSeconds(1500000);
+
+ // Will happen the first time when default is changed
+ TInt longInterval = 8500000;
+ TInt errorInterval = KNormalErrorInterval;
+
+ TInt requestUpdate = normalInterval;
+
+ RPositionServer posServer;
+ CleanupClosePushL(posServer);
+ TInt err = posServer.Connect();
+ _LIT(KConnectErr, "Error when connecing to EPos server, %d");
+ AssertTrueL(err == KErrNone, KConnectErr, err);
+
+ SetupPsyL(iUidMultiPsy);
+
+ RPositioner positioner;
+ CleanupClosePushL(positioner);
+ err = positioner.Open(posServer); // Use Default PSY
+ _LIT(KOpenErr, "Error when opening positioner, %d");
+ AssertTrueL(err == KErrNone, KOpenErr, err);
+
+ TPositionInfo positionInfo = TPositionInfo();
+ TPositionUpdateOptions posOption;
+ posOption.SetUpdateInterval(interval);
+
+ err = positioner.SetUpdateOptions(posOption);
+ _LIT(KUpdateErr, "Error when setting update interval, %d");
+ AssertTrueL(err == KErrNone, KUpdateErr, err);
+
+ _LIT(KService ,"Service");
+ positioner.SetRequestor(CRequestor::ERequestorService,
+ CRequestor::EFormatApplication, KService);
+
+ // Do a couple of request and check the times between requests.
+ TTime now, startTime;
+ TTimeIntervalMicroSeconds requestTime;
+ _LIT(KErrorRequest, "Error in request");
+ TRequestStatus status;
+ TInt64 reqTime;
+
+ for (TInt i = 0; i < numberOfRuns; i++)
+ {
+ TBuf<100> info;
+ _LIT(KInfo, "Making request %d");
+ info.Format(KInfo, i);
+ INFO_PRINTF1(info);
+ if (i == 2)
+ {
+ _LIT(KSetTestPSY3, "Setting up TestPsy3");
+ INFO_PRINTF1(KSetTestPSY3);
+ SetupPsyL(iUidTestPsy3);
+ User::After(1000000);
+ requestUpdate = longInterval;
+ errorInterval = KLongErrorInterval;
+ }
+ else
+ {
+ requestUpdate = normalInterval;
+ errorInterval = KNormalErrorInterval;
+ }
+
+ _LIT(KWaitStatus1, "Waiting for status after NotifyPositionUpdate1");
+ INFO_PRINTF1(KWaitStatus1);
+
+ startTime.UniversalTime();
+ positioner.NotifyPositionUpdate(positionInfo, status);
+ User::WaitForRequest(status);
+ now.UniversalTime();
+
+ err = status.Int();
+ AssertTrueL(err == KErrNone, KErrorRequest, err);
+
+ requestTime = now.MicroSecondsFrom(startTime);
+ _LIT(KError, "Request time, %d microsecs.");
+ TBuf<100> buf;
+ reqTime = requestTime.Int64();
+ buf.Format(KError, reqTime);
+ INFO_PRINTF1(buf);
+
+ if (i != 0)
+ {
+ // Check that the time is ok, by accepting an error interval
+ if (reqTime > (requestUpdate + errorInterval) ||
+ reqTime < (requestUpdate - errorInterval))
+ {
+ _LIT(KErrorInterval, "The update is not within valid range");
+ LogErrorAndLeaveL(KErrorInterval);
+ }
+ }
+
+ // Check that position was returned from correct PSY:
+ if (i < 2)
+ {
+ VerifyPositionFromL(positionInfo, iUidMultiPsy);
+ }
+ else
+ {
+ VerifyPositionFromL(positionInfo, iUidTestPsy3);
+ }
+ }
+
+ _LIT(KSetUpdateOptions, "Calling SetUpdateOptions");
+ INFO_PRINTF1(KSetUpdateOptions);
+ posOption.SetUpdateInterval(shortInterval);
+ err = positioner.SetUpdateOptions(posOption);
+ AssertTrueL(err == KErrNone, KUpdateErr, err);
+
+ // Set up three PSYs the two onces with top priorities supports tracking
+ // and the third one does not
+ CPosModules* db = CPosModules::OpenL();
+ CleanupStack::PushL(db);
+ CPosModuleUpdate* moduleUpdate = CPosModuleUpdate::NewLC();
+
+ _LIT(KSetPriority0, "Enabling Tracking PSY with priority 0");
+ INFO_PRINTF1(KSetPriority0);
+ moduleUpdate->SetUpdateAvailability(ETrue);
+ User::After(1000000);
+
+ db->UpdateModuleL(iUidTestTrackingPsy, *moduleUpdate);
+ db->SetModulePriorityL(iUidTestTrackingPsy, 0);
+ User::After(1000000);
+
+
+
+ _LIT(KSetPriority1, "Enabling Timer PSY with priority 1");
+ /*INFO_PRINTF1(KSetPriority1);
+ db->UpdateModuleL(iUidTestTimerPsy, *moduleUpdate);
+ db -> SetModulePriorityL(iUidTestTimerPsy, 1);
+ User::After(1000000);*/
+
+ _LIT(KSetPriority2, "Enabling Multi PSY with priority 2");
+ /*INFO_PRINTF1(KSetPriority2);
+ db->UpdateModuleL(iUidMultiPsy, *moduleUpdate);
+ db -> SetModulePriorityL(iUidMultiPsy, 2);
+ User::After(1000000); // just to let the events happen in the server.*/
+
+
+ // Make one request to ensure that Start tracking is called.
+ positioner.NotifyPositionUpdate(positionInfo, status);
+ _LIT(KWaitStatus2, "Waiting for status after NotifyPositionUpdate2");
+ INFO_PRINTF1(KWaitStatus2);
+ RDebug::Print(KWaitStatus2);
+ User::WaitForRequest(status);
+ err = status.Int();
+ AssertTrueL(err == KErrNone || err == KPositionQualityLoss, KErrorRequest, err);
+
+ TPosition pos;
+ positionInfo.GetPosition(pos);
+ User::After(1000000);
+
+ // TestTrackingPsy returns 65.0 for Tracking requests and 30.0 for ordinary position requests
+ _LIT(KErrorAndLeave, "Wrong position returned from tracking PSY");
+ if (pos.Latitude() != 65.0 || pos.Longitude() != 65.0 || pos.Altitude() != 65.0)
+ {
+ LogErrorAndLeaveL(KErrorAndLeave);
+ }
+
+ INFO_PRINTF1(KSetPriority1);
+ db->UpdateModuleL(iUidTestTimerPsy, *moduleUpdate);
+ db -> SetModulePriorityL(iUidTestTimerPsy, 1);
+ User::After(2000000); // MH move
+
+ // Disable the psy with top priority, should result in switch of psy
+ _LIT(KDisablePSY, "Disabling Tracking PSY");
+ INFO_PRINTF1(KDisablePSY);
+ moduleUpdate->SetUpdateAvailability(EFalse);
+ db->UpdateModuleL(iUidTestTrackingPsy, *moduleUpdate);
+ // To let the events happen in the server.
+ User::After(2000000);
+
+ // Make one request to enable tracking
+ positioner.NotifyPositionUpdate(positionInfo, status);
+ _LIT(KWaitStatus4, "Waiting for status after NotifyPositionUpdate4");
+ INFO_PRINTF1(KWaitStatus4);
+ RDebug::Print(KWaitStatus4);
+ User::WaitForRequest(status);
+ err = status.Int();
+ AssertTrueL(err == KErrNone || err == KPositionQualityLoss, KErrorRequest, err);
+
+ positionInfo.GetPosition(pos);
+
+ // To let the events happen in the server.
+ User::After(2000000);
+
+ // TestTimerPsy returns 55.0 for Tracking requests and 20.0 for ordinary position requests
+ if (pos.Latitude() != 55.0 || pos.Longitude() != 55.0 || pos.Altitude() != 55.0)
+ {
+ LogErrorAndLeaveL(KErrorAndLeave);
+ }
+
+ // Enable the psy with top priority, should result in switch back to that psy
+ _LIT(KEnablePSY, "Enabling tracking PSY");
+ INFO_PRINTF1(KEnablePSY);
+ moduleUpdate->SetUpdateAvailability(ETrue);
+ db->UpdateModuleL(iUidTestTrackingPsy, *moduleUpdate);
+ User::After(2000000); // just to let the events happen in the server.
+
+ // To enable tracking
+ positioner.NotifyPositionUpdate(positionInfo, status);
+ _LIT(KWaitStatus6, "Waiting for status after NotifyPositionUpdate6");
+ INFO_PRINTF1(KWaitStatus6);
+ User::WaitForRequest(status);
+ err = status.Int();
+ AssertTrueL(err == KErrNone || err == KPositionQualityLoss, KErrorRequest, err);
+
+ // To let the events happen in the server.
+ User::After(2000000);
+
+ positionInfo.GetPosition(pos);
+ // TestTrackingPsy returns 65.0 for Tracking requests and 30.0 for ordinary position requests
+ if (pos.Latitude() != 65.0 || pos.Longitude() != 65.0 || pos.Altitude() != 65.0)
+ {
+ LogErrorAndLeaveL(KErrorAndLeave);
+ }
+
+ INFO_PRINTF1(KSetPriority2);
+ db->UpdateModuleL(iUidMultiPsy, *moduleUpdate);
+ db -> SetModulePriorityL(iUidMultiPsy, 2);
+ // To let the events happen in the server. //MH
+ User::After(1000000);
+
+ // Disable two psys with top priority that supports tracking.
+ _LIT(KDisableTimer,"Disabling Timer and Tracking PSY");
+ INFO_PRINTF1(KDisableTimer);
+ moduleUpdate->SetUpdateAvailability(EFalse);
+ db->UpdateModuleL(iUidTestTimerPsy, *moduleUpdate);
+ db->UpdateModuleL(iUidTestTrackingPsy, *moduleUpdate);
+ User::After(2000000); // just to let the events happen in the server.
+
+ positioner.NotifyPositionUpdate(positionInfo, status);
+ _LIT(KWaitStatus8, "Waiting for status after NotifyPositionUpdate8");
+ INFO_PRINTF1(KWaitStatus8);
+ User::WaitForRequest(status);
+ err = status.Int();
+ AssertTrueL(err == KErrNone, KErrorRequest, err);
+
+ if (iUidMultiPsy.iUid != positionInfo.ModuleId().iUid)
+ {
+ _LIT(KIncorrectPsyError,
+ "Position from wrong PSY received");
+ LogErrorAndLeaveL(KIncorrectPsyError);
+ }
+
+ // Disable a PSY during ongoing requesting
+ // Enable the the top three PSYs
+ _LIT(KEnableTimer,"Enabling Timer PSY");
+ INFO_PRINTF1(KEnableTimer);
+ moduleUpdate->SetUpdateAvailability(ETrue);
+ db->UpdateModuleL(iUidTestTimerPsy, *moduleUpdate);
+ db->UpdateModuleL(iUidTestTrackingPsy, *moduleUpdate);
+ moduleUpdate->SetUpdateAvailability(EFalse);
+ db->UpdateModuleL(iUidMultiPsy, *moduleUpdate);
+ // To let the events happen in the server.
+ User::After(2000000);
+
+ const TInt KRequestInterval = 4000000;
+ TCallBack callback(DisablePsyL, this);
+ iPeriodicTimer = CPeriodic::NewL(CActive::EPriorityStandard);
+ TTimeIntervalMicroSeconds32 disableTime = TTimeIntervalMicroSeconds32(2000000);
+ iPeriodicTimer->Start(disableTime, disableTime, callback);
+ CT_LbsRequester* request = CT_LbsRequester::NewL(this, KRequestInterval, Logger()); // TTF = 0s
+ CleanupStack::PushL(request);
+
+ // To enable tracking
+ _LIT(KRequest1, "Calling request->StartRequest1");
+ INFO_PRINTF1(KRequest1);
+ request->StartRequest(); // only one request should exist
+
+ CActiveScheduler::Start();
+
+ err = request ->CompletionCode();
+ _LIT(KErrCode, "Competion code is not KErrNone");
+ AssertTrueL(err == KErrNone, KErrCode, err);
+
+ request->GetPositionInfo(positionInfo);
+ User::After(2000000);
+
+ // Should get tracking data
+ _LIT(KRequest2, "Calling request->StartRequest2");
+ INFO_PRINTF1(KRequest2);
+ request->StartRequest(); // only one request should exist in reqlog
+
+ CActiveScheduler::Start();
+
+ err = request ->CompletionCode();
+ AssertTrueL(err == KErrNone, KErrCode, err);
+
+ request ->GetPositionInfo(positionInfo);
+ positionInfo.GetPosition(pos);
+
+ if (iUidTestTimerPsy.iUid != positionInfo.ModuleId().iUid)
+ {
+ _LIT(KIncorrectPsyError,
+ "Position from wrong PSY received");
+ LogErrorAndLeaveL(KIncorrectPsyError);
+ }
+ // TestTimerPsy returns 55.0 for Tracking requests and 20.0 for ordinary position requests
+ if (pos.Latitude() != 55.0 || pos.Longitude() != 55.0 || pos.Altitude() != 55.0)
+ {
+ LogErrorAndLeaveL(KErrorAndLeave);
+ }
+
+ _LIT(KSetPSY, "Setting up Tracking PSY");
+ INFO_PRINTF1(KSetPSY);
+ SetupPsyL(iUidTestTrackingPsy);
+ User::After(1500000); // just to let the events happen in the server.
+
+ CT_LbsRequester* request2 = CT_LbsRequester::NewL(this, interval, Logger()); // TTF = 0s
+ CleanupStack::PushL(request2);
+
+ iPeriodicTimer->Start(disableTime, disableTime, callback);
+ _LIT(KRequest3, "Calling request2->StartRequest");
+ INFO_PRINTF1(KRequest3);
+ request2->StartRequest(); // only one request should exist in reqlog
+
+ CActiveScheduler::Start();
+
+ err = request2 ->CompletionCode();
+ _LIT(KErrNotFoundCode, "Competion code is not KErrNone");
+ AssertTrueL(err == KErrNone, KErrNotFoundCode, err);
+
+ CleanupStack::PopAndDestroy(request2);
+ CleanupStack::PopAndDestroy(request);
+ CleanupStack::PopAndDestroy(moduleUpdate);
+ CleanupStack::PopAndDestroy(db);
+
+ CleanupStack::PopAndDestroy(&positioner);
+ CleanupStack::PopAndDestroy(&posServer);
+
+ RDebug::Print(_L("CT_LbsClientPosTp203::StartL end"));
+ }
+
+TInt CT_LbsClientPosTp203::DisablePsyL(TAny* aSelf)
+ {
+ // Do not forget to cancel the timer
+ CT_LbsClientPosTp203* self = static_cast<CT_LbsClientPosTp203*> (aSelf);
+ self -> iPeriodicTimer -> Cancel();
+ CPosModules* db = CPosModules::OpenL();
+ CleanupStack::PushL(db);
+ CPosModuleUpdate* moduleUpdate = CPosModuleUpdate::NewLC();
+ moduleUpdate->SetUpdateAvailability(EFalse);
+ TUid trackingId;
+ trackingId.iUid = KUidTestTrackingPsy;
+ db->UpdateModuleL(trackingId, *moduleUpdate);
+ CleanupStack::PopAndDestroy(moduleUpdate);
+ CleanupStack::PopAndDestroy(db);
+ return KErrNone;
+ }
+
+void CT_LbsClientPosTp203::RequestCompleteL()
+ {
+ CActiveScheduler::Stop();
+ }
+
+// End of File
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/lbsclient/src/ctlbsclientpostp204.cpp Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,129 @@
+// Copyright (c) 2001-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:
+//
+
+
+
+// INCLUDES
+#include "ctlbsclientpostp204.h"
+#include "ctlbsclientobserver.h"
+#include <sbeclient.h>
+#include <babackup.h>
+#include <EPos_CPosModules.h>
+#include <EPos_CPosModuleUpdate.h>
+#include "ctlbsclientpositionconstants.h"
+
+// CONSTANTS
+
+// Constructor.
+CT_LbsClientPosTp204::CT_LbsClientPosTp204(CT_LbsServer& aParent): CT_LbsPortedStepBase(aParent)
+ {
+ _LIT(KTestName, "TP204 - BackUpTest");
+ SetTestStepName(KTestName);
+ }
+
+// Destructor
+CT_LbsClientPosTp204::~CT_LbsClientPosTp204()
+ {
+ }
+
+// ---------------------------------------------------------
+// CPosTp215::CloseTest
+// Always called after the test, even if the test leaves
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CT_LbsClientPosTp204::CloseTest()
+ {
+ }
+
+
+// ================= MEMBER FUNCTIONS =======================
+
+// ---------------------------------------------------------
+// CPosTp204::StartL
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CT_LbsClientPosTp204::StartL()
+ {
+
+ TDriveList nullDriveList;
+ nullDriveList.Zero();
+
+ using namespace conn;
+ CSBEClient* SbeClient = CSBEClient::NewL();
+ CleanupStack::PushL(SbeClient);
+
+ iCompletedRequests = 0;
+
+ RPositionServer server;
+ CleanupClosePushL(server);
+ TInt err = server.Connect();
+ if (err != KErrNone)
+ {
+ _LIT(KBackupError1, "Cannot connect to Server");
+ INFO_PRINTF1(KBackupError1);
+ User::Leave(KErrGeneral);
+ }
+
+ _LIT(KBackupLog1, "connect to server success");
+ INFO_PRINTF1(KBackupLog1);
+ server.Close();
+
+ SbeClient->SetBURModeL(nullDriveList, EBURBackupFull, EBackupBase);
+ User::After(500000); // Wait for 500 milli seconds
+
+ err = server.Connect();
+ if (err == KErrNone)
+ {
+ _LIT(KBackupError2, "connect to server works :-(");
+ INFO_PRINTF1(KBackupError2);
+ User::Leave(KErrGeneral);
+ }
+
+ server.Close();
+
+ SbeClient->SetBURModeL(nullDriveList, EBURNormal, ENoBackup);
+ User::After(500000); // Wait for 500 milli seconds
+
+ err = server.Connect();
+ if (err != KErrNone)
+ {
+ _LIT(KBackupError3, "connect to server doesn't work :-(");
+ INFO_PRINTF1(KBackupError3);
+ User::Leave(KErrGeneral);
+ }
+
+ CleanupStack::PopAndDestroy(2);
+
+ }
+
+// ---------------------------------------------------------
+// CT_LbsClientPosTp25::RequestCompleteL
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CT_LbsClientPosTp204::RequestCompleteL()
+ {
+ const TInt KNofRequesters = 3;
+ if (++iCompletedRequests == KNofRequesters)
+ {
+ CActiveScheduler::Stop();
+ }
+ }
+
+// End of File
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/lbsclient/src/ctlbsclientpostp208.cpp Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,556 @@
+// Copyright (c) 2001-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:
+//
+
+
+
+// INCLUDES
+#include "ctlbsclientpostp208.h"
+#include <EPos_CPosModules.h>
+#include <EPos_CPosModuleUpdate.h>
+#include <EPos_CPosModuleIdList.h>
+
+// CONSTANTS
+static const TInt KNrOfClients = 5;
+static const TInt KNrOfRuns = 20;
+
+static const TInt KServerMinHeapSize = 4096;
+static const TInt KServerMaxHeapSize = 128000;
+
+
+_LIT(KThread2Name, "req_location1");
+_LIT(KThread3Name, "req_location2");
+_LIT(KErrMsgThreadCreation, "failed to create thread");
+
+// ================= MEMBER FUNCTIONS =======================
+
+// Constructor.
+CT_LbsClientPosTp208::CT_LbsClientPosTp208(CT_LbsServer& aParent): CT_LbsPortedStepBase(aParent)
+ {
+ _LIT(KTestName, "TP208-Multi Thread Connection");
+ SetTestStepName(KTestName);
+ }
+
+// ---------------------------------------------------------
+// Destructor.
+// ---------------------------------------------------------
+CT_LbsClientPosTp208::~CT_LbsClientPosTp208()
+ {
+ }
+
+// ---------------------------------------------------------
+// CPosTp208::CloseTest
+// Always called after the test, even if the test leaves
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CT_LbsClientPosTp208::CloseTest()
+ {
+ ClosePositioner();
+ Disconnect();
+ }
+
+// Struct passed to the thread in a TAny*
+struct MyAnyData
+{
+ TBool iFullTest; // If fulltest defined
+ TInt iNrOfRuns; // number if requests to make for each thread
+};
+
+//
+// Performes the test by connecting to MLFW
+// (and makes a number of Location requests if aFullTest is true
+//
+void DoTestL(TBool aFullTest, TInt aNumberOfRuns, TInt *aResult)
+ {
+ RPositionServer posServer;
+ TInt errorCode = errorCode = posServer.Connect();
+
+ if (errorCode != KErrNone)
+ {
+ *aResult = KErrCouldNotConnect;
+ return;
+ }
+ CleanupClosePushL(posServer);
+
+ RPositioner positioner;
+
+
+ // Full test means requesting position updates
+ if (aFullTest)
+ {
+ TPositionInfo positionInfo = TPositionInfo();
+ const TInt32 KUidMultiPsy = 0x01010176;
+ TUid uidMultiPsy;
+ uidMultiPsy.iUid = KUidMultiPsy;
+ errorCode = positioner.Open(posServer, uidMultiPsy);
+
+ if (errorCode != KErrNone)
+ {
+ *aResult = errorCode;
+ return;
+ }
+ CleanupClosePushL(positioner);
+
+ _LIT(KService ,"Service");
+ errorCode = positioner.SetRequestor(CRequestor::ERequestorService,
+ CRequestor::EFormatApplication, KService);
+
+ if (errorCode != KErrNone)
+ {
+ *aResult = 1001;
+ return;
+ }
+
+ TRequestStatus status;
+ TLocality loca(TCoordinate(0,0,0),0);
+ TPosition pos(loca, TTime(0));
+
+ for (TInt i = 0; i < aNumberOfRuns; i++)
+ {
+ positionInfo.SetPosition(pos);
+ positioner.NotifyPositionUpdate(positionInfo, status);
+ User::WaitForRequest(status);
+ TInt err = status.Int();
+ if (err != KErrNone)
+ {
+ *aResult = err;
+ }
+ TPosition result;
+ positionInfo.GetPosition(result);
+
+ //sanity check
+ if (result.Latitude() == pos.Latitude() ||
+ result.Longitude() == pos.Longitude() ||
+ result.Altitude() == pos.Altitude())
+ {
+ //_LIT(KErrorPositon, "ERROR:: The postion was not updated");
+ errorCode = 1005;
+ }
+ }
+ positioner.Close();
+ CleanupStack::PopAndDestroy(&positioner);
+ }
+
+ posServer.Close();
+ CleanupStack::PopAndDestroy(&posServer);
+ }
+
+// ---------------------------------------------------------
+// LOCAL_C TInt MyThreadFunctionL(TAny* aData)
+// Runs the DoTestL in a TRAP nest
+// Panics this thread if any errors occurred
+// ---------------------------------------------------------
+//
+LOCAL_C TInt MyThreadFunctionL(TAny* aData)
+ {
+ __UHEAP_MARK;
+ CTrapCleanup* cleanup=CTrapCleanup::New(); // get clean-up stack
+
+ // Read parameters from TAny*
+ MyAnyData* info = (MyAnyData*) aData;
+
+ TInt result = KErrNone;
+ TInt err = KErrNone;
+ // Why must this function be TRAPPED?
+ TRAP(err, DoTestL(info->iFullTest, info->iNrOfRuns, &result));
+
+ _LIT(KErrorConnect, "Error when connecting to RPositionServer");
+ __ASSERT_ALWAYS(!err, User::Panic(KErrorConnect, err));
+ __ASSERT_ALWAYS(result == KErrNone, User::Panic(KErrorConnect, result));
+
+ delete cleanup; // destroy clean-up stack
+ __UHEAP_MARKEND;
+ return 0;
+ }
+
+// ---------------------------------------------------------
+// CPosTp208::StartThreads
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+TInt CT_LbsClientPosTp208::StartThreads(TBool aFullTest)
+ {
+ TFixedArray<TRequestStatus, KNrOfClients> statusArray;
+ TFixedArray<RThread, KNrOfClients> threadArray;
+ TFixedArray<TInt, KNrOfClients> retArray;
+
+ TBuf<150> buf;
+ TInt errorsFound = KErrNone;
+ _LIT(KInfoCreate, "Creating threads");
+ INFO_PRINTF1(KInfoCreate);
+ _LIT(KThreadName, "Thread %d");
+
+ // Introduce parameters for each thread.
+ MyAnyData info;
+
+ info.iNrOfRuns = KNrOfRuns;
+ info.iFullTest = aFullTest;
+ // Make sure that if one of the threads panic, whole emulator is not
+ // paniced (this has effect only in Wins).
+ TBool jit = User::JustInTime();
+ User::SetJustInTime(EFalse);
+
+ TInt i=0;
+ for (i=0; i<KNrOfClients; i++)
+ {
+ iThreadCount++;
+ buf.Zero();
+ buf.Format(KThreadName, iThreadCount);
+ retArray[i] = threadArray[i].Create(buf, MyThreadFunctionL, KDefaultStackSize, KServerMinHeapSize, KServerMaxHeapSize, &info);
+ if (retArray[i] != KErrNone)
+ {
+ _LIT(KErr, "Error when creating thread%d, errorcode %d");
+ buf.Format(KErr, i, retArray[i]);
+ INFO_PRINTF1(buf);
+ errorsFound++;
+ }
+ else
+ {
+ _LIT(KErr, "Created thread %d");
+ buf.Format(KErr, i);
+ INFO_PRINTF1(buf);
+ threadArray[i].Logon(statusArray[i]);
+ }
+ }
+
+ for (TInt j=0; j<KNrOfClients; j++)
+ {
+ if (retArray[j] == KErrNone)
+ {
+ buf.Zero();
+ _LIT(KInfoResume, "Resuming thread %d");
+ buf.Format(KInfoResume, j);
+ //if (bDEBUG)
+ INFO_PRINTF1(buf);
+ User::After(6000000);
+ threadArray[j].Resume();
+ }
+ }
+ for (i = KNrOfClients-1; i>=0; i--)
+ {
+
+ if (retArray[i] == KErrNone) User::WaitForRequest(statusArray[i]);
+
+ buf.Zero();
+ buf.Format(KThreadName, i);
+
+ _LIT(KWaitForRequest, " User::WaitForRequest ");
+ buf.Append(KWaitForRequest);
+ INFO_PRINTF1(buf);
+
+ buf.Zero();
+ buf.Format(KThreadName, i);
+
+ if (threadArray[i].ExitType() == EExitPanic)
+ {
+ _LIT(KPanicExit, " EExitPanic ");
+ buf.Append(KPanicExit);
+ INFO_PRINTF1(buf);
+ errorsFound++;
+ }
+ else if (threadArray[i].ExitType() == EExitKill)
+ {
+ _LIT(KKillExit, " EExitKill");
+ buf.Append(KKillExit);
+ INFO_PRINTF1(buf);
+ }
+ else if (threadArray[i].ExitType() == EExitPending)
+ {
+ _LIT(KPendingExit, " EExitPending");
+ buf.Append(KPendingExit);
+ INFO_PRINTF1(buf);
+ errorsFound++;
+ }
+ else
+ {
+ _LIT(KOtherExit, " other ");
+ buf.Append(KOtherExit);
+ INFO_PRINTF1(buf);
+ errorsFound++;
+ }
+ }
+
+ for (i=0; i<KNrOfClients; i++)
+ {
+ buf.Zero();
+ _LIT(KDEBUG, "Wrong reasoncode from Thread %d reasoncode %d");
+ buf.Format(KDEBUG, i, threadArray[i].ExitReason());
+ if (threadArray[i].ExitReason() != KErrNone) INFO_PRINTF1(buf);
+ threadArray[i].Close();
+ }
+
+ // Only affected on WINS emulator
+ User::SetJustInTime(jit);
+
+ return errorsFound;
+ }
+
+
+/**
+ * Connection is opened to location server,and closed
+ *
+ * If anything fails during the execution of this test, then function
+ * leaves with proper error code.
+ *
+ * Parameters:
+ **/
+void LocationRequestThreadMainPartL(TDes& aErrorBuf)
+ {
+ // Open connection to Location server
+ RPositionServer server;
+
+ TInt err = server.Connect();
+
+ if (err != KErrNone)
+ {
+ _LIT(KErrOpen, "Server open failed with code %d\r\n");
+ aErrorBuf.Format(KErrOpen, err);
+ }
+ else
+ {
+ _LIT(KOkOpen, "Server open ok\r\n");
+ aErrorBuf.Copy(KOkOpen);
+ }
+
+ User::LeaveIfError(err);
+
+ CleanupClosePushL(server);
+
+
+ CleanupStack::PopAndDestroy(1); // server, positioner
+
+ _LIT(KInfTestComplet, "Test completed ok for this thread\r\n");
+ aErrorBuf.Append(KInfTestComplet);
+ }
+
+/**
+ * This is the main function for threads that connects and
+ * disconnect from MLFW
+ *
+ * Function returns 0 if running of the test did not leave.
+ *Otherwise the leave code is returned.
+ **/
+LOCAL_C TInt LocationRequestThread(TAny* aData)
+{
+ // Create cleanupstack for this thread
+ CTrapCleanup* cleanup = CTrapCleanup::New();
+
+ // No parameters to read, just start main function.
+
+ HBufC* buf = HBufC::NewL(1024);
+
+ TPtr ptr = buf->Des();
+
+ // Run the actual test, and trap possible leave
+ TRAPD(leave, LocationRequestThreadMainPartL(ptr));
+
+ // Open connection to file server
+ RFs fs;
+ User::LeaveIfError(fs.Connect());
+
+ TInt index = *((TInt*) aData);
+
+ TBuf<30> errorFile;
+ _LIT(KInfThread, "c:\\logs\\thread%derrinfo.txt");
+ errorFile.Format(KInfThread, index);
+
+ // Open log file
+ RFile file;
+
+ TInt err = file.Replace(fs,errorFile,EFileStreamText|EFileWrite);
+
+ if (err != KErrNone)
+ {
+ User::Leave(err);
+ }
+
+ _LIT(KErrLeave, "*** This thread (thread %d) leave code: %d\r\n");
+ ptr.AppendFormat(KErrLeave, index, leave);
+
+ TFileText fileText;
+ fileText.Set(file);
+
+ fileText.Write(ptr);
+
+ // Close log file
+ file.Close();
+ fs.Close();
+
+ // Delete cleanup stack
+ delete cleanup;
+
+ // Exit this thread with leave code (KErrNone in successful case)
+ User::Exit(leave);
+
+ return 0;
+}
+
+// ---------------------------------------------------------
+// CPosTp208::DoFastConnectionL
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+TInt CT_LbsClientPosTp208::DoFastConnectionL()
+ {
+ TInt err;
+
+ // Create two different threads. Each thread connects
+ // and disconnect from MLFW very fast.
+ const TInt KMinHeapSize = 4096;
+ const TInt KMaxHeapSize = 128000;
+
+ RThread thread2;
+ RThread thread3;
+
+ TInt thread2Id = 2;
+ TInt thread3Id = 3;
+
+ // Make sure that if one of the threads panic, whole emulator is not
+ // paniced (this has effect only in Wins).
+ User::SetJustInTime(EFalse);
+
+ _LIT(KInfo, "Create two threads");
+ INFO_PRINTF1(KInfo);
+
+ err = thread2.Create(KThread2Name, LocationRequestThread, KDefaultStackSize,
+ KMinHeapSize, KMaxHeapSize, &thread2Id);
+
+ AssertTrueL(err == KErrNone, KErrMsgThreadCreation, err);
+
+ err = thread3.Create(KThread3Name, LocationRequestThread, KDefaultStackSize,
+ KMinHeapSize, KMaxHeapSize, &thread3Id);
+
+ AssertTrueL(err == KErrNone, KErrMsgThreadCreation, err);
+
+ // Logon to each thread, so we can get a notification when they kill
+ // themselves.
+ TRequestStatus status2, status3;
+ thread2.Logon(status2);
+ thread3.Logon(status3);
+
+ _LIT(KStart, "Start the threads will connect to and disconnect to MLFW,");
+ INFO_PRINTF1(KStart);
+
+ // Start all treads.
+ thread2.Resume();
+ User::After(2000000);
+ thread3.Resume();
+
+
+ // Wait for all threads to exit
+ User::WaitForRequest(status2);
+ User::WaitForRequest(status3);
+
+ // Actual test is now run.
+ _LIT(KInfoExit, "All threads have exited, exit reasons:");
+ INFO_PRINTF1(KInfoExit);
+
+ // Check that all threads had correct exit reason. Also log
+ // all the exit reasons into log file.
+ TInt exitReasonsCorrect = 0;
+
+ exitReasonsCorrect |= thread2.ExitReason();
+ exitReasonsCorrect |= thread3.ExitReason();
+
+ // Close all handles to threads.
+ thread2.Close();
+ thread3.Close();
+
+ // Return back to normal mode
+ User::SetJustInTime(ETrue);
+ return exitReasonsCorrect;
+ }
+
+// ---------------------------------------------------------
+// CPosTp208::StartL
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CT_LbsClientPosTp208::StartL()
+ {
+ //first do a simple connection test
+ TInt fasterr = DoFastConnectionL();
+ _LIT(KFailConnect, "Fast connection failed");
+ AssertTrueL(fasterr == KErrNone, KFailConnect, fasterr);
+
+ SetupPsyL(iUidMultiPsy);
+
+ TInt nrOfRounds = 1;
+ TBuf<100> buf;
+
+ _LIT(KPsitionUpdate,
+ ">>>>>>>>>>Running StartThreads(ETrue) requesting position updates<<<<<<<<");
+ INFO_PRINTF1(KPsitionUpdate);
+
+ _LIT(KEmptySpace, "");
+ _LIT(KRound, ">>>>>>Round nr %d :");
+ _LIT(KErrorsFound, "Errors found!!!");
+
+ for (TInt i=0; i<nrOfRounds; i++)
+ {
+ INFO_PRINTF1(KEmptySpace);
+ buf.Format(KRound, i);
+ INFO_PRINTF1(buf);
+ TTime now, startTime;
+ TTimeIntervalMicroSeconds requestTime;
+
+ startTime.UniversalTime();
+ TInt res = StartThreads(ETrue);
+ if (res != KErrNone)
+ LogErrorAndLeaveL(KErrorsFound, res);
+ now.UniversalTime();
+
+ requestTime = now.MicroSecondsFrom(startTime);
+ _LIT(KDebug, "%d requests from %d threads took: %d microsecs.");
+ buf.Zero();
+ TInt64 reqTime = requestTime.Int64();
+ buf.Format(KDebug, KNrOfClients * KNrOfRuns, KNrOfClients, reqTime);
+ INFO_PRINTF1(buf);
+
+ }
+
+ _LIT(KConnectDisconnect,
+ ">>>>>>>>>>Running StartThreads(EFalse) connect/disconnect Epos<<<<<<<<");
+ INFO_PRINTF1(KConnectDisconnect);
+ nrOfRounds = 5;
+ for (TInt j=0; j<nrOfRounds; j++)
+ {
+ INFO_PRINTF1(KEmptySpace);
+ buf.Format(KRound, j);
+ INFO_PRINTF1(buf);
+ TTime now, startTime;
+ TTimeIntervalMicroSeconds requestTime;
+
+ startTime.UniversalTime();
+
+ // Threads only connects to Epos server and then disconnect
+ TInt res = StartThreads(EFalse);
+ if (res != KErrNone)
+ LogErrorAndLeaveL(KErrorsFound, res);
+ now.UniversalTime();
+
+ requestTime = now.MicroSecondsFrom(startTime);
+ _LIT(KDebug, "%d threads connecting and disconnecting to Epos server took: %d microsecs.");
+ buf.Zero();
+ TInt64 reqTime = requestTime.Int64();
+ buf.Format(KDebug, KNrOfClients, reqTime);
+ INFO_PRINTF1(buf);
+ }
+ }
+
+// End of File
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/lbsclient/src/ctlbsclientpostp21.cpp Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,156 @@
+// Copyright (c) 2001-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:
+//
+
+
+
+// INCLUDES
+#include <EPos_CPosModules.h>
+#include <EPos_CPosModuleUpdate.h>
+#include <EPos_CPosModuleIdList.h>
+#include "ctlbsclientpostp21.h"
+// CONSTANTS
+
+// ================= MEMBER FUNCTIONS ======================
+
+// ---------------------------------------------------------
+// Constructor.
+// ---------------------------------------------------------
+CT_LbsClientPosTp21::CT_LbsClientPosTp21(CT_LbsServer& aParent): CT_LbsPortedStepBase(aParent)
+ {
+ _LIT(KTestName, "TP21 - Enable/Disable PSY");
+ SetTestStepName(KTestName);
+ }
+
+// ---------------------------------------------------------
+// Destructor.
+// ---------------------------------------------------------
+CT_LbsClientPosTp21::~CT_LbsClientPosTp21()
+ {
+ }
+
+// ---------------------------------------------------------
+// CT_LbsClientPosTp21::CloseTest
+// Always called after the test, even if the test leaves
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CT_LbsClientPosTp21::CloseTest()
+ {
+ ClosePositioner();
+ Disconnect();
+ }
+
+// ---------------------------------------------------------
+// CT_LbsClientPosTp21::StartL
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CT_LbsClientPosTp21::StartL()
+ {
+ _LIT(KTestFailedText1, "Unable to open positioner, error code = %d");
+ _LIT(KRequestor, "SAAA");
+
+ TUid myPsyId = iUidStubPositioner;
+
+ // Setup - copy files
+
+ ConnectL();
+
+ // Enable myPsyId, disable all others
+ SetupPsyL(myPsyId, ETrue);
+ // Open subsession to enabled PSY
+ TInt error = OpenPositionerByName(myPsyId); // Psy is enabled by default
+ if (error != KErrNone)
+ {
+ TBuf<100> errMsg;
+ errMsg.Format(KTestFailedText1, error);
+ LogErrorAndLeaveL(errMsg);
+ }
+ // Make a request
+ PerformRequestL(KRequestor, CRequestor::ERequestorService, CRequestor::EFormatTelephone);
+ CheckRequestResultL(KErrNone);
+
+ // Disable the PSY and perform another request
+ SetupPsyL(myPsyId, EFalse);
+ User::After(10000000);
+ PerformRequestL(KRequestor, CRequestor::ERequestorService, CRequestor::EFormatTelephone);
+ CheckRequestResultL(KErrNotFound);
+
+ // Close the subsession and create another one
+ ClosePositioner();
+
+ error = OpenPositionerByName(myPsyId);
+ if (error != KErrNotFound)
+ {
+ TBuf<100> errMsg;
+ errMsg.Format(KTestFailedText1, error);
+ LogErrorAndLeaveL(errMsg);
+ }
+
+ // Enable the module and make a request
+ SetupPsyL(myPsyId, ETrue);
+
+ error = OpenPositionerByName(myPsyId);
+ PerformRequestL(KRequestor, CRequestor::ERequestorService, CRequestor::EFormatTelephone);
+ CheckRequestResultL(KErrNone);
+
+ ClosePositioner();
+ Disconnect();
+ }
+
+// ---------------------------------------------------------
+// CT_LbsClientPosTp21::SetupPsyL
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CT_LbsClientPosTp21::SetupPsyL(const TUid aPsyUid,
+ TBool aChoice)
+ {
+ CPosModules* db = CPosModules::OpenL();
+ CleanupStack::PushL(db);
+ CPosModuleUpdate* moduleUpdate = CPosModuleUpdate::NewLC();
+
+ // Disable PSY
+ moduleUpdate->SetUpdateAvailability(EFalse);
+ CPosModuleIdList* prioList = db->ModuleIdListLC();
+
+ // Disable all PSY:s
+ TInt size = prioList->Count();
+ for (TInt i = 0 ; i < size; i++)
+ {
+ db->UpdateModuleL((*prioList)[i], *moduleUpdate);
+ }
+
+ // Enable/Disable the PSY that came as an in parameter
+ if (aChoice)
+ {
+ moduleUpdate->SetUpdateAvailability(ETrue);
+ }
+ else
+ {
+ moduleUpdate->SetUpdateAvailability(EFalse);
+ }
+
+ db->UpdateModuleL(aPsyUid, *moduleUpdate);
+
+ CleanupStack::PopAndDestroy(prioList);
+ CleanupStack::PopAndDestroy(moduleUpdate);
+ CleanupStack::PopAndDestroy(db);
+
+ }
+
+// End of File
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/lbsclient/src/ctlbsclientpostp213.cpp Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,384 @@
+// Copyright (c) 2001-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:
+//
+
+
+
+// INCLUDE FILES
+#include "ctlbsclientpostp213.h"
+#include "ctlbsclientrequestor.h"
+#include "ctlbsclienteventtimer.h"
+#include <LbsPositionInfo.h>
+#include <Lbs.h>
+#include <LbsCommon.h>
+#include <LbsRequestor.h>
+#include <s32file.h>
+
+// CONSTANTS
+_LIT(KClient1, "RunL client1");
+_LIT(KClient2, "RunL client2");
+_LIT(KClient3, "RunL client3");
+
+_LIT(KClient1Default, "RunL client1, default psy");
+_LIT(KClient2Default, "RunL client2, default psy");
+_LIT(KClient3Default, "RunL client3, default psy");
+
+//Error logs
+_LIT( KErrStatusMismatch, "Statuses does not conform to each other!" );
+_LIT( KEventReceived, "Client 3 received an event that shouldn't be received!" );
+_LIT( KCanceledRequest, "Client 2 didn't receive KErrCancel, but %d!" );
+_LIT( KFileNotDeleted, "File created by PSY NOT deleted! PSY really unloaded from memory?" );
+
+//File name. Beware, also declared in EPos_CTestStatusPsy.h!!!!
+_LIT(KDummyFileName, "c:\\TestStatusPsyIsNotUnloaded.txt");
+
+// ================= MEMBER FUNCTIONS =======================
+
+// Constructor.
+CT_LbsClientPosTp213::CT_LbsClientPosTp213(CT_LbsServer& aParent): CT_LbsPortedStepBase(aParent)
+ {
+ _LIT(KTestName, "TP213 - Disabling psy during request");
+ SetTestStepName(KTestName);
+ }
+
+// Destructor
+CT_LbsClientPosTp213::~CT_LbsClientPosTp213()
+ {
+ }
+
+// ---------------------------------------------------------
+// CT_LbsClientPosTp213::CloseTest
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CT_LbsClientPosTp213::CloseTest()
+ {
+ delete ieventtimer;
+ ieventtimer = NULL;
+
+ delete iclient1;
+ delete iclient2;
+ delete iclient3;
+ }
+
+// ---------------------------------------------------------
+// CT_LbsClientPosTp213::StartL
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CT_LbsClientPosTp213::StartL()
+ {
+ TBool usedefaultpsy = FALSE; // Indicating if the default psy should be used
+ iNoFurtherEvents = FALSE; // Client should receive events!
+ iErrorDuringExecution = FALSE; // True if an error occurs
+
+ //Enable PSY
+ CPosModules* idb = CPosModules::OpenL();
+ CleanupStack::PushL(idb);
+ _LIT(KEnablePSY, "Enabling Test Status PSY");
+ INFO_PRINTF1(KEnablePSY);
+ EnablePsyL(*idb, iUidTestStatusPsy);
+
+ // Event timer
+ ieventtimer = CT_LbsClientEventTimer::NewL(Logger());
+ ieventtimer->SetObserver(this);
+
+ // 3 clients
+ iclient1 = CT_LbsClientRequestor::NewL(iUidTestStatusPsy, this, KClient1, Logger());
+ iclient2 = CT_LbsClientRequestor::NewL(iUidTestStatusPsy, this, KClient2, Logger());
+ iclient3 = CT_LbsClientRequestor::NewL(iUidTestStatusPsy, this, KClient3, Logger());
+
+ // Make a request with client 2
+ _LIT(KRequestClient2, "Calling StartRequestL for client2");
+ INFO_PRINTF1(KRequestClient2);
+ iclient2->StartRequestL(usedefaultpsy);
+
+ // Make client3 listen for status events
+ iclient3->RequestModuleStatusEvent();
+
+ // Disable Psy 3
+ User::After(100000); //a small delay
+ _LIT(KDisablePSY, "Disabling Test Status PSY");
+ INFO_PRINTF1(KDisablePSY);
+ DisablePsyL(*idb, iUidTestStatusPsy);
+
+ // Client1 reads Module Status
+ // Client API
+ TInt clientapistatus = iclient1->ReadModuleStatusClientApi(iUidTestStatusPsy);
+ _LIT(KClientApi, "Module Status from Client API: %d.");
+ TBuf<100> bufclientapi;
+ bufclientapi.Format(KClientApi, clientapistatus);
+ INFO_PRINTF1(bufclientapi);
+
+ // Modules API
+ TInt modulesapistatus = iclient1->ReadModuleStatusModulesApi(idb, iUidTestStatusPsy);
+ _LIT(KModulesApi, "Module Status from Module API: (IsAvailable=) %d.");
+ TBuf<100> bufmodulesapi;
+ bufmodulesapi.Format(KModulesApi, modulesapistatus);
+ INFO_PRINTF1(bufmodulesapi);
+ // Compare received statuses
+ if ( !((modulesapistatus == 0) && (clientapistatus == TPositionModuleStatus::EDeviceDisabled)) )
+ {
+ iErrorDuringExecution = TRUE;
+ ERR_PRINTF1(KErrStatusMismatch);
+ }
+
+ iclient2->ClosePositioner();
+
+ delete iclient1;
+ delete iclient2;
+ delete iclient3;
+
+ ///////////////////// Default PSY /////////////////////////////////////
+
+ // Do the same as before but now use the default PSY
+ iNoFurtherEvents = FALSE; // Client should receive events!
+ _LIT(KDefaultPsyStart, "****** Testing Default PSY ******");
+ INFO_PRINTF1(KDefaultPsyStart);
+
+ // Enable Psy
+ INFO_PRINTF1(KEnablePSY);
+ EnablePsyL(*idb, iUidTestStatusPsy);
+
+ // 3 clients
+ iclient1 = CT_LbsClientRequestor::NewL(iUidTestStatusPsy, this, KClient1Default, Logger());
+ iclient2 = CT_LbsClientRequestor::NewL(iUidTestStatusPsy, this, KClient2Default, Logger());
+ iclient3 = CT_LbsClientRequestor::NewL(iUidTestStatusPsy, this, KClient3Default, Logger());
+
+ // Make a request with client 2
+ INFO_PRINTF1(KRequestClient2);
+ iclient2->StartRequestL(usedefaultpsy);
+
+ // Make client3 listen for status events
+ iclient3->RequestModuleStatusEvent();
+
+ // Disable Psy 3
+ User::After(1000000); //A small delay
+ usedefaultpsy = TRUE; //Use default PSY
+ INFO_PRINTF1(KDisablePSY);
+ DisablePsyL(*idb, iUidTestStatusPsy);
+
+ // Client1 reads Module Status
+ // Client API
+ clientapistatus = iclient1->ReadModuleStatusClientApi(iUidTestStatusPsy);
+ bufclientapi.Format(KClientApi, clientapistatus);
+ INFO_PRINTF1(bufclientapi);
+
+ // Modules API
+ modulesapistatus = iclient1->ReadModuleStatusModulesApi(idb, iUidTestStatusPsy);
+ bufmodulesapi.Format(KModulesApi, modulesapistatus);
+ INFO_PRINTF1(bufmodulesapi);
+ // Compare received statuses
+ if ( !((modulesapistatus == 0) && (clientapistatus == TPositionModuleStatus::EDeviceDisabled)) )
+ {
+ iErrorDuringExecution = TRUE;
+ ERR_PRINTF1(KErrStatusMismatch);
+ }
+
+ iclient2->ClosePositioner();
+
+ delete iclient1;
+ iclient1 = NULL;
+ delete iclient2;
+ iclient2 = NULL;
+ delete iclient3;
+ iclient3 = NULL;
+
+ // Connect to EPos
+ User::LeaveIfError(iPosServer.Connect());
+
+ // Enable Psy
+ INFO_PRINTF1(KEnablePSY);
+ EnablePsyL(*idb, iUidTestStatusPsy);
+
+ // Open subsession to Status Psy that still is disabled!!!
+ _LIT(KInfoStatusPSY, "Calling OpenPositionerByName for Test Status PSY");
+ INFO_PRINTF1(KInfoStatusPSY);
+ TInt err = OpenPositionerByName(iUidTestStatusPsy);
+ User::After(100000); //A small delay
+
+ if (err != KErrNone)
+ {
+ _LIT(KErrorRequest, "OpenPositionerByName failed, errCode = %d");
+ TBuf<100> buf;
+ buf.Format(KErrorRequest, err);
+ LogErrorAndLeaveL(buf);
+ }
+
+ // Make a position request
+ _LIT(KService, "service");
+ TPositionInfo positionInfo = TPositionInfo();
+ _LIT(KPerformSyncRequest, "Calling PerformSyncRequest");
+ INFO_PRINTF1(KPerformSyncRequest);
+ err = PerformSyncRequest(KService, &positionInfo);
+
+ if (err != KErrNone)
+ {
+ _LIT(KErrorRequest, "The last request was not completed with KErrorNone, errCode = %d");
+ TBuf<100> buf;
+ buf.Format(KErrorRequest, err);
+ LogErrorAndLeaveL(buf);
+ }
+
+ //Close Positioner
+ ClosePositioner();
+
+ //Disconnect from Epos
+ Disconnect();
+
+ CleanupStack::PopAndDestroy(idb);
+
+ //Checking if any errors occured during execution
+ if (iErrorDuringExecution)
+ {
+ _LIT(KErrorAndLeave, "Error(s) occured during execution, closing test!");
+ LogErrorAndLeaveL(KErrorAndLeave);
+ }
+ }
+
+// ---------------------------------------------------------
+// CT_LbsClientPosTp213::EnablePsyL
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CT_LbsClientPosTp213::EnablePsyL(
+ CPosModules& aDb,
+ TUid aPsy)
+ {
+ CPosModuleUpdate* moduleUpdate = CPosModuleUpdate::NewLC();
+ // Enable Psy
+ moduleUpdate->SetUpdateAvailability(ETrue);
+ aDb.UpdateModuleL(aPsy, *moduleUpdate);
+ CleanupStack::PopAndDestroy(moduleUpdate);
+ }
+
+// ---------------------------------------------------------
+// CT_LbsClientPosTp213::DisablePsyL
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CT_LbsClientPosTp213::DisablePsyL(
+ CPosModules& aDb,
+ TUid aPsy)
+ {
+ CPosModuleUpdate* moduleUpdate = CPosModuleUpdate::NewLC();
+ // Disable Psy
+ moduleUpdate->SetUpdateAvailability(EFalse);
+ aDb.UpdateModuleL(aPsy, *moduleUpdate);
+ CleanupStack::PopAndDestroy(moduleUpdate);
+ }
+
+// ---------------------------------------------------------
+// CT_LbsClientPosTp213::RequestCompleteL
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CT_LbsClientPosTp213::RequestCompleteL()
+ {
+ if (iclient2->CompletionCode() != KNoEvent)
+ {
+ _LIT(KClient2Compl, "Client 2 request completed with %d.");
+ TBuf<100> bufclient2comp;
+ bufclient2comp.Format(KClient2Compl, iclient2->CompletionCode());
+ INFO_PRINTF1(bufclient2comp);
+
+ if (iclient2->CompletionCode() != KErrCancel)
+ {
+ TBuf<80> errorMessage;
+ errorMessage.Format( KCanceledRequest, iclient2->CompletionCode() );
+ ERR_PRINTF1( errorMessage );
+ }
+
+ /*Testing if PSY is unloaded from memory. PSY created a temp-file that only should
+ exist during its lifespan. */
+ User::After(5000000);
+ RFs fileserver;
+ RFile file;
+ User::LeaveIfError(fileserver.Connect());
+ TInt err = file.Open(fileserver, KDummyFileName, EFileWrite);
+ if (err == KErrNone || err == KErrInUse)
+ {
+ ERR_PRINTF1(KFileNotDeleted);
+ }
+ file.Close();
+ fileserver.Close();
+
+ iclient2->ClosePositioner();
+ iclient2->ResetCompletionCode();
+ }
+
+ else if (iclient3->CompletionCode() != KNoEvent)
+ {
+ iclient3->ResetCompletionCode();
+ _LIT(KClient3Compl, "Client 3 request completed, ");
+ INFO_PRINTF1(KClient3Compl);
+
+ if (iNoFurtherEvents) //Client 3 received event but should NOT have!
+ {
+ iErrorDuringExecution = TRUE;
+ ERR_PRINTF1(KEventReceived);
+ }
+
+ //Read what event was received!
+ TInt eventReading = iclient3->ReadModuleStatusEvent();
+
+ if (eventReading != TPositionModuleStatus::EDeviceDisabled) //NO Disable Event!
+ {
+ _LIT(KClientStatusRead, "Event received by client not EDeviceDisabled, but %d.");
+ TBuf<100> bufstatusread;
+ bufstatusread.Format(KClientStatusRead, eventReading);
+ INFO_PRINTF1(bufstatusread);
+
+ //Make client3 listen for status events again!!
+ iclient3->ContinueRequesting();
+ }
+ else //A Disable Event!
+ {
+ _LIT(KClient3ComplDisabled, "Client 3 received EDeviceDisabled event!");
+ INFO_PRINTF1(KClient3ComplDisabled);
+
+ //Make client3 listen for status events again!!
+ iclient3->ContinueRequesting();
+
+ /*Wait 5 s for events before halting the scheduler.
+ No further events for client 3 should be received! */
+ ieventtimer->Start(5000000);
+ iNoFurtherEvents = TRUE;
+ //Start Timer
+ _LIT(KStartTiming, "Start Timer, 5 s.");
+ INFO_PRINTF1(KStartTiming);
+ }
+ }
+ else if (ieventtimer->CompletionCode() != KNoEvent) //Time-out
+ {
+ ieventtimer->ResetCompletionCode() ;
+
+ //Stop Scheduler
+ _LIT(KTimeOut, "Timer Stopped.");
+ INFO_PRINTF1(KTimeOut);
+ CActiveScheduler::Stop();
+ }
+ else
+ {
+ _LIT(KUnknownEvent, "Unknown request was completed!");
+ LogErrorAndLeaveL(KUnknownEvent);
+ }
+ }
+
+// End of File
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/lbsclient/src/ctlbsclientpostp217.cpp Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,513 @@
+// Copyright (c) 2001-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:
+//
+
+
+
+// INCLUDES
+#include "ctlbsclientpostp217.h"
+#include <EPos_CPosModules.h>
+#include <EPos_CPosModuleUpdate.h>
+#include <EPos_CPosModuleIdList.h>
+
+// CONSTANTS
+const TInt MAX_AGE_TIME = 10000000; // 10 sec
+
+_LIT(KKallesService, "Kalles Service");
+
+// ================= MEMBER FUNCTIONS =======================
+
+// Constructor.
+CT_LbsClientPosTp217::CT_LbsClientPosTp217(CT_LbsServer& aParent): CT_LbsPortedStepBase(aParent)
+ {
+ _LIT(KTestName, "TP217 - Max Age, specific Psy");
+ SetTestStepName(KTestName);
+ }
+
+// ---------------------------------------------------------
+// Destructor.
+// ---------------------------------------------------------
+CT_LbsClientPosTp217::~CT_LbsClientPosTp217()
+ {
+ }
+
+// ---------------------------------------------------------
+// CT_LbsClientPosTp217::CloseTest
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CT_LbsClientPosTp217::CloseTest()
+ {
+ ClosePositioner();
+ Disconnect();
+ }
+
+// This flag must be defined if MaxAge is NOT supported
+#ifdef MAX_AGE_NOT_SUPPORTED
+
+// ---------------------------------------------------------
+// CT_LbsClientPosTp217::StartL
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+// MaxAge NOT supported
+void CT_LbsClientPosTp217::StartL()
+ {
+ TTimeIntervalMicroSeconds maxAge = TTimeIntervalMicroSeconds(MAX_AGE_TIME);
+
+ SetupPsyL(iUidTestPsyMaxAge);
+
+ //connect to EPos
+ User::LeaveIfError(iPosServer.Connect());
+ TInt err = KErrNone;
+ TRequestStatus myStatus;
+
+ // Open default psy
+ User::LeaveIfError(iPositioner.Open(iPosServer));
+ TBuf<150> buf;
+
+ TPositionUpdateOptions posOption;
+ posOption.SetMaxUpdateAge(maxAge);
+
+ _LIT(KTestMaxAge, "Testing that MaxAge is not supported");
+ INFO_PRINTF1(KTestMaxAge);
+ err = iPositioner.SetUpdateOptions(posOption);
+ _LIT(KErr, "MaxAge should NOT be supported instead code %d was returned");
+ AssertTrueL(err == KErrNotSupported, KErr, err);
+
+ TPositionInfo posInfo1 = TPositionInfo();
+ TPositionInfo posInfo2 = TPositionInfo();
+
+ iPositioner.SetRequestor(CRequestor::ERequestorService,
+ CRequestor::EFormatApplication, KKallesService);
+
+ // Get position, first position
+ iPositioner.NotifyPositionUpdate(posInfo1, myStatus);
+
+ User::WaitForRequest(myStatus);
+
+ err = myStatus.Int();
+ _LIT(KNotifyPositionUpdate, "Error from NotifyPositionUpdate, err %d");
+ AssertTrueL(err == KErrNone, KNotifyPositionUpdate, err);
+
+ _LIT(KWaitMaxAge, "Wait for half Max Age...");
+ INFO_PRINTF1(KWaitMaxAge);
+ // Wait half MAX_AGE_TIME
+ User::After(HALF_MAX_AGE_TIME);
+
+ // Get position again, should be the same as first position
+ iPositioner.NotifyPositionUpdate(posInfo2, myStatus);
+ User::WaitForRequest(myStatus);
+ err = myStatus.Int();
+ AssertTrueL(err == KErrNone, KNotifyPositionUpdate, err);
+
+ if (ComparePositionL(posInfo1, posInfo2))
+ {
+ _LIT(KErrorAndLeave,
+ "The old position was returned from positioner, MaxAge seems to be supported!!!");
+ LogErrorAndLeaveL(KErrorAndLeave);
+ }
+ }
+
+#else
+// ---------------------------------------------------------
+// CT_LbsClientPosTp217::StartL
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+// MaxAge supported
+void CT_LbsClientPosTp217::StartL()
+ {
+ TTimeIntervalMicroSeconds maxAge = TTimeIntervalMicroSeconds(MAX_AGE_TIME);
+
+ //connect to EPos
+ User::LeaveIfError(iPosServer.Connect());
+ TInt err = KErrNone;
+
+ SetupPsyL(iUidTestPsyMaxAge);
+
+ //Open subsession
+ User::LeaveIfError(iPositioner.Open(iPosServer, iUidTestPsyMaxAge));
+ TBuf<150> buf;
+
+ TPositionInfo posInfo = TPositionInfo();
+ TPositionInfo posInfo2 = TPositionInfo();
+ TRequestStatus myStatus;
+
+ iPositioner.SetRequestor(CRequestor::ERequestorService,
+ CRequestor::EFormatApplication, KKallesService);
+
+ // Make sure that it is possible to get position from psy
+ iPositioner.NotifyPositionUpdate(posInfo, myStatus);
+ User::WaitForRequest(myStatus);
+ err = myStatus.Int();
+ _LIT(KNotifyPositionUpdate, "Error from NotifyPositionUpdate");
+ AssertTrueL(err == KErrNone, KNotifyPositionUpdate, err);
+
+ const TTimeIntervalMicroSeconds32 KSomeTime(1000000); //1 sec
+ User::After(KSomeTime);
+
+ // Make sure that the psy returns differens positions
+ iPositioner.NotifyPositionUpdate(posInfo2, myStatus);
+ User::WaitForRequest(myStatus);
+ err = myStatus.Int();
+ AssertTrueL(err == KErrNone, KNotifyPositionUpdate, err);
+
+ if (ComparePositionL(posInfo, posInfo2))
+ {
+ _LIT(KErrorAndLeave, "The same position was returned from positioner!!!");
+ LogErrorAndLeaveL(KErrorAndLeave);
+ }
+
+ TPositionUpdateOptions returnPosOption;
+ iPositioner.GetUpdateOptions(returnPosOption);
+ TTimeIntervalMicroSeconds returnInterval = returnPosOption.MaxUpdateAge();
+
+ _LIT(KMageAge, "Max age should not hold a value");
+ AssertTrueL(returnInterval == TTimeIntervalMicroSeconds(0),
+ KMageAge, KErrGeneral);
+
+ TPositionUpdateOptions posOption;
+ posOption.SetMaxUpdateAge(maxAge);
+ err = iPositioner.SetUpdateOptions(posOption);
+
+ _LIT(KChange, "ERROR: When setting max age in SetMaxAge, error %d");
+ AssertTrueL(err == KErrNone, KChange, err);
+
+ TPositionUpdateOptions returnPosOption2;
+ iPositioner.GetUpdateOptions(returnPosOption2);
+
+ returnInterval = returnPosOption2.MaxUpdateAge();
+ _LIT(KNotMatch, "Max age does not match, %d %d ");
+ buf.Format(KNotMatch, returnInterval.Int64(), MAX_AGE_TIME);
+
+ AssertTrueL(returnInterval == maxAge, buf, KErrGeneral);
+
+ TPositionInfo posInfo3 = TPositionInfo();
+ TPositionInfo posInfo4 = TPositionInfo();
+ TPositionInfo posInfo5 = TPositionInfo();
+ // Get position, first position
+ iPositioner.NotifyPositionUpdate(posInfo3, myStatus);
+
+ User::WaitForRequest(myStatus);
+ err = myStatus.Int();
+ AssertTrueL(err == KErrNone, KNotifyPositionUpdate, err);
+
+ TPosition position = TPosition();
+ posInfo.GetPosition(position);
+
+ // Wait half MAX_AGE_TIME
+ const TTimeIntervalMicroSeconds32 KHalfTime(MAX_AGE_TIME/2); //5 sec
+ User::After(KHalfTime);
+
+ // Get position again, should be the same as first position
+ iPositioner.NotifyPositionUpdate(posInfo4, myStatus);
+
+ User::WaitForRequest(myStatus);
+ err = myStatus.Int();
+ AssertTrueL(err == KErrNone, KNotifyPositionUpdate, err);
+
+ if (!ComparePositionL(posInfo3, posInfo4))
+ {
+ _LIT(KErrorAndLeave, "The same position was returned from positioner!!!");
+ LogErrorAndLeaveL(KErrorAndLeave);
+ }
+
+ // Wait MAX_AGE_TIME
+ const TTimeIntervalMicroSeconds32 KTime(MAX_AGE_TIME); //10 sec
+ User::After(KTime);
+
+ // Get position again, should NOT be the same as earlier
+ iPositioner.NotifyPositionUpdate(posInfo5, myStatus);
+
+ User::WaitForRequest(myStatus);
+ err = myStatus.Int();
+ AssertTrueL(err == KErrNone, KNotifyPositionUpdate, err);
+
+ if (ComparePositionL(posInfo4, posInfo5))
+ {
+ _LIT(KErrorAndLeave, "The same position was returned from positioner!!!");
+ LogErrorAndLeaveL(KErrorAndLeave);
+ }
+
+ //Try to set an interval that is less than MaxAge
+ TTimeIntervalMicroSeconds mySmallInterval = TTimeIntervalMicroSeconds(400000);
+ posOption.SetUpdateInterval(mySmallInterval);
+ posOption.SetMaxUpdateAge(maxAge);
+
+ err = iPositioner.SetUpdateOptions(posOption);
+ _LIT(KErr2, "Setting updateinterval less than MaxAge should result in KErrArgument, instead error %d");
+ AssertTrueL(err == KErrArgument, KErr2, err);
+
+ // Check that the MaxAge did not change
+ iPositioner.GetUpdateOptions(returnPosOption);
+ TTimeIntervalMicroSeconds interval = returnPosOption.MaxUpdateAge();
+
+ if (interval != maxAge)
+ {
+ _LIT(KErrorAndLeave, "MaxAge does not match %d with %d");
+ buf.Format(KErrorAndLeave, interval.Int64(), maxAge.Int64());
+ LogErrorAndLeaveL(buf);
+ }
+
+
+ ClosePositioner();
+ Disconnect();
+
+ ExtendedTesting1();
+
+ ExtendedTesting2();
+ }
+
+#endif
+
+// ---------------------------------------------------------
+// CT_LbsClientPosTp217::ExtendedTesting1
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CT_LbsClientPosTp217::ExtendedTesting1()
+ {
+ _LIT(KFunctionName, "We are inside ExtendedTesting1()");
+ INFO_PRINTF1(KFunctionName);
+ TTimeIntervalMicroSeconds maxAge = TTimeIntervalMicroSeconds(5000000);
+ TTimeIntervalMicroSeconds myInterval = TTimeIntervalMicroSeconds(400000);
+
+ // Set iUidTestPsyMaxAge to defaultpsy
+ SetupPsyL(iUidTestPsyMaxAge);
+
+ //connect to EPos
+ User::LeaveIfError(iPosServer.Connect());
+ TInt err = KErrNone;
+
+ // Open default psy
+ User::LeaveIfError(iPositioner.Open(iPosServer));
+
+ TPositionUpdateOptions posOption;
+
+ //Try to set an interval that is less than MaxAge
+ posOption.SetUpdateInterval(myInterval);
+ posOption.SetMaxUpdateAge(maxAge);
+
+ err = iPositioner.SetUpdateOptions(posOption);
+ _LIT(KErr2, "Setting updateinterval less than MaxAge should result in KErrArgument, instead error %d");
+ AssertTrueL(err == KErrArgument, KErr2, err);
+
+ // Check that the MaxAge did not change
+ TPositionUpdateOptions returnPosOption;
+ iPositioner.GetUpdateOptions(returnPosOption);
+
+ //Try to set an interval that is equal to MaxAge
+ posOption.SetUpdateInterval(maxAge);
+ posOption.SetMaxUpdateAge(maxAge);
+
+ err = iPositioner.SetUpdateOptions(posOption);
+ _LIT(KErr3, "Setting updateinterval equal to MaxAge should result in KErrArgument, instead error %d");
+ AssertTrueL(err == KErrArgument, KErr3, err);
+
+ ClosePositioner();
+ Disconnect();
+ _LIT(KFunctionDone, "ExtendedTesting1 Done");
+ INFO_PRINTF1(KFunctionDone);
+ }
+
+// ---------------------------------------------------------
+// CT_LbsClientPosTp217::ExtendedTesting2
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CT_LbsClientPosTp217::ExtendedTesting2()
+ {
+ _LIT(KFunctionName, "We are inside ExtendedTesting2()");
+ INFO_PRINTF1(KFunctionName);
+ TTimeIntervalMicroSeconds maxAge = TTimeIntervalMicroSeconds(30000000); // 30 sec
+ TTimeIntervalMicroSeconds maxAge2 = TTimeIntervalMicroSeconds(4000000); // 4 sec
+
+ // The MaxAge psy adds one second to the timeout time, therefore 6 seconds here (just to be sure)
+ const TTimeIntervalMicroSeconds32 KSomeTime(6000000); //6 sec
+
+ //connect to EPos
+ User::LeaveIfError(iPosServer.Connect());
+ TInt err = KErrNone;
+ //Open subsession
+ User::LeaveIfError(iPositioner.Open(iPosServer, iUidTestPsyMaxAge));
+
+ SetupPsyL(iUidTestPsyMaxAge);
+
+ TPositionInfo posInfo1 = TPositionInfo();
+ TPositionInfo posInfo2 = TPositionInfo();
+ TPositionInfo posInfo3 = TPositionInfo();
+ TPositionInfo posInfo4 = TPositionInfo();
+
+ TRequestStatus myStatus;
+
+ iPositioner.SetRequestor(CRequestor::ERequestorService,
+ CRequestor::EFormatApplication, KKallesService);
+
+ // Make sure that it is possible to get position from psy
+ iPositioner.NotifyPositionUpdate(posInfo1, myStatus);
+ User::WaitForRequest(myStatus);
+ err = myStatus.Int();
+ _LIT(KNotifyPositionUpdate, "Error from NotifyPositionUpdate");
+ AssertTrueL(err == KErrNone, KNotifyPositionUpdate, err);
+
+ // Add a short delay here so that the MaxAge Psy has the possibilty
+ // to create a new random position (the randomization seed is created with a time)
+ User::After(2000000);
+
+ // Make sure that the psy returns differens positions
+ iPositioner.NotifyPositionUpdate(posInfo2, myStatus);
+ User::WaitForRequest(myStatus);
+ err = myStatus.Int();
+ AssertTrueL(err == KErrNone, KNotifyPositionUpdate, err);
+
+ if (ComparePositionL(posInfo1, posInfo2))
+ {
+ _LIT(KErrorAndLeave, "The same position was returned from positioner!!!");
+ LogErrorAndLeaveL(KErrorAndLeave);
+ }
+
+ // Set MaxAge
+ TPositionUpdateOptions posOption;
+ posOption.SetMaxUpdateAge(maxAge);
+ err = iPositioner.SetUpdateOptions(posOption);
+
+ _LIT(KChange, "ERROR: When setting max age in SetMaxAge, error %d");
+ AssertTrueL(err == KErrNone, KChange, err);
+ User::After(KSomeTime);
+
+ iPositioner.NotifyPositionUpdate(posInfo3, myStatus);
+ User::WaitForRequest(myStatus);
+ err = myStatus.Int();
+ AssertTrueL(err == KErrNone, KNotifyPositionUpdate, err);
+
+ // This position should be the old one
+ if (!ComparePositionL(posInfo2, posInfo3))
+ {
+ _LIT(KErrorAndLeave, "The same position was returned from positioner!!!");
+ LogErrorAndLeaveL(KErrorAndLeave);
+ }
+
+ // Now change MaxAge again and check that it has been changed
+ posOption.SetMaxUpdateAge(maxAge2);
+ err = iPositioner.SetUpdateOptions(posOption);
+
+ _LIT(KChange2, "ERROR: When setting max age in SetMaxAge (2), error %d");
+ AssertTrueL(err == KErrNone, KChange2, err);
+ _LIT(KTimeout, "Waiting for the new maxage-timeout");
+ INFO_PRINTF1(KTimeout);
+ User::After(KSomeTime);
+
+ iPositioner.NotifyPositionUpdate(posInfo4, myStatus);
+ User::WaitForRequest(myStatus);
+ err = myStatus.Int();
+ AssertTrueL(err == KErrNone, KNotifyPositionUpdate, err);
+
+ // This position should be new since maxage has expired
+ if (ComparePositionL(posInfo3, posInfo4))
+ {
+ _LIT(KErrorAndLeave, "The same position was returned from positioner!!!");
+ LogErrorAndLeaveL(KErrorAndLeave);
+ }
+
+ ClosePositioner();
+ Disconnect();
+ _LIT(KFunctionDone, "ExtendedTesting2() Done");
+ INFO_PRINTF1(KFunctionDone);
+ }
+
+// ---------------------------------------------------------
+// CT_LbsClientPosTp217::ComparePositionL
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+TBool CT_LbsClientPosTp217::ComparePositionL(TPositionInfo aPosInfo1, TPositionInfo aPosInfo2)
+ {
+ _LIT(KFunctionName, "We are inside ComparePositionL");
+ INFO_PRINTF1(KFunctionName);
+ TBool result = ETrue;
+ TBuf<150> buf;
+
+ TPosition pos1 = TPosition();
+ TPosition pos2 = TPosition();
+ aPosInfo1.GetPosition(pos1);
+ aPosInfo2.GetPosition(pos2);
+
+ TTime time1 = pos1.Time();
+ TTime time2 = pos2.Time();
+
+ if (time1 == time2)
+ {
+ _LIT(KEqualTime, "Equal Time");
+ INFO_PRINTF1(KEqualTime);
+ }
+ else
+ {
+ _LIT(KNotEqualTime, "NOT Equal Time");
+ INFO_PRINTF1(KNotEqualTime);
+ }
+
+ if ((time1 != time2) || (pos1.Latitude() != pos2.Latitude()) ||
+ (pos1.Longitude() != pos2.Longitude()) ||
+ (pos1.Altitude() != pos2.Altitude()) )
+ {
+ // Not equal
+ result = EFalse;
+ _LIT(KNotEqual, "Not equal");
+ INFO_PRINTF1(KNotEqual);
+ _LIT(KPosition1, "Position1: Lat %f Long %f Alt %f");
+ buf.Format(KPosition1, pos1.Latitude(), pos1.Longitude() ,pos1.Altitude());
+ INFO_PRINTF1(buf);
+ _LIT(KPosition2, "Position1: Lat %f Long %f Alt %f");
+ buf.Format( KPosition2, pos2.Latitude(), pos2.Longitude() ,pos2.Altitude());
+ INFO_PRINTF1(buf);
+ }
+ else
+ {
+ _LIT(KEqual, "Equal");
+ INFO_PRINTF1(KEqual);
+ result = ETrue;
+ _LIT(KPosition1, "Position1: Lat %f Long %f Alt %f");
+ buf.Format( KPosition1, pos1.Latitude(), pos1.Longitude() ,pos1.Altitude());
+ INFO_PRINTF1(buf);
+ }
+
+ return result;
+ }
+
+// ---------------------------------------------------------
+// CT_LbsClientPosTp217::AssertTrueSecL
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CT_LbsClientPosTp217::AssertTrueL(TBool aCondition, const TDesC& aErrorMsg, TInt aErrorCode)
+ {
+ if (!aCondition)
+ {
+ // LogErrorAndLeave does not leave if KErrNone is error
+ if (aErrorCode == KErrNone) aErrorCode = KErrGeneral;
+ TBuf<100> buf;
+ buf.Format(aErrorMsg, aErrorCode);
+ LogErrorAndLeaveL(buf, aErrorCode);
+ }
+ }
+
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/lbsclient/src/ctlbsclientpostp218.cpp Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,414 @@
+// Copyright (c) 2001-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:
+//
+
+
+
+// INCLUDES
+#include "ctlbsclientpostp218.h"
+#include <EPos_CPosModules.h>
+#include <EPos_CPosModuleUpdate.h>
+#include <EPos_CPosModuleIdList.h>
+#include <LbsSatellite.h>
+
+// CONSTANTS
+const TInt MAX_AGE_TIME = 10000000; // 10 sec
+const TInt HALF_MAX_AGE_TIME = 5000000; // 5 sec
+
+_LIT(KKallesService, "Kalles Service");
+
+// ================= MEMBER FUNCTIONS =======================
+
+// Constructor.
+CT_LbsClientPosTp218::CT_LbsClientPosTp218(CT_LbsServer& aParent): CT_LbsPortedStepBase(aParent)
+ {
+ _LIT(KTestName, "TP218 - Max Age, default Psy");
+ SetTestStepName(KTestName);
+ }
+
+// ---------------------------------------------------------
+// Destructor.
+// ---------------------------------------------------------
+CT_LbsClientPosTp218::~CT_LbsClientPosTp218()
+ {
+ }
+
+// ---------------------------------------------------------
+// CT_LbsClientPosTp218::CloseTest
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CT_LbsClientPosTp218::CloseTest()
+ {
+ ClosePositioner();
+ iPositioner1.Close();
+ iPositioner2.Close();
+ Disconnect();
+ }
+
+// ---------------------------------------------------------
+// CT_LbsClientPosTp218::SetupDefaultPsyL
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CT_LbsClientPosTp218::SetupDefaultPsyL(const TUid aPsyUid)
+ {
+ CPosModules* db = CPosModules::OpenL();
+ CleanupStack::PushL(db);
+
+ SetupPsyL(aPsyUid);
+ //setting priority
+ TPositionModuleInfo moduleInfoHp;//Hp - high prio;
+ TPositionModuleInfo moduleInfoLp;//Lp - low prio;
+
+ CPosModuleIdList* prioList = db->ModuleIdListLC();
+
+ db->GetModuleInfoL(prioList->At(0), moduleInfoHp);
+
+ CPosModuleUpdate* moduleUpdate = CPosModuleUpdate::NewLC();
+
+ if (aPsyUid.iUid == moduleInfoHp.ModuleId().iUid)
+ {
+ moduleUpdate->SetUpdateAvailability(ETrue);
+ db->UpdateModuleL((*prioList)[0], *moduleUpdate);
+ }
+ else
+ {
+ db->GetModuleInfoL(aPsyUid, moduleInfoLp);
+ db->UpdateModuleL(aPsyUid, *moduleUpdate);
+ TUint hp = db -> PriorityL(moduleInfoHp.ModuleId());
+ TUint lp = db -> PriorityL(moduleInfoLp.ModuleId());
+ db->SetModulePriorityL(aPsyUid, hp); //lp
+ db->SetModulePriorityL((*prioList)[0], lp); //hp
+ }
+
+ moduleUpdate->SetUpdateAvailability(ETrue);
+ db -> UpdateModuleL(aPsyUid, *moduleUpdate);
+
+ CleanupStack::PopAndDestroy(moduleUpdate);
+ CleanupStack::PopAndDestroy(2); // db, prioList
+ }
+
+
+// This flag must be defined if MaxAge should NOT be tested
+#ifdef MAX_AGE_NOT_SUPPORTED
+// ---------------------------------------------------------
+// CT_LbsClientPosTp218::StartL
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+// >>>>>>>>>>>>>>>MaxAge NOT supported<<<<<<<<<<<<<<<<<<<<<<
+void CT_LbsClientPosTp218::StartL()
+ {
+ TTimeIntervalMicroSeconds maxAge = TTimeIntervalMicroSeconds(MAX_AGE_TIME);
+
+ // Set iUidTestPsyMaxAge to defaultpsy
+ SetupDefaultPsyL(iUidTestPsyMaxAge);
+
+ //connect to EPos
+ User::LeaveIfError(iPosServer.Connect());
+ TInt err = KErrNone;
+ TRequestStatus myStatus;
+
+ // Open default psy
+ User::LeaveIfError(iPositioner.Open(iPosServer));
+ TBuf<150> buf;
+
+ SetupGlobalPrivacyL(TPosPrivacy(TPosPrivacy::EAcceptAll, EFalse));
+
+ TPositionUpdateOptions posOption;
+ posOption.SetMaxUpdateAge(maxAge);
+
+ _LIT(KTestMaxAge, "Testing that MaxAge is not supported");
+ INFO_PRINTF1(KTestMaxAge);
+ err = iPositioner.SetUpdateOptions(posOption);
+ _LIT(KErr, "MaxAge should NOT be supported instead code %d was returned");
+ AssertTrueL(err == KErrNotSupported, KErr, err);
+
+ TPositionInfo posInfo1 = TPositionInfo();
+ TPositionInfo posInfo2 = TPositionInfo();
+
+ iPositioner.SetRequestor(CRequestor::ERequestorService,
+ CRequestor::EFormatApplication, KKallesService);
+
+ // Get position, first position
+ iPositioner.NotifyPositionUpdate(posInfo1, myStatus);
+
+ User::WaitForRequest(myStatus);
+
+ err = myStatus.Int();
+ _LIT(KNotifyPositionUpdate, "Error from NotifyPositionUpdate, err %d");
+ AssertTrueL(err == KErrNone, KNotifyPositionUpdate, err);
+
+ _LIT(KWaitMaxAge, "Wait for half Max Age...");
+ INFO_PRINTF1(KWaitMaxAge);
+ // Wait half MAX_AGE_TIME
+ User::After(HALF_MAX_AGE_TIME);
+
+ // Get position again, should be the same as first position
+ iPositioner.NotifyPositionUpdate(posInfo2, myStatus);
+ User::WaitForRequest(myStatus);
+ err = myStatus.Int();
+ AssertTrueL(err == KErrNone, KNotifyPositionUpdate, err);
+
+ if (ComparePositionL(posInfo1, posInfo2))
+ {
+ _LIT(KErrorAndLeave,
+ "The old position was returned from positioner, MaxAge seems to be supported!!!");
+ LogErrorAndLeaveL(KErrorAndLeave);
+ }
+
+ }
+
+#else
+// ---------------------------------------------------------
+// CT_LbsClientPosTp218::StartL
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+// >>>>>>>>>>>>>>>>>>>>MaxAge supported<<<<<<<<<<<<<<<<<<<<<<
+void CT_LbsClientPosTp218::StartL()
+ {
+ TTimeIntervalMicroSeconds maxAge = TTimeIntervalMicroSeconds(MAX_AGE_TIME);
+
+ // Set iUidTestPsyMaxAge to defaultpsy
+ SetupDefaultPsyL(iUidTestPsyMaxAge);
+
+ //connect to EPos
+ User::LeaveIfError(iPosServer.Connect());
+ TInt err = KErrNone;
+
+ // Open default psy
+ User::LeaveIfError(iPositioner.Open(iPosServer));
+ TBuf<150> buf;
+
+ TPositionInfo posInfo = TPositionInfo();
+ TPositionInfo posInfo2 = TPositionInfo();
+ TRequestStatus myStatus;
+
+ iPositioner.SetRequestor(CRequestor::ERequestorService,
+ CRequestor::EFormatApplication, KKallesService);
+
+ // Make sure that it is possible to get position from psy
+ iPositioner.NotifyPositionUpdate(posInfo, myStatus);
+ User::WaitForRequest(myStatus);
+ err = myStatus.Int();
+ _LIT(KNotifyPositionUpdate, "Error from NotifyPositionUpdate, err %d");
+ AssertTrueL(err == KErrNone, KNotifyPositionUpdate, err);
+
+ // Make sure that the psy returns differens positions
+ iPositioner.NotifyPositionUpdate(posInfo2, myStatus);
+ User::WaitForRequest(myStatus);
+ err = myStatus.Int();
+ AssertTrueL(err == KErrNone, KNotifyPositionUpdate, err);
+
+
+ TPositionUpdateOptions returnPosOption;
+ iPositioner.GetUpdateOptions(returnPosOption);
+ TTimeIntervalMicroSeconds returnInterval = returnPosOption.MaxUpdateAge();
+
+ _LIT(KMaxAge, "Max age should not hold a value");
+ AssertTrueL(returnInterval == TTimeIntervalMicroSeconds(0), KMaxAge, KErrGeneral);
+
+ TPositionUpdateOptions posOption;
+ posOption.SetMaxUpdateAge(maxAge);
+
+ err = iPositioner.SetUpdateOptions(posOption);
+ _LIT(KChange, "Error when setting max age in SetMaxAge, error %d");
+ AssertTrueL(err == KErrNone, KChange, err);
+
+ TPositionUpdateOptions returnPosOption2;
+ iPositioner.GetUpdateOptions(returnPosOption2);
+
+ returnInterval = returnPosOption2.MaxUpdateAge();
+ _LIT(KMaxAgeNotMatch, "Max age does not match, %d %d ");
+ buf.Format(KMaxAgeNotMatch, returnInterval.Int64(), MAX_AGE_TIME);
+ AssertTrueL(returnInterval == maxAge, buf, KErrGeneral);
+
+ TPositionInfo posInfo3 = TPositionInfo();
+ TPositionInfo posInfo4 = TPositionInfo();
+ TPositionInfo posInfo5 = TPositionInfo();
+ // Get position, first position
+ iPositioner.NotifyPositionUpdate(posInfo3, myStatus);
+
+ User::WaitForRequest(myStatus);
+
+ err = myStatus.Int();
+ AssertTrueL(err == KErrNone, KNotifyPositionUpdate, err);
+
+ _LIT(KWaitMAxAge, "Wait for half Max Age...");
+ INFO_PRINTF1(KWaitMAxAge);
+ // Wait half MAX_AGE_TIME
+ User::After(HALF_MAX_AGE_TIME);
+
+ // Get position again, should be the same as first position
+ iPositioner.NotifyPositionUpdate(posInfo4, myStatus);
+ User::WaitForRequest(myStatus);
+ err = myStatus.Int();
+ AssertTrueL(err == KErrNone, KNotifyPositionUpdate, err);
+
+ if (!ComparePositionL(posInfo3, posInfo4))
+ {
+ _LIT(KErrorAndLeave, "The old position was not returned from positioner!!!");
+ LogErrorAndLeaveL(KErrorAndLeave);
+ }
+
+ // Wait MAX_AGE_TIME
+ _LIT(KWait, "Waiting waiting...");
+ INFO_PRINTF1(KWait);
+ User::After(MAX_AGE_TIME);
+
+ // Get position again, should NOT be the same as earlier
+ iPositioner.NotifyPositionUpdate(posInfo5, myStatus);
+
+ User::WaitForRequest(myStatus);
+ err = myStatus.Int();
+ AssertTrueL(err == KErrNone, KNotifyPositionUpdate, err);
+
+ if (ComparePositionL(posInfo4, posInfo5))
+ {
+ _LIT(KErrorAndLeave, "(1)The old position was returned from positioner!!!");
+ LogErrorAndLeaveL(KErrorAndLeave);
+ }
+
+ _LIT(KChangePSY11, "Changing default psy to Psy11");
+ INFO_PRINTF1(KChangePSY11);
+ // Set iUidTestPsy11 psy to defaultpsy
+ SetupDefaultPsyL(iUidTestPsy11);
+
+ // Wait some time to make changes occur
+ User::After(5000000);
+ TPositionInfo posInfo6 = TPositionInfo();
+ TPositionInfo posInfo7 = TPositionInfo();
+
+ // Get position again, should NOT be the same as earlier
+ iPositioner.NotifyPositionUpdate(posInfo6, myStatus);
+
+ User::WaitForRequest(myStatus);
+ err = myStatus.Int();
+ _LIT(KErr1, "Error from NotifyPositionUpdate for default psy, err1: %d");
+ AssertTrueL(err == KErrNone, KErr1, err);
+
+ if (ComparePositionL(posInfo5, posInfo6))
+ {
+ _LIT(KErrorAndLeave,
+ "(2)The old position was returned from positioner!!!");
+ LogErrorAndLeaveL(KErrorAndLeave);
+ }
+
+ // Get position again, should NOT be the same as earlier
+ iPositioner.NotifyPositionUpdate(posInfo7, myStatus);
+
+ User::WaitForRequest(myStatus);
+ err = myStatus.Int();
+ // TestPsy11 returns error every second request
+ _LIT(KErr2, "Error from NotifyPositionUpdate for default psy, err2: %d");
+ AssertTrueL(err == KPositionPartialUpdate, KErr2, err);
+
+ if (ComparePositionL(posInfo6, posInfo7))
+ {
+ _LIT(KErrorAndLeave,
+ "The old position was returned from default positioner!!!");
+ LogErrorAndLeaveL(KErrorAndLeave);
+ }
+
+ ClosePositioner();
+ Disconnect();
+ }
+
+#endif
+
+// ---------------------------------------------------------
+// CT_LbsClientPosTp218::ComparePositionL
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+TBool CT_LbsClientPosTp218::ComparePositionL(TPositionInfo aPosInfo1, TPositionInfo aPosInfo2)
+ {
+ _LIT(KFunctionName, "We are inside ComparePositionL()");
+ INFO_PRINTF1(KFunctionName);
+ TBool result = ETrue;
+ TBuf<150> buf;
+
+ TPosition pos1 = TPosition();
+ TPosition pos2 = TPosition();
+ aPosInfo1.GetPosition(pos1);
+ aPosInfo2.GetPosition(pos2);
+
+ TTime time1 = pos1.Time();
+ TTime time2 = pos2.Time();
+
+ if (time1 == time2)
+ {
+ _LIT(KEqualTime, "Equal Time");
+ INFO_PRINTF1(KEqualTime);
+ }
+ else
+ {
+ _LIT(KNotEqualTime, "NOT Equal Time");
+ INFO_PRINTF1(KNotEqualTime);
+ }
+
+ if ((time1 != time2) || (pos1.Latitude() != pos2.Latitude()) ||
+ (pos1.Longitude() != pos2.Longitude()) ||
+ (pos1.Altitude() != pos2.Altitude()) )
+ {
+ // Not equal
+ result = EFalse;
+ _LIT(KNotEqual, "Not equal");
+ INFO_PRINTF1(KNotEqual);
+ _LIT(KPosition1, "Position1: Lat %f Long %f Alt %f");
+ buf.Format(KPosition1, pos1.Latitude(), pos1.Longitude() ,pos1.Altitude());
+ INFO_PRINTF1(buf);
+ _LIT(KPosition2, "Position2: Lat %f Long %f Alt %f");
+ buf.Format(KPosition2, pos2.Latitude(), pos2.Longitude() ,pos2.Altitude());
+ INFO_PRINTF1(buf);
+ }
+ else
+ {
+ _LIT(KEqual, "Equal");
+ INFO_PRINTF1(KEqual);
+ result = ETrue;
+ _LIT(KPosition1, "Position1: Lat %f Long %f Alt %f");
+ buf.Format( KPosition1, pos1.Latitude(), pos1.Longitude() ,pos1.Altitude());
+ INFO_PRINTF1(buf);
+ }
+
+ return result;
+ }
+
+// ---------------------------------------------------------
+// CT_LbsClientPosTp218::AssertTrueSecL
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CT_LbsClientPosTp218::AssertTrueL(TBool aCondition, const TDesC& aErrorMsg, TInt aErrorCode)
+ {
+ if (!aCondition)
+ {
+ // LogErrorAndLeave does not leave if KErrNone is error
+ if (aErrorCode == KErrNone) aErrorCode = KErrGeneral;
+ TBuf<100> buf;
+ buf.Format(aErrorMsg, aErrorCode);
+ LogErrorAndLeaveL(buf, aErrorCode);
+ }
+ }
+
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/lbsclient/src/ctlbsclientpostp22.cpp Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,494 @@
+// Copyright (c) 2001-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:
+//
+
+
+
+// INCLUDES
+#include "ctlbsclientpostp22.h"
+#include "ctlbsclientlog.h"
+#include "ctlbsclientperiodictester.h"
+
+// CONSTANTS
+_LIT(KServiceName1, " aaaaaaaaaaa");
+_LIT(KServiceName2, " bbbbbbbbbbb");
+_LIT(KServiceName3, " ccccccccccc");
+
+// ================= MEMBER FUNCTIONS =======================
+
+// ---------------------------------------------------------
+// Constructor.
+// ---------------------------------------------------------
+CT_LbsClientPosTp22::CT_LbsClientPosTp22(CT_LbsServer& aParent): CT_LbsPortedStepBase(aParent)
+ {
+ _LIT(KTestName, "TP22 - Periodic Location Updates");
+ SetTestStepName(KTestName);
+ }
+
+// ---------------------------------------------------------
+// Destructor.
+// ---------------------------------------------------------
+CT_LbsClientPosTp22::~CT_LbsClientPosTp22()
+ {
+ }
+
+// ---------------------------------------------------------
+// CT_LbsClientPosTp22::StartL
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CT_LbsClientPosTp22::StartL()
+ {
+ TInt numberOfRuns = 5;
+ TTimeIntervalMicroSeconds interval0 = TTimeIntervalMicroSeconds(0);
+ TTimeIntervalMicroSeconds interval2 = TTimeIntervalMicroSeconds(2000000);
+ TTimeIntervalMicroSeconds interval4 = TTimeIntervalMicroSeconds(4000000);
+ TTimeIntervalMicroSeconds interval5 = TTimeIntervalMicroSeconds(5000000);
+ TTimeIntervalMicroSeconds interval7 = TTimeIntervalMicroSeconds(7000000);
+ TTimeIntervalMicroSeconds interval8 = TTimeIntervalMicroSeconds(8000000);
+ TTimeIntervalMicroSeconds timeoutValue = TTimeIntervalMicroSeconds(10000000);
+
+ TUid uidWithTimer = iUidTestTimerPsy;
+ TUid uidWithoutTimer = iUidTestPsy1;
+ TInt errorsFound = KErrNone;
+ TBuf<150> buf;
+
+ SetupPsyL(iUidTestTimerPsy);
+
+ // Prepare for test
+ iPeriodicTester1 = CT_LbsClientPeriodicTester::NewL(interval0, KServiceName1, iLog, uidWithTimer, 0);
+ iPeriodicTester1->RequestNotification();
+ CActiveScheduler::Start();
+ iPeriodicTester1->ClosePositioner();
+
+ // 1.
+ _LIT(KPart1, "<<<<<<<<< PART1 >>>>>>>>>>");
+ INFO_PRINTF1(KPart1);
+ iPeriodicTester1->OpenPositionerL(KServiceName1);
+ iPeriodicTester1->ChangeTestParametersL(interval5, numberOfRuns);
+
+ iPeriodicTester1->RequestNotification();
+ CActiveScheduler::Start();
+ // Check that correct fix is returned
+ TPositionInfo posInfo;
+ iPeriodicTester1->GetPosition(posInfo);
+
+ TPosition pos;
+ posInfo.GetPosition(pos);
+ // TestTimerPsy returns 55.0 for Tracking requests and 20.0 for ordinary position requests
+ if (pos.Latitude() != 55.0|| pos.Longitude() != 55.0 || pos.Altitude() != 55.0)
+ {
+ _LIT(KErrorAndLeave, "Wrong position returned from tracking PSY");
+ LogErrorAndLeaveL(KErrorAndLeave);
+ }
+
+ iPeriodicTester1->ClosePositioner();
+ if (!iPeriodicTester1->IsCompletedOK())
+ {
+ _LIT(KErr, "iPeriodicTester1 returned error (1): %d");
+ buf.Format(KErr,iPeriodicTester1->GetError());
+ INFO_PRINTF1(buf);
+ errorsFound++;
+ }
+
+ //Make another ordinary request
+ // Not included in TC
+ iPeriodicTester1->OpenPositionerL(KServiceName1);
+ iPeriodicTester1->ChangeTestParametersL(interval0, 0);
+ iPeriodicTester1->RequestNotification();
+
+ CActiveScheduler::Start();
+ iPeriodicTester1->GetPosition(posInfo);
+ posInfo.GetPosition(pos);
+ // TestTimerPsy returns 55.0 for Tracking requests and 20.0 for ordinary position requests
+ if (pos.Latitude() != 20.0|| pos.Longitude() != 20.0 || pos.Altitude() != 20.0)
+ {
+ _LIT(KErrorAndLeave, "Wrong position returned from PSY");
+ LogErrorAndLeaveL(KErrorAndLeave);
+ }
+
+ iPeriodicTester1->ClosePositioner();
+ if (!iPeriodicTester1->IsCompletedOK())
+ {
+ _LIT(KErr, "iPeriodicTester1 returned error (1_1): %d");
+ buf.Format(KErr,iPeriodicTester1->GetError());
+ INFO_PRINTF1(buf);
+ errorsFound++;
+ }
+
+ ///////////////
+
+ // 2.
+ _LIT(KPart2, "<<<<<<<<< PART2 >>>>>>>>>>");
+ INFO_PRINTF1(KPart2);
+ SetupPsyL(uidWithoutTimer);
+ iPeriodicTester2 = CT_LbsClientPeriodicTester::NewL(interval5, KServiceName2, iLog, uidWithoutTimer, numberOfRuns);
+ iPeriodicTester2->RequestNotification();
+ CActiveScheduler::Start();
+ iPeriodicTester2->ClosePositioner();
+
+ if (!iPeriodicTester2->IsCompletedOK())
+ {
+ _LIT(KErr, "iPeriodicTester2 returned error (1): %d");
+ buf.Format(KErr,iPeriodicTester2->GetError());
+ INFO_PRINTF1(buf);
+ errorsFound++;
+ }
+
+ //Make another ordinary request
+ // Not included in TC
+ iPeriodicTester2->OpenPositionerL(KServiceName1);
+ iPeriodicTester2->ChangeTestParametersL(interval0, 0);
+ iPeriodicTester2->RequestNotification();
+ CActiveScheduler::Start();
+ iPeriodicTester2->ClosePositioner();
+ if (!iPeriodicTester1->IsCompletedOK())
+ {
+ _LIT(KErr, "iPeriodicTester2 returned error (1_1): %d");
+ buf.Format(KErr,iPeriodicTester1->GetError());
+ INFO_PRINTF1(buf);
+ errorsFound++;
+ }
+
+ ///////////////
+
+ // 3.
+ _LIT(KPart3, "<<<<<<<<< PART3 >>>>>>>>>>");
+ INFO_PRINTF1(KPart3);
+ SetupPsyL(uidWithTimer);
+ iPeriodicTester1->OpenPositionerL(KServiceName1);
+
+ iPeriodicTester1->ChangeTestParametersL(interval7, 3);
+ iPeriodicTester1->RequestNotification();
+ CActiveScheduler::Start();
+ if (!iPeriodicTester1->IsCompletedOK())
+ {
+ _LIT(KErr, "iPeriodicTester1 returned error (2): %d");
+ buf.Format(KErr,iPeriodicTester1->GetError());
+ INFO_PRINTF1(buf);
+ errorsFound++;
+ }
+
+ iPeriodicTester1->ChangeTestParametersL(interval4, 5);
+ iPeriodicTester1->RequestNotification();
+ CActiveScheduler::Start();
+ iPeriodicTester1->ClosePositioner();
+
+ if (!iPeriodicTester1->IsCompletedOK())
+ {
+ _LIT(KErr, "iPeriodicTester1 returned error (3): %d");
+ buf.Format(KErr,iPeriodicTester1->GetError());
+ INFO_PRINTF1(buf);
+ errorsFound++;
+ }
+
+ // 4.
+ _LIT(KPart4, "<<<<<<<<< PART4 >>>>>>>>>>");
+ INFO_PRINTF1(KPart4);
+ SetupPsyL(uidWithoutTimer);
+ iPeriodicTester2->OpenPositionerL(KServiceName2);
+ iPeriodicTester2->ChangeTestParametersL(interval7, 3);
+ iPeriodicTester2->RequestNotification();
+ CActiveScheduler::Start();
+
+ if (!iPeriodicTester2->IsCompletedOK())
+ {
+ _LIT(KErr, "iPeriodicTester2 returned error (2): %d");
+ buf.Format(KErr,iPeriodicTester2->GetError());
+ INFO_PRINTF1(buf);
+ errorsFound++;
+ }
+
+ iPeriodicTester2->ChangeTestParametersL(interval4, 5);
+ iPeriodicTester2->RequestNotification();
+ CActiveScheduler::Start();
+ iPeriodicTester2->ClosePositioner();
+
+ if (!iPeriodicTester2->IsCompletedOK())
+ {
+ _LIT(KErr, "iPeriodicTester2 returned error (3): %d");
+ buf.Format(KErr,iPeriodicTester2->GetError());
+ INFO_PRINTF1(buf);
+ errorsFound++;
+ }
+
+ // 5.
+ _LIT(KPart5, "<<<<<<<<< PART5 >>>>>>>>>>");
+ INFO_PRINTF1(KPart5);
+ SetupPsyL(uidWithTimer);
+ iPeriodicTester1->OpenPositionerL(KServiceName1);
+ iPeriodicTester1->ChangeTestParametersL(interval4, 3);
+ iPeriodicTester1->RequestNotification();
+ CActiveScheduler::Start();
+ if (!iPeriodicTester1->IsCompletedOK())
+ {
+ _LIT(KErr, "iPeriodicTester1 returned error (4): %d");
+ buf.Format(KErr,iPeriodicTester1->GetError());
+ INFO_PRINTF1(buf);
+ errorsFound++;
+ }
+
+ iPeriodicTester1->ChangeTestParametersL(interval0, 0);
+
+ iPeriodicTester1->RequestNotification();
+ CActiveScheduler::Start();
+ if (!iPeriodicTester1->IsCompletedOK())
+ {
+ _LIT(KErr, "iPeriodicTester1 returned error (4_1): %d");
+ buf.Format(KErr,iPeriodicTester1->GetError());
+ INFO_PRINTF1(buf);
+ errorsFound++;
+ }
+
+ TPositionInfo posInfo1;
+ iPeriodicTester1->GetPosition(posInfo1);
+
+ TPosition pos1;
+ posInfo1.GetPosition(pos1);
+ // TestTimerPsy returns 55.0 for Tracking requests and 20.0 for ordinary position requests
+ if (pos1.Latitude() != 20.0 || pos1.Longitude() != 20.0 || pos1.Altitude() != 20.0)
+ {
+ _LIT(KErrorAndLeave, "Wrong position returned from PSY, StopTracking has not been called");
+ LogErrorAndLeaveL(KErrorAndLeave);
+ }
+
+ iPeriodicTester1->ClosePositioner();
+
+
+ // 6.
+ _LIT(KPart6, "<<<<<<<<< PART6 >>>>>>>>>>");
+ INFO_PRINTF1(KPart6);
+ SetupPsyL(uidWithoutTimer);
+ iPeriodicTester2->OpenPositionerL(KServiceName2);
+ // Make two requests (note that nr of requests made is 1 + 1, since one is
+ // made directly when calling RequestNotification)
+ iPeriodicTester2->ChangeTestParametersL(interval0, 1);
+ iPeriodicTester2->RequestNotification();
+ CActiveScheduler::Start();
+ iPeriodicTester2->ClosePositioner();
+
+
+ if (!iPeriodicTester2->IsCompletedOK())
+ {
+ _LIT(KErr, "iPeriodicTester2 returned error (4): %d");
+ buf.Format(KErr,iPeriodicTester2->GetError());
+ INFO_PRINTF1(buf);
+ errorsFound++;
+ }
+
+ // 7.
+ _LIT(KPart7, "<<<<<<<<< PART7 >>>>>>>>>>");
+ INFO_PRINTF1(KPart7);
+ SetupPsyL(uidWithoutTimer);
+ iPeriodicTester2->OpenPositionerL(KServiceName2);
+ iPeriodicTester2->ChangeTestParametersL(interval4, 3);
+ iPeriodicTester2->RequestNotification();
+ CActiveScheduler::Start();
+ if (!iPeriodicTester2->IsCompletedOK())
+ {
+ _LIT(KErr, "iPeriodicTester2 returned error (5): %d");
+ buf.Format(KErr,iPeriodicTester2->GetError());
+ INFO_PRINTF1(buf);
+ errorsFound++;
+ }
+
+ iPeriodicTester2->ChangeTestParametersL(interval0, 0);
+ iPeriodicTester2->ClosePositioner();
+
+ // 8.
+ _LIT(KPart8, "<<<<<<<<< PART8 >>>>>>>>>>");
+ INFO_PRINTF1(KPart8);
+ SetupPsyL(uidWithTimer);
+ iPeriodicTester1->OpenPositionerL(KServiceName1);
+ // Make two requests (note that nr of requests made is 1 + 1, since one is
+ // made directly when calling RequestNotification)
+ iPeriodicTester1->ChangeTestParametersL(interval0, 1);
+ iPeriodicTester1->RequestNotification();
+ CActiveScheduler::Start();
+
+ // Check that correct fix is returned
+ iPeriodicTester1->GetPosition(posInfo1);
+ posInfo1.GetPosition(pos1);
+ // TestTimerPsy returns 55.0 for Tracking requests and 20.0 for ordinary position requests
+ if (pos1.Latitude() != 20.0 || pos1.Longitude() != 20.0 || pos1.Altitude() != 20.0)
+ {
+ _LIT(KErrorAndLeave, "Wrong position returned from PSY, StopTracking has not been called");
+ LogErrorAndLeaveL(KErrorAndLeave);
+ }
+
+ iPeriodicTester1->ClosePositioner();
+ if (!iPeriodicTester1->IsCompletedOK())
+ {
+ _LIT(KErr, "iPeriodicTester1 returned error (5): %d");
+ buf.Format(KErr,iPeriodicTester1->GetError());
+ INFO_PRINTF1(buf);
+ errorsFound++;
+ }
+
+ // 9.
+ _LIT(KPart9, "<<<<<<<<< PART9 >>>>>>>>>>");
+ INFO_PRINTF1(KPart9);
+ SetupPsyL(uidWithoutTimer);
+ iPeriodicTester2->OpenPositionerL(KServiceName2);
+ iPeriodicTester2->ChangeTestParametersL(interval4, 3);
+ iPeriodicTester2->RequestNotification();
+ CActiveScheduler::Start();
+ if (!iPeriodicTester2->IsCompletedOK())
+ {
+ _LIT(KErr, "iPeriodicTester2 returned error (6): %d");
+ buf.Format(KErr,iPeriodicTester2->GetError());
+ INFO_PRINTF1(buf);
+ errorsFound++;
+ }
+
+ iPeriodicTester2->ChangeRequestorInformation(KServiceName3);
+ iPeriodicTester2->ChangeTestParametersL(interval4, 3);
+ iPeriodicTester2->RequestNotification();
+ CActiveScheduler::Start();
+ if (!iPeriodicTester2->IsCompletedOK())
+ {
+ _LIT(KErr, "iPeriodicTester2 returned error (7): %d");
+ buf.Format(KErr,iPeriodicTester2->GetError());
+ INFO_PRINTF1(buf);
+ errorsFound++;
+ }
+
+ iPeriodicTester2->ChangeTestParametersL(interval0, 0);
+ iPeriodicTester2->ClosePositioner();
+
+ // 10.
+ _LIT(KPart10, "<<<<<<<<< PART10 >>>>>>>>>>");
+ INFO_PRINTF1(KPart10);
+ iPeriodicTester2->OpenPositionerL(KServiceName2);
+ iPeriodicTester2->ChangeTestParametersL(interval4, 0);
+ iPeriodicTester2->RequestNotification();
+ CActiveScheduler::Start();
+ if (!iPeriodicTester2->IsCompletedOK())
+ {
+ _LIT(KErr, "iPeriodicTester2 returned error (8): %d");
+ buf.Format(KErr,iPeriodicTester2->GetError());
+ INFO_PRINTF1(buf);
+ errorsFound++;
+ }
+
+ iPeriodicTester2->ChangeTestParametersL(interval0, 0);
+ iPeriodicTester2->ClosePositioner();
+
+ // 11.
+ _LIT(KPart11, "<<<<<<<<< PART11 >>>>>>>>>>");
+ INFO_PRINTF1(KPart11);
+ iPeriodicTester2->OpenPositionerL(KServiceName2);
+ iPeriodicTester2->ChangeTestParametersL(interval4, 0); //only one periodic
+ iPeriodicTester2->RequestNotification();
+ CActiveScheduler::Start();
+ iPeriodicTester2->ClosePositioner();
+ if (!iPeriodicTester2->IsCompletedOK())
+ {
+ _LIT(KErr, "iPeriodicTester2 returned error (9): %d");
+ buf.Format(KErr,iPeriodicTester2->GetError());
+ INFO_PRINTF1(buf);
+ errorsFound++;
+ }
+
+ // 12.
+ _LIT(KPart12, "<<<<<<<<< PART12 >>>>>>>>>>");
+ INFO_PRINTF1(KPart12);
+ iPeriodicTester2->OpenPositionerL(KServiceName2);
+ iPeriodicTester2->ChangeTestParametersL(interval8, 2);
+ iPeriodicTester2->RequestNotification();
+ CActiveScheduler::Start();
+ if (!iPeriodicTester2->IsCompletedOK())
+ {
+ _LIT(KErr, "iPeriodicTester2 returned error (10): %d");
+ buf.Format(KErr,iPeriodicTester2->GetError());
+ INFO_PRINTF1(buf);
+ errorsFound++;
+ }
+
+ // Check that setting MaxAge does not "screw" things up
+ iPeriodicTester2->SetMaxAgeL(interval2);
+
+ iPeriodicTester2->ChangeTestParametersL(interval8, 2);
+ iPeriodicTester2->RequestNotification();
+ CActiveScheduler::Start();
+ if (!iPeriodicTester2->IsCompletedOK())
+ {
+ _LIT(KErr, "iPeriodicTester2 returned error (11): %d");
+ buf.Format(KErr,iPeriodicTester2->GetError());
+ INFO_PRINTF1(buf);
+ errorsFound++;
+ }
+
+ iPeriodicTester2->SetPartialUpdateL(ETrue);
+ iPeriodicTester2->ChangeTestParametersL(interval8, 2);
+ iPeriodicTester2->RequestNotification();
+ CActiveScheduler::Start();
+ if (!iPeriodicTester2->IsCompletedOK())
+ {
+ _LIT(KErr, "iPeriodicTester2 returned error (12): %d");
+ buf.Format(KErr,iPeriodicTester2->GetError());
+ INFO_PRINTF1(buf);
+ errorsFound++;
+ }
+
+ iPeriodicTester2->SetTimeOutL(timeoutValue); //must be greater than the interval
+ iPeriodicTester2->ChangeTestParametersL(interval8, 2);
+ iPeriodicTester2->RequestNotification();
+ CActiveScheduler::Start();
+ iPeriodicTester2->ClosePositioner();
+ if (!iPeriodicTester2->IsCompletedOK())
+ {
+ _LIT(KErr, "iPeriodicTester2 returned error (13): %d");
+ buf.Format(KErr,iPeriodicTester2->GetError());
+ INFO_PRINTF1(buf);
+ errorsFound++;
+ }
+
+ //13.
+ _LIT(KPart13, "<<<<<<<<< PART13 >>>>>>>>>>");
+ INFO_PRINTF1(KPart13);
+ iPeriodicTester2->OpenPositionerL(KServiceName2);
+ iPeriodicTester2->ChangeTestParametersL(interval4, 4);
+ iPeriodicTester2->SetChangeParametersPrematurely(ETrue);
+ iPeriodicTester2->RequestNotification();
+ CActiveScheduler::Start();
+ iPeriodicTester2->ClosePositioner();
+
+ if (!iPeriodicTester2->IsCompletedOK())
+ {
+ _LIT(KErr, "iPeriodicTester2 returned error (8): %d");
+ buf.Format(KErr,iPeriodicTester2->GetError());
+ INFO_PRINTF1(buf);
+ errorsFound++;
+ }
+
+ if (errorsFound != KErrNone)
+ {
+ _LIT(KErrorAndLeave, "Errors found in TP22");
+ LogErrorAndLeaveL(KErrorAndLeave);
+ }
+ }
+
+void CT_LbsClientPosTp22::CloseTest()
+ {
+ delete iPeriodicTester1;
+ iPeriodicTester1 = NULL;
+ delete iPeriodicTester2;
+ iPeriodicTester2 = NULL;
+ iRequestArray.Reset();
+ iRequestArray.Close();
+ }
+
+// End of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/lbsclient/src/ctlbsclientpostp222.cpp Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,196 @@
+// Copyright (c) 2001-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:
+//
+
+
+
+// INCLUDES
+#include "ctlbsclientpostp222.h"
+
+// CONSTANTS
+// ================= MEMBER FUNCTIONS =======================
+
+// Constructor.
+CT_LbsClientPosTp222::CT_LbsClientPosTp222(CT_LbsServer& aParent): CT_LbsPortedStepBase(aParent)
+ {
+ _LIT(KTestName, "TP222 - Partial Update test");
+ SetTestStepName(KTestName);
+ }
+
+// ---------------------------------------------------------
+// Destructor.
+// ---------------------------------------------------------
+CT_LbsClientPosTp222::~CT_LbsClientPosTp222()
+ {
+ }
+
+// ---------------------------------------------------------
+// CPosTp222::CloseTest
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CT_LbsClientPosTp222::CloseTest()
+ {
+ ClosePositioner();
+ Disconnect();
+ }
+
+// This flag must be defined if testing partial update NOT supported
+#ifdef PARTIAL_UPDATE_NOT_SUPPORTED
+// ---------------------------------------------------------
+// CPosTp222::StartL
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+// If partial update is NOT supported
+void CT_LbsClientPosTp222::StartL()
+ {
+ _LIT(KPartialUpdateTest, "-----Testing that PartialUpdate is NOT supported-----");
+ INFO_PRINTF1(KPartialUpdateTest);
+ SetupPsyL(iUidTestPsyPartialUpdate);
+ SetupGlobalPrivacyL(TPosPrivacy(TPosPrivacy::EAcceptAll, EFalse));
+ _LIT(KService, "PellesKattlåda");
+
+ ConnectL();
+ User::LeaveIfError(OpenPositionerByName(iUidTestPsyPartialUpdate));
+
+ TPositionUpdateOptions updateOptions;
+ // Check that partial update is not supported
+ updateOptions.SetAcceptPartialUpdates(ETrue);
+
+ TInt res = iPositioner.SetUpdateOptions(updateOptions);
+ _LIT(KSetUpdateOptions, "SetUpdateOptions should not be supported, instead error %d was return");
+ AssertTrueL(res == KErrNotSupported, KSetUpdateOptions, res);
+
+ TPositionInfo info = TPositionInfo();
+ TInt err = PerformSyncRequest(KService, &info);
+ _LIT(KErrRequest2, "error when performing sync request nr2, err: %d");
+ AssertTrueL(err == KErrNone, KErrRequest2, err);
+ // Check that a "full" position is returned
+ TPosition pos = TPosition();
+ info.GetPosition(pos);
+
+ if (pos.Latitude() == 30 && pos.Longitude() == 40 && pos.Altitude() == 50)
+ {
+ _LIT(KErrorAndLeave,
+ "Partial update position returned from positioner when this feature should be disabled");
+ LogErrorAndLeaveL(KErrorAndLeave);
+ }
+
+ ClosePositioner();
+ Disconnect();
+
+ _LIT(KFunctionDone, "Test Completed successfully");
+ INFO_PRINTF1(KFunctionDone);
+ }
+
+#else
+// ---------------------------------------------------------
+// CPosTp222::StartL
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+// If partial update is supported
+void CT_LbsClientPosTp222::StartL()
+ {
+ _LIT(KPartialUpdateTest, "-----Testing that PartialUpdate is supported-----");
+ INFO_PRINTF1(KPartialUpdateTest);
+ SetupPsyL(iUidTestPsyPartialUpdate);
+
+ ConnectL();
+ User::LeaveIfError(OpenPositionerByName(iUidTestPsyPartialUpdate));
+ _LIT(KService, "PellesKaninlaada");
+
+ TPositionUpdateOptions updateOptions;
+ TPositionUpdateOptions resultOptions;
+ // Check that partial update is not set
+ TBool res = updateOptions.AcceptPartialUpdates();
+ if (res)
+ {
+ _LIT(KErrorAndLeave, "Partial update default is not correct");
+ LogErrorAndLeaveL(KErrorAndLeave);
+ }
+
+ updateOptions.SetAcceptPartialUpdates(ETrue);
+ TInt response = iPositioner.SetUpdateOptions(updateOptions);
+ _LIT(KSetUpdateOptions, "SetUpdateOptions returned error: %d");
+ AssertTrueL(response == KErrNone, KSetUpdateOptions, res);
+
+ // Check that partial update has been set
+ iPositioner.GetUpdateOptions(resultOptions);
+ res = resultOptions.AcceptPartialUpdates();
+ if (!res)
+ {
+ _LIT(KErrorAndLeave, "Partial update not correctly set");
+ LogErrorAndLeaveL(KErrorAndLeave);
+ }
+
+ TPositionInfo info = TPositionInfo();
+ TInt err = PerformSyncRequest(KService, &info);
+ _LIT(KErrRequest, "error when performing sync request, err: %d");
+ AssertTrueL(err == KPositionPartialUpdate, KErrRequest, err);
+
+ //Check that a "partial update" position is returned
+ TPosition pos = TPosition();
+ info.GetPosition(pos);
+
+ if (pos.Latitude() != 30 || pos.Longitude() != 40 || pos.Altitude() != 50)
+ {
+ _LIT(KErrorAndLeave,
+ "Wrong position returned from positioner(partial update)");
+ LogErrorAndLeaveL(KErrorAndLeave);
+ }
+
+ // Disable partialupdate
+ updateOptions.SetAcceptPartialUpdates(EFalse);
+ response = iPositioner.SetUpdateOptions(updateOptions);
+ _LIT(KSetUpdateOptions1,
+ "SetUpdateOptions returned error when disabling partial update err: %d");
+ AssertTrueL(response == KErrNone, KSetUpdateOptions1, res);
+
+ // Check that partial update has been disabled
+ iPositioner.GetUpdateOptions(resultOptions);
+ res = resultOptions.AcceptPartialUpdates();
+ if (res)
+ {
+ _LIT(KErrorAndLeave, "Partial update should not be set");
+ LogErrorAndLeaveL(KErrorAndLeave);
+ }
+
+ TPositionInfo info2 = TPositionInfo();
+ err = PerformSyncRequest(KService, &info2);
+ _LIT(KErrRequest2, "error when performing sync request nr2, err: %d");
+ AssertTrueL(err == KErrNone, KErrRequest2, err);
+ // Check that a "full" position is returned
+ TPosition pos2 = TPosition();
+ info2.GetPosition(pos2);
+
+ if (pos2.Latitude() == 30 && pos2.Longitude() == 40 && pos2.Altitude() == 50)
+ {
+ _LIT(KErrorAndLeave, "Partial update position returned from positioner");
+ LogErrorAndLeaveL(KErrorAndLeave);
+ }
+
+ ClosePositioner();
+ Disconnect();
+ _LIT(KFunctionDone, "Test Completed successfully");
+ INFO_PRINTF1(KFunctionDone);
+ }
+#endif
+
+
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/lbsclient/src/ctlbsclientpostp223.cpp Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,87 @@
+// Copyright (c) 2001-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:
+//
+
+
+
+// INCLUDES
+#include "ctlbsclientpostp223.h"
+#include <badesca.h>
+#include <EPos_CPosModules.h>
+#include <EPos_CPosModuleUpdate.h>
+#include <EPos_CPosModuleIdList.h>
+#include <LbsCommon.h>
+#include <LbsPositionInfo.h>
+
+// CONSTANTS
+
+// ================= MEMBER FUNCTIONS =======================
+
+// Constructor.
+CT_LbsClientPosTp223::CT_LbsClientPosTp223(CT_LbsServer& aParent): CT_LbsPortedStepBase(aParent)
+ {
+ _LIT(KTestName, "TP223 - Range check in PSY");
+ SetTestStepName(KTestName);
+ }
+
+// ---------------------------------------------------------
+// Destructor.
+// ---------------------------------------------------------
+CT_LbsClientPosTp223::~CT_LbsClientPosTp223()
+ {
+ }
+
+
+// ---------------------------------------------------------
+// CT_LbsClientPosTp223::StartL
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CT_LbsClientPosTp223::StartL()
+ {
+
+ _LIT(KErrorMsg, "Get Module did not return KErrNotFound, error code = %d");
+ CPosModules* db = CPosModules::OpenL();
+ CleanupStack::PushL(db);
+
+ TPositionModuleInfo moduleInfo;
+
+ TRAPD(err,db->GetModuleInfoL(iUidTestRangePsy,
+ moduleInfo));
+
+ AssertTrueSecL(err == KErrNotFound,KErrorMsg, err);
+
+ CleanupStack::PopAndDestroy(db); // db
+
+ }
+
+
+// ---------------------------------------------------------
+// CT_LbsClientPosTp223::AssertTrueSecL
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CT_LbsClientPosTp223::AssertTrueSecL(TBool aCondition, const TDesC& aErrorMsg, TInt aErrorCode)
+ {
+ if (!aCondition)
+ {
+ TBuf<100> buf;
+ buf.Format(aErrorMsg, aErrorCode);
+ LogErrorAndLeaveL(buf);
+ }
+ }
+
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/lbsclient/src/ctlbsclientpostp224.cpp Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,110 @@
+// Copyright (c) 2001-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:
+//
+
+
+
+// INCLUDES
+#include "ctlbsclientpostp224.h"
+#include <LbsCommon.h>
+#include <LbsPositionInfo.h>
+
+// CONSTANTS
+
+// ================= MEMBER FUNCTIONS =======================
+
+// Constructor.
+CT_LbsClientPosTp224::CT_LbsClientPosTp224(CT_LbsServer& aParent): CT_LbsPortedStepBase(aParent)
+ {
+ _LIT(KTestName,
+ "TP224 - MPositionerStatus out of scope after closing PSY subsession");
+ SetTestStepName(KTestName);
+ }
+
+// Destructor
+CT_LbsClientPosTp224::~CT_LbsClientPosTp224()
+ {
+ iPositioner.Close();
+ iPositioner2.Close();
+ iServer.Close();
+ }
+
+// ---------------------------------------------------------
+// CT_LbsClientPosTp224::CloseTest
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+
+void CT_LbsClientPosTp224::CloseTest()
+ {
+ iPositioner.Close();
+ iPositioner2.Close();
+ iServer.Close();
+ }
+
+// ---------------------------------------------------------
+// CT_LbsClientPosTp224::StartL
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CT_LbsClientPosTp224::StartL()
+ {
+ _LIT(KConnectErr, "Error when connecting to EPos server, %d");
+ _LIT(KOpenErr, "Error when opening positioner, %d");
+
+ TInt err;
+ err = iServer.Connect();
+ AssertTrueSecL(err == KErrNone, KConnectErr, err);
+
+ SetupPsyL(iUidTestSingPsy);
+ err = iPositioner.Open(iServer, iUidTestSingPsy);
+ AssertTrueSecL(err == KErrNone, KOpenErr, err);
+
+ err = iPositioner2.Open(iServer, iUidTestSingPsy);
+ AssertTrueSecL(err == KErrNone, KOpenErr, err);
+
+ iPositioner.Close();
+ iPositioner2.Close(); // Before error correction -> Panic because of MPositionerStatus deleted
+
+ err = iPositioner.Open(iServer, iUidTestSingPsy);
+ AssertTrueSecL(err == KErrNone, KOpenErr, err);
+ err = iPositioner2.Open(iServer, iUidTestSingPsy);
+ AssertTrueSecL(err == KErrNone, KOpenErr, err);
+
+ iPositioner2.Close();
+ iPositioner.Close();
+
+ iServer.Close();
+ }
+
+
+// ---------------------------------------------------------
+// CT_LbsClientPosTp224::AssertTrueSecL
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CT_LbsClientPosTp224::AssertTrueSecL(TBool aCondition, const TDesC& aErrorMsg, TInt aErrorCode)
+ {
+ if (!aCondition)
+ {
+ TBuf<100> buf;
+ buf.Format(aErrorMsg, aErrorCode);
+ LogErrorAndLeaveL(buf);
+ }
+ }
+
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/lbsclient/src/ctlbsclientpostp227.cpp Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,210 @@
+// Copyright (c) 2001-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:
+//
+
+
+
+
+// INCLUDES
+#include "ctlbsclientpostp227.h"
+#include <EPos_CPosModules.h>
+#include <EPos_CPosModuleUpdate.h>
+#include <EPos_CPosModuleIdList.h>
+#include <LbsCommon.h>
+#include <LbsPositionInfo.h>
+
+
+
+// CONSTANTS
+
+// ================= MEMBER FUNCTIONS =======================
+
+// Constructor.
+CT_LbsClientPosTp227::CT_LbsClientPosTp227(CT_LbsServer& aParent): CT_LbsPortedStepBase(aParent)
+ {
+ _LIT(KTestName, "TP227 - Settings API performance");
+ SetTestStepName(KTestName);
+ }
+
+// Destructor
+CT_LbsClientPosTp227::~CT_LbsClientPosTp227()
+ {
+
+ }
+
+// ---------------------------------------------------------
+// CT_LbsClientPosTp227::CloseTest
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+
+void CT_LbsClientPosTp227::CloseTest()
+ {
+
+ }
+
+// ---------------------------------------------------------
+// CT_LbsClientPosTp227::StartL
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CT_LbsClientPosTp227::StartL()
+ {
+ TTime startTime;
+ TTime stopTime;
+
+ startTime.UniversalTime();
+
+ CPosModules* db = CPosModules::OpenL();
+ stopTime.UniversalTime();
+
+ TInt duration = stopTime.Int64() - startTime.Int64();
+
+ if (duration > 500000)
+ {
+ _LIT(KDelayMsg, "Time taken to create CPosModules object was more than 0.5 second, it was %d microsecs.");
+ TBuf<100> error;
+ error.Format(KDelayMsg, duration);
+ INFO_PRINTF1(error);
+ }
+ else
+ {
+ _LIT(KDelayMsg, "Time taken to create CPosModules object was %d microsecs.");
+ TBuf<100> debug;
+ debug.Format(KDelayMsg, duration);
+ INFO_PRINTF1(debug);
+ }
+
+ CleanupStack::PushL(db);
+
+ startTime.UniversalTime();
+ CPosModuleIdList* prioList = db->ModuleIdListLC();
+
+ stopTime.UniversalTime();
+ duration = stopTime.Int64() - startTime.Int64();
+
+ if (duration > 20000)
+ {
+ _LIT(KDelayMsg, "Time taken to get list using ModuleIdListLC() was more than 0.02 second, it was %d microsecs.");
+ TBuf<100> error;
+ error.Format(KDelayMsg, duration);
+ INFO_PRINTF1(error);
+ }
+ else
+ {
+ _LIT(KDelayMsg, "Time taken to get list using ModuleIdListLC() was %d microsecs.");
+ TBuf<100> debug;
+ debug.Format(KDelayMsg, duration);
+ INFO_PRINTF1(debug);
+ }
+
+ TPositionModuleInfo moduleInfo;
+ TInt64 MaxDuration=0;
+
+ for ( TInt count = 0 ; count < prioList->Count() ; count++)
+ {
+ startTime.UniversalTime();
+ db->GetModuleInfoL((*prioList)[count], moduleInfo);
+ stopTime.UniversalTime();
+ duration = stopTime.Int64() - startTime.Int64();
+
+ if( duration>MaxDuration )
+ MaxDuration=duration;
+ }
+
+ if (MaxDuration > 10000)
+ {
+ _LIT(KDelayMsg, "Time taken for GetModuleInfoL() was more than 0.01 sec, it was %d microsecs.");
+ TBuf<100> error;
+ error.Format(KDelayMsg, duration);
+ INFO_PRINTF1(error);
+ }
+ else
+ {
+ _LIT(KDelayMsg, "Time taken for GetModuleInfoL() was %d microsecs.");
+ TBuf<100> debug;
+ debug.Format(KDelayMsg, duration);
+ INFO_PRINTF1(debug);
+ }
+
+ CleanupStack::PopAndDestroy(prioList); // prioList
+
+ TInt visiblestate=1;
+ CPosModuleUpdate* moduleUpdate = CPosModuleUpdate::NewLC(); // destroy!
+ moduleUpdate->SetUpdateAvailability(ETrue);
+
+ MaxDuration=0;
+ for(TInt i=0;i<10;i++)
+ {
+ if(visiblestate)
+ {
+ moduleUpdate->SetUpdateVisibility(EFalse);
+ visiblestate=0;
+ }
+ else
+ {
+ moduleUpdate->SetUpdateVisibility(ETrue);
+ visiblestate=1;
+ }
+
+ db->UpdateModuleL(iUidTestPsy2, *moduleUpdate);
+
+ startTime.UniversalTime();
+ prioList = db->ModuleIdListLC();
+ stopTime.UniversalTime();
+ duration = stopTime.Int64() - startTime.Int64();
+
+ if( duration> MaxDuration)
+ MaxDuration=duration;
+
+ CleanupStack::PopAndDestroy(prioList);
+ }
+
+ if (MaxDuration > 50000)
+ {
+ _LIT(KDelayMsg, "Time taken was more than 0.05 second, it was %d microsecs.");
+ TBuf<100> error;
+ error.Format(KDelayMsg, duration);
+ INFO_PRINTF1(error);
+ }
+ else
+ {
+ _LIT(KDelayMsg, "Time taken was %d microsecs.");
+ TBuf<100> debug;
+ debug.Format(KDelayMsg, duration);
+ INFO_PRINTF1(debug);
+ }
+
+ CleanupStack::PopAndDestroy(2); //moduleUpdate,db
+ }
+
+// ---------------------------------------------------------
+// CT_LbsClientPosTp227::AssertTrueSecL
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CT_LbsClientPosTp227::AssertTrueL(TBool aCondition, const TDesC& aErrorMsg)
+ {
+ if (!aCondition)
+ {
+ TBuf<100> buf;
+ buf.Format(aErrorMsg);
+ LogErrorAndLeaveL(buf);
+ }
+ }
+
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/lbsclient/src/ctlbsclientpostp25.cpp Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,175 @@
+// Copyright (c) 2001-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:
+//
+
+
+
+
+// INCLUDES
+#include "ctlbsclientpostp25.h"
+#include "ctlbsrequester.h"
+#include <EPos_CPosModules.h>
+#include <EPos_CPosModuleUpdate.h>
+
+// CONSTANTS
+
+// ==================== LOCAL FUNCTIONS ====================
+
+// ---------------------------------------------------------
+// EnablePsyL. Enables a specific psy
+// ---------------------------------------------------------
+//
+void EnablePsyL(
+ CPosModules& aDb,
+ TUid aPsy)
+ {
+ CPosModuleUpdate* moduleUpdate = CPosModuleUpdate::NewLC();
+ // Enable Psy
+ moduleUpdate->SetUpdateAvailability(ETrue);
+ aDb.UpdateModuleL(aPsy, *moduleUpdate);
+ CleanupStack::PopAndDestroy(moduleUpdate);
+
+ }
+
+// ================= MEMBER FUNCTIONS =======================
+
+// ---------------------------------------------------------
+// Constructor.
+// ---------------------------------------------------------
+CT_LbsClientPosTp25::CT_LbsClientPosTp25(CT_LbsServer& aParent): CT_LbsPortedStepBase(aParent)
+ {
+ _LIT(KTestName, "TP25 - Request location from multiple PSYs");
+ SetTestStepName(KTestName);
+ }
+
+// Destructor
+CT_LbsClientPosTp25::~CT_LbsClientPosTp25()
+ {
+ delete iFastPsy;
+ delete iMediumPsy;
+ delete iSlowPsy;
+ }
+
+// ---------------------------------------------------------
+// CT_LbsClientPosTp25::StartL
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CT_LbsClientPosTp25::StartL()
+ {
+
+ CPosModules* db = CPosModules::OpenL();
+ CleanupStack::PushL(db);
+
+ EnablePsyL(*db, iUidTestPsy12);// 0 sec
+ EnablePsyL(*db, iUidTestPsy4);// 3 sec
+ EnablePsyL(*db, iUidTestPsy9);// 6 sec
+
+ CleanupStack::PopAndDestroy(); // db
+
+ iFastPsy = CT_LbsRequester::NewL(iUidTestPsy12, this, Logger());
+ iMediumPsy = CT_LbsRequester::NewL(iUidTestPsy4, this, Logger());
+ iSlowPsy = CT_LbsRequester::NewL(iUidTestPsy9, this, Logger());
+ iCompletedRequests = 0;
+
+ TTime starttime,stoptime;
+ starttime.UniversalTime();
+
+ // Make request to slow psy first
+ iSlowPsy->StartRequest();
+ iFastPsy->StartRequest();
+ iMediumPsy->StartRequest();
+
+ // Wait for completion
+ CActiveScheduler::Start();
+
+ stoptime.UniversalTime();
+
+ // Substract total delay incurred due to PSY's...i.e 6sec
+ TInt duration=stoptime.Int64()-starttime.Int64()-6000000;
+
+
+ _LIT(KMessage,"3 simultaneous requests from 3 different sessions completed in %d microsec");
+ TBuf<256> error;
+ error.Format(KMessage,duration);
+ INFO_PRINTF1(error);
+
+ if(duration>3000000)
+ {
+ _LIT(KTime, "Time taken>3 sec");
+ INFO_PRINTF1(KTime);
+ }
+
+ // Evaluate result
+ _LIT(KPsyFast, "testpsy12");
+ _LIT(KPsyMedium, "testpsy4");
+ _LIT(KPsySlow, "testpsy9");
+
+ _LIT(KReturnedErrorCode, "Positioner %S returned error code %d");
+ TBuf<256> output;
+ output.Format(KReturnedErrorCode, &KPsyFast, iFastPsy->CompletionCode());
+ AssertTrueL(iFastPsy->CompletionCode() == KErrNone, output);
+
+ output.Format(KReturnedErrorCode, &KPsyMedium, iMediumPsy->CompletionCode());
+ AssertTrueL(iMediumPsy->CompletionCode() == KErrNone, output);
+
+ output.Format(KReturnedErrorCode, &KPsySlow, iSlowPsy->CompletionCode());
+ AssertTrueL(iSlowPsy->CompletionCode() == KErrNone, output);
+ _LIT(KWrongComplOrder, "Positioners completed out of order");
+
+ AssertTrueL(
+ iFastPsy->CompletionTimeUTC() < iMediumPsy->CompletionTimeUTC() &&
+ iMediumPsy->CompletionTimeUTC() < iSlowPsy->CompletionTimeUTC(),
+ KWrongComplOrder);
+
+ delete iFastPsy;
+ delete iMediumPsy;
+ delete iSlowPsy;
+ iFastPsy = NULL;
+ iMediumPsy = NULL;
+ iSlowPsy = NULL;
+
+ _LIT(KTEXT, "TP25 Passed! :)");
+ INFO_PRINTF1(KTEXT);
+ }
+
+// ---------------------------------------------------------
+// CT_LbsClientPosTp25::RequestCompleteL
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CT_LbsClientPosTp25::RequestCompleteL()
+ {
+ const TInt KNofRequesters = 3;
+ if (++iCompletedRequests == KNofRequesters)
+ {
+ CActiveScheduler::Stop();
+ }
+ }
+
+// ---------------------------------------------------------
+// CT_LbsClientPosTp25::AssertTrueL
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CT_LbsClientPosTp25::AssertTrueL(TBool aCondition, const TDesC& aErrorMsg)
+ {
+ if (!aCondition)
+ {
+ LogErrorAndLeaveL(aErrorMsg);
+ }
+ }
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/lbsclient/src/ctlbsclientpostp254.cpp Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,390 @@
+// Copyright (c) 2001-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:
+//
+
+
+
+// INCLUDE FILES
+#include "ctlbsclientpostp254.h"
+#include <f32file.h>
+#include <bautils.h>
+#include <LbsSatellite.h>
+
+// CONSTANTS
+_LIT(KLastPosition, "c:\\private\\101f97b2\\LastKnownPos.dat");
+
+
+// ================= MEMBER FUNCTIONS =======================
+
+// ---------------------------------------------------------
+// Constructor.
+// ---------------------------------------------------------
+CT_LbsClientPosTp254::CT_LbsClientPosTp254(CT_LbsServer& aParent): CT_LbsPortedStepBase(aParent)
+ {
+ _LIT(KTestName, "TP254 - Get last known position");
+ SetTestStepName(KTestName);
+ }
+
+// ---------------------------------------------------------
+// Destructor.
+// ---------------------------------------------------------
+CT_LbsClientPosTp254::~CT_LbsClientPosTp254()
+ {
+ }
+
+// ---------------------------------------------------------
+// CT_LbsClientPosTp254::CloseTest
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CT_LbsClientPosTp254::CloseTest()
+ {
+ }
+
+// ---------------------------------------------------------
+// CT_LbsClientPosTp254::StartL
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CT_LbsClientPosTp254::StartL()
+ {
+ User::After(2000000);
+ DeleteFileL(KLastPosition);
+ SetupPsyL(iUidTestPsy11);
+
+ RPositionServer posServer;
+ CleanupClosePushL(posServer);
+ RPositioner positioner;
+ CleanupClosePushL(positioner);
+ TPositionInfo positionInfo = TPositionInfo();
+ TPositionInfo positionInfoLast = TPositionInfo();
+
+ _LIT(KConnectErr, "Error when connecing to EPos server, %d");
+ TInt err = posServer.Connect();
+ AssertTrueL(err == KErrNone, KConnectErr, err);
+
+ _LIT(KOpenErr, "Error when opening positioner, %d");
+ err = positioner.Open(posServer,iUidTestPsy11 ); //use defalut psy
+ AssertTrueL(err == KErrNone, KOpenErr, err);
+
+
+ _LIT(KService ,"Service");
+ positioner.SetRequestor(CRequestor::ERequestorService,
+ CRequestor::EFormatApplication, KService);
+
+ TRequestStatus status;
+ status = KRequestPending;
+
+ positionInfoLast.SetUpdateType(EPositionUpdateUnknown); // just to make a difference
+
+ positioner.GetLastKnownPosition(positionInfoLast, status);
+ User::WaitForRequest(status);
+ err = status.Int();
+ _LIT(KErrorRequest, "Get last known position did not return with KErrUnKnown %d");
+ AssertTrueL(err == KErrUnknown, KErrorRequest, err);
+
+ //Verification of TR SBUY-5WHGS3 i.e even if the psy has a really fast
+ //responce time a last known position should be saved.
+ status = KRequestPending;
+
+ positioner.NotifyPositionUpdate(positionInfo, status);
+ User::WaitForRequest(status);
+ err = status.Int();
+ _LIT(KErrPosition, "Not possible to make a request");
+ AssertTrueL(err == KErrNone, KErrPosition, err);
+
+ positioner.GetLastKnownPosition(positionInfoLast, status);
+ User::WaitForRequest(status);
+ err = status.Int();
+ _LIT(KErrorFast, "Get last known position after fast psy did not work %d");
+ AssertTrueL(err == KErrNone, KErrorFast, err);
+
+ positioner.Close();
+ posServer.Close();
+
+ const TTimeIntervalMicroSeconds32 KPosWaitServerShutDown( 6000000 );
+ User::After(KPosWaitServerShutDown);
+ DeleteFileL(KLastPosition);
+ SetupPsyL(iUidTestPsyMaxAge);
+ err = posServer.Connect();
+ AssertTrueL(err == KErrNone, KConnectErr, err);
+ err = positioner.Open(posServer); //use defalut psy
+ AssertTrueL(err == KErrNone, KOpenErr, err);
+ positioner.SetRequestor(CRequestor::ERequestorService,
+ CRequestor::EFormatApplication, KService);
+
+
+ status = KRequestPending;
+
+ positioner.NotifyPositionUpdate(positionInfo, status);
+ User::WaitForRequest(status);
+ err = status.Int();
+ AssertTrueL(err == KErrNone, KErrPosition, err);
+
+ //Now there should exist a last known position
+ positioner.GetLastKnownPosition(positionInfoLast, status);
+ User::WaitForRequest(status);
+ err = status.Int();
+ _LIT(KErrorRequestLast, "Get last known position did not return with KErrNone %d");
+ AssertTrueL(err == KErrNone, KErrorRequestLast, err);
+
+ CheckPositionInfoL(positionInfo, positionInfoLast);
+
+ TPositionSatelliteInfo satelliteInfoLast = TPositionSatelliteInfo();
+ positioner.GetLastKnownPosition(satelliteInfoLast, status);
+ User::WaitForRequest(status);
+ err = status.Int();
+
+ AssertTrueL(err == KErrArgument, KErrorRequest, err);
+
+ positioner.NotifyPositionUpdate(positionInfo, status);
+ User::WaitForRequest(status);
+ err = status.Int();
+ AssertTrueL(err == KErrNone, KErrPosition, err);
+
+ positioner.GetLastKnownPosition(positionInfoLast, status);
+ User::WaitForRequest(status);
+ err = status.Int();
+ AssertTrueL(err == KErrNone, KErrorRequest, err);
+
+ CheckPositionInfoL(positionInfo, positionInfoLast);
+
+ positioner.Close();
+ posServer.Close();
+
+ //connect again
+ err = posServer.Connect();
+ AssertTrueL(err == KErrNone, KConnectErr, err);
+ err = positioner.Open(posServer); //use defalut psy
+ AssertTrueL(err == KErrNone, KOpenErr, err);
+ positioner.SetRequestor(CRequestor::ERequestorService,
+ CRequestor::EFormatApplication, KService);
+
+
+ TPositionInfo positionInfoLast1 = TPositionInfo();
+ positioner.GetLastKnownPosition(positionInfoLast1, status);
+ User::WaitForRequest(status);
+ err = status.Int();
+ AssertTrueL(err == KErrNone, KErrorRequest, err);
+ CheckPositionInfoL(positionInfoLast, positionInfoLast1);
+
+ positioner.Close();
+ posServer.Close();
+ User::After(6000000);
+
+ //The position is written to persistant storeage since TEF is shutdown.
+ if (!FileExistsL(KLastPosition))
+ {
+ _LIT(KErrStore, "The dat file not created");
+ LogErrorAndLeaveL(KErrStore);
+ }
+
+ //Connect again
+ err = posServer.Connect();
+ AssertTrueL(err == KErrNone, KConnectErr, err);
+ err = positioner.Open(posServer); //use defalut psy
+ AssertTrueL(err == KErrNone, KOpenErr, err);
+ positioner.SetRequestor(CRequestor::ERequestorService,
+ CRequestor::EFormatApplication, KService);
+
+
+ TPositionInfo positionInfoLast2 = TPositionInfo();
+ positioner.GetLastKnownPosition(positionInfoLast2, status);
+ User::WaitForRequest(status);
+ err = status.Int();
+ AssertTrueL(err == KErrNone, KErrorRequest, err);
+ CheckPositionInfoL(positionInfoLast, positionInfoLast2);
+
+ RPositionServer posServer1;
+ CleanupClosePushL(posServer1);
+ RPositioner positioner1;
+ CleanupClosePushL(positioner1);
+ SetupPsyL(iUidMultiPsy);
+ _LIT(KConnect1Err, "Error when connecing to EPos server, %d");
+ err = posServer1.Connect();
+ AssertTrueL(err == KErrNone, KConnect1Err, err);
+
+ _LIT(KOpen1Err, "Error when opening positioner, %d");
+ err = positioner1.Open(posServer); //use defalut psy
+ AssertTrueL(err == KErrNone, KOpen1Err, err);
+ positioner1.SetRequestor(CRequestor::ERequestorService,
+ CRequestor::EFormatApplication, KService);
+
+ positioner1.NotifyPositionUpdate(positionInfo, status);
+ User::WaitForRequest(status);
+ err = status.Int();
+ AssertTrueL(err == KErrNone, KErrPosition, err);
+
+ positioner.GetLastKnownPosition(positionInfoLast, status);
+ User::WaitForRequest(status);
+ err = status.Int();
+ AssertTrueL(err == KErrNone, KErrorRequest, err);
+ CheckPositionInfoL(positionInfo, positionInfoLast);
+
+ //just to make sure that positioner1 also gets the correct position
+ positioner1.GetLastKnownPosition(positionInfoLast, status);
+ User::WaitForRequest(status);
+ err = status.Int();
+ AssertTrueL(err == KErrNone, KErrorRequest, err);
+ CheckPositionInfoL(positionInfo, positionInfoLast);
+
+ SetupPsyL(iUidTestPsyPartialUpdate);
+ User::After(1000000);
+ TPositionInfo positionInfoPartial = TPositionInfo();
+ TPositionUpdateOptions updateOption = TPositionUpdateOptions();
+ updateOption.SetAcceptPartialUpdates(ETrue);
+ positioner1.SetUpdateOptions(updateOption);
+
+ positioner1.NotifyPositionUpdate(positionInfoPartial, status);
+ User::WaitForRequest(status);
+ err = status.Int();
+ _LIT(KErrPositionPartial, "no partial position returned %d");
+ AssertTrueL(err == KPositionPartialUpdate, KErrPositionPartial, err);
+
+ positioner.GetLastKnownPosition(positionInfoLast, status);
+ User::WaitForRequest(status);
+ err = status.Int();
+ AssertTrueL(err == KErrNone, KErrorRequest, err);
+
+ TPosition pos;
+ TPosition lastPos;
+ positionInfoPartial.GetPosition(pos);
+ positionInfoLast.GetPosition(lastPos);
+
+ if (pos.Time() == lastPos.Time())
+ {
+ _LIT(KErrPosition, "Partial position was cached");
+ LogErrorAndLeaveL(KErrPosition);
+ }
+
+ CleanupStack::PopAndDestroy(&positioner1);
+ CleanupStack::PopAndDestroy(&posServer1);
+ CleanupStack::PopAndDestroy(&positioner);
+ CleanupStack::PopAndDestroy(&posServer);
+
+ }
+
+// ---------------------------------------------------------
+// CT_LbsClientPosTp254::DeleteFileL
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CT_LbsClientPosTp254::DeleteFileL(const TDesC& aFile)
+ {
+ RFs fs;
+ TInt err = fs.Connect();
+
+ err = fs.Delete(aFile);
+ fs.Close();
+ if (err == KErrNone)
+ {
+ _LIT(KDebugText, "TP254: The specified file deleted");
+ INFO_PRINTF1(KDebugText);
+ }
+ else
+ {
+ if (err == KErrInUse)
+ {
+ _LIT(KErrText, "TP254: The specified file could not be deleted it is already in use, errorcode %d");
+ INFO_PRINTF1(aFile);
+ TBuf<100> buf;
+ buf.Format(KErrText, err);
+ AssertTrueL(err==0, KErrText, err);
+ }
+ else if (err == KErrNotFound)
+ {
+ _LIT(KDebugText, "TP254: The specified file could not be found ,errorcode %d");
+ TBuf<100> buf;
+ buf.Format(KDebugText, err);
+ INFO_PRINTF1(buf);
+ }
+ else
+ {
+ _LIT(KErrText, "TP254: The specified file could not be deleted, errorcode %d");
+ TBuf<100> buf;
+ buf.Format(KErrText, err);
+ AssertTrueL(err==0, KErrText, err);
+ }
+ }
+ }
+
+// ---------------------------------------------------------
+// CT_LbsClientPosTp254::FileExistsL
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+TBool CT_LbsClientPosTp254::FileExistsL(const TDesC& aFile)
+ {
+ RFs fs;
+ TInt err = fs.Connect();
+ TBool exists = EFalse;
+
+ if(KErrNone==err)
+ {
+ exists = BaflUtils::FileExists(fs, aFile);
+ if (exists)
+ {
+ _LIT(KErrText, "TP254: The specified file does not exist");
+ INFO_PRINTF1(KErrText);
+ }
+ else
+ {
+ _LIT(KErrText, "TP254: The specified file exists");
+ INFO_PRINTF1(KErrText);
+ }
+ }
+
+ fs.Close();
+ return exists;
+ }
+
+void CT_LbsClientPosTp254::CheckPositionInfoL(TPositionInfo& aInfo, TPositionInfo& aLastInfo)
+ {
+ if (aInfo.UpdateType() != aLastInfo.UpdateType())
+ {
+ _LIT(KErrUpdateType, "Update type not stored correctly");
+ LogErrorAndLeaveL(KErrUpdateType);
+ }
+ if (aLastInfo.ModuleId().iUid != 0)
+ {
+ _LIT(KIncorrectPsyError,
+ "Uid not reseted");
+ LogErrorAndLeaveL(KIncorrectPsyError);
+ }
+ TPosition pos;
+ TPosition lastPos;
+ aInfo.GetPosition(pos);
+ aLastInfo.GetPosition(lastPos);
+ CheckPositionL(pos, lastPos);
+ }
+
+void CT_LbsClientPosTp254::CheckPositionL(TPosition& aPos, TPosition& aLastPos)
+ {
+ if (aPos.Time() != aLastPos.Time() ||
+ aPos.HorizontalAccuracy() != aLastPos.HorizontalAccuracy() ||
+ aPos.VerticalAccuracy() != aLastPos.VerticalAccuracy() ||
+ aPos.Latitude() != aLastPos.Latitude() ||
+ aPos.Longitude() != aLastPos.Longitude() ||
+ aPos.Altitude() != aLastPos.Altitude())
+ {
+ _LIT(KErrPosition, "Wrong position returned");
+ LogErrorAndLeaveL(KErrPosition);
+ }
+ }
+
+// End of File
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/lbsclient/src/ctlbsclientpostp256.cpp Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,291 @@
+// Copyright (c) 2002-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:
+//
+
+
+
+// INCLUDES
+#include <EPos_CPosModules.h>
+#include <EPos_CPosModuleIdList.h>
+#include "ctlbsclientpostp256.h"
+#include <e32std.h>
+
+// CONSTANTS
+const TInt KNoMultipleClients=2;
+const TUint KMaxHeapSize=0x80000;
+
+// Structure for passing parameters to threads
+struct MyThreadData
+ {
+ TBool iTestFlag;
+ };
+
+// ================= MEMBER FUNCTIONS =======================
+
+// ---------------------------------------------------------
+// Constructor.
+// ---------------------------------------------------------
+CT_LbsClientPosTp256::CT_LbsClientPosTp256(CT_LbsServer& aParent): CT_LbsPortedStepBase(aParent)
+ {
+ _LIT(KTestName, "Tp256 - Location Settings and Multiple Clients");
+ SetTestStepName(KTestName);
+ }
+
+// ---------------------------------------------------------
+// Destructor.
+// ---------------------------------------------------------
+CT_LbsClientPosTp256::~CT_LbsClientPosTp256()
+ {
+ }
+
+// ---------------------------------------------------------
+// CT_LbsClientPosTp256::StartL
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CT_LbsClientPosTp256::StartL()
+ {
+ _LIT(KMultipleErr, "Error %d when multiple clients access the CPosModules, err from client:%d");
+ _LIT(KSuccess, "Client %d is successful");
+ _LIT(KAllErr, "All clients gets error when multiple clients access the CPosModules");
+ _LIT(KPanicErr, "Panic when multiple clients access the CPosModules, Thread: %d panics");
+
+ TFixedArray<TRequestStatus, KNoMultipleClients> statuses;
+ //make a request just to make sure att all databases are created.
+
+ SetupPsyL(iUidMultiPsy);
+
+ //synchronous request
+ ConnectL();
+
+ User::LeaveIfError(OpenPositionerByName(iUidMultiPsy));
+
+ TPositionInfo info = TPositionInfo();
+
+ RequestL(info);
+
+ //potenial memory leak if above function leav
+ ClosePositioner();
+ Disconnect();
+
+ //End first request.
+
+
+ TInt errorsFound = KErrNone;
+ CreateThreadsL();
+
+ for (TInt i=0; i<iThreads.Count(); i++)
+ {
+ iThreads[i].Logon(statuses[i]);
+ iThreads[i].Resume();
+ }
+
+ for (TInt t=0; t<iThreads.Count(); t++)
+ {
+ TInt exitReason = iThreads[t].ExitReason();
+
+ TBuf<150> buf;
+ if (exitReason != KErrNone)
+ {
+ buf.Format(KMultipleErr, exitReason, t);
+ INFO_PRINTF1(buf);
+
+ errorsFound++;
+ }
+ else
+ {
+ buf.Format(KSuccess, t);
+ INFO_PRINTF1(buf);
+ }
+ AssertTrueL(iThreads[t].ExitType() != EExitPanic, KPanicErr, t);
+ }
+
+ AssertTrueL(errorsFound < KNoMultipleClients, KAllErr, KErrGeneral);
+
+ _LIT(KPass, "CT_LbsClientPosTp256 passed!!!");
+ INFO_PRINTF1(KPass);
+ }
+
+// ---------------------------------------------------------
+// CT_LbsClientPosTp256::CloseTest
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CT_LbsClientPosTp256::CloseTest()
+ {
+ for (TInt i=0; i<iThreads.Count(); i++)
+ {
+ iThreads[i].Close();
+ }
+
+ iThreads.Close();
+ iNames.ResetAndDestroy();
+ }
+
+// ---------------------------------------------------------
+// void RunTestL
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void RunTestL(TAny* aData)
+ {
+ const TInt KNrOfRounds = 50;
+
+ CPosModules* db = CPosModules::OpenL();
+ CleanupStack::PushL(db);
+
+ TInt nrOfModules = 0;
+
+ // Read parameters from TAny*
+ MyThreadData* info = (MyThreadData*) aData;
+ TInt i = 0;
+ for (i=0;i<KNrOfRounds; i++)
+ {
+ //db->ResetAllModulesL();
+ CPosModuleIdList* myDebugList = db->ModuleIdListLC();
+
+ nrOfModules = myDebugList->Count();
+ TPositionModuleInfo debugModuleInfo;
+ TBuf<40> moduleName;
+ TPositionQuality quality;
+
+ for (TInt i=0;i<nrOfModules;i++)
+ {
+ db->GetModuleInfoL(myDebugList->At(i), debugModuleInfo);
+ moduleName.Zero();
+ debugModuleInfo.GetModuleName(moduleName);
+ debugModuleInfo.GetPositionQuality(quality);
+ }
+ CleanupStack::PopAndDestroy(myDebugList);
+ }
+
+ for (i=0;i<KNrOfRounds; i++)
+ {
+ // The first thread does this
+ if (info->iTestFlag)
+ {
+ for (TInt j=0;j<nrOfModules;j++)
+ {
+ // Just change priority
+ db->SetModulePriorityL(nrOfModules-j-1, j);
+ }
+ }
+ // And all the other thread does this
+ else
+ {
+ CPosModuleIdList* myDebugList = db->ModuleIdListLC();
+
+ TInt debugCount = myDebugList->Count();
+ TPositionModuleInfo debugModuleInfo;
+ TBuf<20> moduleName;
+ TPositionQuality quality;
+
+ for (TInt i=0;i<debugCount;i++)
+ {
+ db->GetModuleInfoL(myDebugList->At(i), debugModuleInfo);
+ moduleName.Zero();
+ debugModuleInfo.GetModuleName(moduleName);
+ debugModuleInfo.GetPositionQuality(quality);
+ }
+ CleanupStack::PopAndDestroy(myDebugList);
+ }
+ }
+
+
+ CleanupStack::PopAndDestroy(db);
+ }
+
+// ---------------------------------------------------------
+// LOCAL_C TInt ThreadFunction
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+LOCAL_C TInt ThreadFunction(TAny* aData)
+ {
+ __UHEAP_MARK;
+ CTrapCleanup* cleanup=CTrapCleanup::New(); // get clean-up stack
+
+ if (cleanup == NULL)
+ {
+ return KErrNoMemory;
+ }
+ // we need an ActiveScheduler
+ CActiveScheduler scheduler;
+ CActiveScheduler::Install(&scheduler);
+
+ TRAPD(err, RunTestL(aData));
+
+ delete cleanup; // destroy clean-up stack
+ __UHEAP_MARKEND;
+ return err;
+ }
+
+// ---------------------------------------------------------
+// CT_LbsClientPosTp256::CreateThreadsL
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CT_LbsClientPosTp256::CreateThreadsL()
+ {
+ _LIT(KThreadName, "TP256 test thread%d");
+ _LIT(KCreateThreadErr, "Create thread failed with %d");
+
+ for (TInt i=0; i<KNoMultipleClients; i++)
+ {
+ // Introduce parameters for each thread.
+ MyThreadData info;
+
+ if (i == 0) info.iTestFlag = ETrue;
+ else info.iTestFlag = EFalse;
+
+ RThread thread;
+ TBuf<32> name;
+ name.Format(KThreadName, 1+iThreads.Count());
+
+ TInt err;
+ err = thread.Create(name, ThreadFunction, KDefaultStackSize, KMinHeapSize, KMaxHeapSize, reinterpret_cast<TAny*>(&info));
+ AssertTrueL(err == KErrNone, KCreateThreadErr, err);
+
+ iThreads.Append(thread);
+ }
+ }
+
+
+void CT_LbsClientPosTp256::RequestL(TPositionInfoBase& aInfoBase)
+ {
+ _LIT(KService, "service");
+ TInt err = PerformSyncRequest(KService, &aInfoBase);
+
+ if (err != KErrNone)
+ {
+ _LIT(KErrorRequest, "The request was not completed with KErrorNone, errCode = %d");
+ TBuf<100> buf;
+ buf.Format(KErrorRequest, err);
+ LogErrorAndLeaveL(buf);
+ }
+
+ _LIT(KIncorrectPsySyncRequestError,
+ "TP2. Position from wrong PSY received (sync request).");
+ if (iUidMultiPsy != aInfoBase.ModuleId())
+ {
+ LogErrorAndLeaveL(KIncorrectPsySyncRequestError);
+ }
+ }
+
+// End of File
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/lbsclient/src/ctlbsclientpostp257.cpp Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,592 @@
+// Copyright (c) 2001-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:
+//
+
+
+
+// INCLUDES
+#include "ctlbsclientpostp257.h"
+
+// CONSTANTS
+_LIT(KLastPosition, "c:\\private\\101f97b2\\LastKnownPos.dat");
+
+// ================= MEMBER FUNCTIONS =======================
+
+
+// ---------------------------------------------------------
+// Constructor.
+// ---------------------------------------------------------
+CT_LbsClientPosTp257::CT_LbsClientPosTp257(CT_LbsServer& aParent): CT_LbsPortedStepBase(aParent)
+ {
+ _LIT(KTestName, "Tp257-GetLastKnown Position, update options");
+ SetTestStepName(KTestName);
+ }
+
+// ---------------------------------------------------------
+// Destructor.
+// ---------------------------------------------------------
+CT_LbsClientPosTp257::~CT_LbsClientPosTp257()
+ {
+ }
+
+// ---------------------------------------------------------
+// CT_LbsClientPosTp257::CloseTest
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CT_LbsClientPosTp257::CloseTest()
+ {
+ // Disconnect disconnects from "iPosServer"
+ Disconnect();
+ }
+
+// ---------------------------------------------------------
+// CT_LbsClientPosTp257::StartL
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CT_LbsClientPosTp257::StartL()
+ {
+
+ // make sure Server is closed
+ User::After(2100000);
+
+ // Remove getlastknown data file
+ DeleteFileL(KLastPosition);
+
+ SetupPsyL(iUidMultiPsy);
+ ConnectL();
+
+ TInt err = KErrNone;
+
+ RPositioner positioner1;
+ RPositioner positioner2;
+ TRequestStatus status1;
+ TRequestStatus status2;
+ TPositionInfo moduleInfo1;
+ TPositionInfo moduleInfo2;
+ TPositionInfo moduleInfo3;
+ TPositionInfo moduleInfoMaxAge1;
+ TPositionInfo moduleInfoMaxAge2;
+
+ // 1) Connect to server and open positioner
+ err = positioner1.Open(iPosServer);
+ CleanupClosePushL(positioner1);
+ if (err != KErrNone)
+ {
+ _LIT(KErrorAndLeave, "Could not open positioner");
+ LogErrorAndLeaveL(KErrorAndLeave);
+ }
+
+ _LIT(KKalleService, "KallesService");
+ err = positioner1.SetRequestor(CRequestor::ERequestorService,
+ CRequestor::EFormatApplication, KKalleService);
+ if (err != KErrNone)
+ {
+ _LIT(KErrorAndLeave, "Could not set requestor");
+ LogErrorAndLeaveL(KErrorAndLeave);
+ }
+
+ // 2) Request a position
+ positioner1.NotifyPositionUpdate(moduleInfo1, status1);
+ User::WaitForRequest(status1);
+ if (status1.Int() != KErrNone)
+ {
+ _LIT(KErrorAndLeave, "Wrong status1 returned: ");
+ LogErrorAndLeaveL(KErrorAndLeave, status1.Int());
+ }
+
+ // Not included in TC, just test that it is possible to get a lastknownposition
+ positioner1.GetLastKnownPosition(moduleInfo2, status1);
+ User::WaitForRequest(status1);
+ if (status1.Int() != KErrNone)
+ {
+ _LIT(KErrorAndLeave, "Wrong status3 returned: ");
+ LogErrorAndLeaveL(KErrorAndLeave, status1.Int());
+ }
+
+ if (!ComparePositionL(moduleInfo1, moduleInfo2))
+ {
+ _LIT(KErrorAndLeave, "1. The old position1 was not returned!!!");
+ LogErrorAndLeaveL(KErrorAndLeave);
+ }
+
+ // 3) Set update interval to 5 seconds, if there are no ongoing
+ // position requests a GetLastKnown request is OK
+ TPositionUpdateOptions posOption;
+ posOption.SetUpdateInterval(TTimeIntervalMicroSeconds(5000000));
+
+ err = positioner1.SetUpdateOptions(posOption);
+ _LIT(KChange, "Error when setting update interval, error %d");
+ AssertTrueL(err == KErrNone, KChange, err);
+
+ positioner1.GetLastKnownPosition(moduleInfo2, status1);
+ User::WaitForRequest(status1);
+
+ if (status1.Int() != KErrNone)
+ {
+ _LIT(KErrorAndLeave, "KErrNone should be returned from a tracking session");
+ LogErrorAndLeaveL(KErrorAndLeave, status1.Int());
+ }
+
+ // Reset interval
+ posOption.SetUpdateInterval(TTimeIntervalMicroSeconds(0));
+ err = positioner1.SetUpdateOptions(posOption);
+
+ // Get last known position
+ positioner1.GetLastKnownPosition(moduleInfo3, status1);
+ User::WaitForRequest(status1);
+ if (status1.Int() != KErrNone)
+ {
+ _LIT(KErrorAndLeave, "Wrong status1 returned 2: ");
+ LogErrorAndLeaveL(KErrorAndLeave, status1.Int());
+ }
+
+ if (!ComparePositionL(moduleInfo1, moduleInfo3))
+ {
+ _LIT(KErrorAndLeave, "2. The old position2 was not returned!!!");
+ LogErrorAndLeaveL(KErrorAndLeave);
+ }
+
+ // 5 ) Set maxage to five seconds
+ TPositionUpdateOptions posOption2;
+ posOption2.SetMaxUpdateAge(TTimeIntervalMicroSeconds(5000000));
+ err = positioner1.SetUpdateOptions(posOption2);
+ _LIT(KChange1, "Error when setting max age in SetMaxUpdateAge, error %d");
+ AssertTrueL(err == KErrNone, KChange1, err);
+
+ //Wait for five seconds
+ User::After(5000000);
+
+ // 6) Get last known position
+ positioner1.GetLastKnownPosition(moduleInfo3, status1);
+ User::WaitForRequest(status1);
+ if (status1.Int() != KErrNone)
+ {
+ _LIT(KErrorAndLeave, "Wrong status1 returned 3");
+ LogErrorAndLeaveL(KErrorAndLeave);
+ }
+
+ if (!ComparePositionL(moduleInfo1, moduleInfo3))
+ {
+ _LIT(KErrorAndLeave, "3. The old position was not returned from positioner!!!");
+ LogErrorAndLeaveL(KErrorAndLeave);
+ }
+
+ // 7) Open the maxage psy
+ SetupPsyL(iUidTestPsyMaxAge);
+ err = positioner2.Open(iPosServer, iUidTestPsyMaxAge);
+ CleanupClosePushL(positioner2);
+ _LIT(KKalleService2, "KallesService2");
+ err = positioner2.SetRequestor(CRequestor::ERequestorService,
+ CRequestor::EFormatApplication, KKalleService2);
+
+ _LIT(KErrOepnMaxAge, "Could not open the maxage psy");
+ AssertTrueL(err == KErrNone, KErrOepnMaxAge, err);
+
+ positioner2.NotifyPositionUpdate(moduleInfoMaxAge1, status2);
+ User::WaitForRequest(status2);
+ err = status2.Int();
+ if (err != KErrNone)
+ {
+ _LIT(KErrorAndLeave, "Wrong status2 returned");
+ LogErrorAndLeaveL(KErrorAndLeave);
+ }
+
+ // 8)
+ positioner1.NotifyPositionUpdate(moduleInfo1, status1);
+ User::WaitForRequest(status1);
+ err = status1.Int();
+
+ // 9) Set maxage to four seconds for positioner2
+ posOption2.SetMaxUpdateAge(TTimeIntervalMicroSeconds(4000000));
+ err = positioner2.SetUpdateOptions(posOption2);
+ _LIT(KErrSetMaxAge, "Error when setting max age in SetMaxUpdateAge, error %d");
+ AssertTrueL(err == KErrNone, KErrSetMaxAge, err);
+
+ positioner2.NotifyPositionUpdate(moduleInfoMaxAge2, status2);
+ User::WaitForRequest(status2);
+ err = status2.Int();
+ if (err != KErrNone)
+ {
+ _LIT(KErrorAndLeave, "Wrong status2 returned");
+ LogErrorAndLeaveL(KErrorAndLeave);
+ }
+ // Check moduleInfoMaxAge2 and moduleInfoMaxAge1 here, should be the same
+ _LIT(KCheckMaxAge, "Check MaxAge position");
+ INFO_PRINTF1(KCheckMaxAge);
+ if (!ComparePositionL(moduleInfoMaxAge1, moduleInfoMaxAge2))
+ {
+ _LIT(KErrorAndLeave, "The maxage position was not returned from maxage positioner!!!");
+ LogErrorAndLeaveL(KErrorAndLeave);
+ }
+ // Close maxage positioner
+ positioner2.Close();
+
+ // 10) Check moduleInfo2 and moduleInfo1 here, should be the same
+ positioner1.GetLastKnownPosition(moduleInfo2, status1);
+ User::WaitForRequest(status1);
+ if (!ComparePositionL(moduleInfo2, moduleInfo1))
+ {
+ _LIT(KErrorAndLeave, "The same maxage position was not returned from positioner for client 1!!!");
+ LogErrorAndLeaveL(KErrorAndLeave);
+ }
+
+ // 11)
+ TPositionUpdateOptions posOption3;
+ posOption3.SetUpdateTimeOut(TTimeIntervalMicroSeconds(4000000));
+ err = positioner1.SetUpdateOptions(posOption3);
+ _LIT(KErrSetTimeout, "Error when setting timeout in SetUpdateOptions, error %d");
+ AssertTrueL(err == KErrNone, KErrSetTimeout, err);
+
+ _LIT(KWaitForCancel, "Wait for cancel...");
+ INFO_PRINTF1(KWaitForCancel);
+
+ // 12)
+ positioner1.GetLastKnownPosition(moduleInfo2, status1);
+
+ // Wait for five seconds
+ User::After(5000000);
+ _LIT(KWaitForRequest, "Wait for WaitForRequest(status1)...");
+ INFO_PRINTF1(KWaitForRequest);
+ User::WaitForRequest(status1);
+ // Check moduleInfo2 and moduleInfo1 here, should be the same
+ if (!ComparePositionL(moduleInfo2, moduleInfo1))
+ {
+ _LIT(KErrorAndLeave, "4. The same position was not returned from positioner for client 1!!!");
+ LogErrorAndLeaveL(KErrorAndLeave);
+ }
+
+ // 13 ) Check with partial update
+ SetupPsyL(iUidTestPsyPartialUpdate);
+ err = positioner2.Open(iPosServer, iUidTestPsyPartialUpdate);
+ if (err != KErrNone)
+ {
+ _LIT(KErrorAndLeave, "Could not open PartialUpdate positioner");
+ LogErrorAndLeaveL(KErrorAndLeave);
+ }
+
+ _LIT(KPellesService, "PellesService");
+ err = positioner2.SetRequestor(CRequestor::ERequestorService,
+ CRequestor::EFormatApplication, KPellesService);
+
+ // Get a position from partial update psy
+ positioner2.NotifyPositionUpdate(moduleInfo1, status2);
+ User::WaitForRequest(status2);
+ err = status2.Int();
+ if (err != KErrNone)
+ {
+ _LIT(KErrorAndLeave, "Wrong status returned from partial update psy");
+ LogErrorAndLeaveL(KErrorAndLeave, err);
+ }
+
+ TPositionUpdateOptions updateOptions;
+ updateOptions.SetAcceptPartialUpdates(ETrue);
+ err = positioner2.SetUpdateOptions(updateOptions);
+ _LIT(KErrSetPartialupdate, "Error when setting partialupdate in SetUpdateOptions, error %d");
+ AssertTrueL(err == KErrNone, KErrSetPartialupdate, err);
+
+ // 14) GetLastKnownPosition from partial update psy
+ positioner2.GetLastKnownPosition(moduleInfo2, status1);
+ User::WaitForRequest(status1);
+ // Check moduleInfo2 and moduleInfo1 here, should be the same
+ if (!ComparePositionL(moduleInfo2, moduleInfo1))
+ {
+ _LIT(KErrorAndLeave, "5. The same partial update position was not returned from positioner!!!");
+ LogErrorAndLeaveL(KErrorAndLeave);
+ }
+
+ // 15) Get another position from partial update psy, this should be a partial update position
+ // and should not be saved as lastknownposition
+ positioner2.NotifyPositionUpdate(moduleInfo1, status2);
+ User::WaitForRequest(status2);
+ err = status2.Int();
+ if (err != KPositionPartialUpdate)
+ {
+ _LIT(KErrorAndLeave, "Partial Update PSY did not return KPositionPartialUpdate");
+ LogErrorAndLeaveL(KErrorAndLeave, err);
+ }
+
+ // 16) GetLastKnownPosition from partial update psy
+ positioner2.GetLastKnownPosition(moduleInfo3, status1);
+ User::WaitForRequest(status1);
+ // Check moduleInfo2 and moduleInfo1 here, should NOT be the same
+ if (ComparePositionL(moduleInfo1, moduleInfo2))
+ {
+ _LIT(KErrorAndLeave, "6. The partial update position should NOT have been returned");
+ LogErrorAndLeaveL(KErrorAndLeave);
+ }
+
+ // Check moduleInfo3 and moduleInfo2 here, should be the same
+ if (ComparePositionL(moduleInfo3, moduleInfo1))
+ {
+ _LIT(KErrorAndLeave, "7. The old position was not returned");
+ LogErrorAndLeaveL(KErrorAndLeave);
+ }
+
+ // Close all connections
+ positioner1.Close();
+ positioner2.Close();
+
+ // 17 ) Start a periodic update session
+ _LIT(KPeriodicUpdate, "Checking periodic update session");
+ INFO_PRINTF1(KPeriodicUpdate);
+ posOption.SetUpdateInterval(TTimeIntervalMicroSeconds(5000000));
+
+ // Connect to server and open positioner
+ err = positioner1.Open(iPosServer);
+ if (err != KErrNone)
+ {
+ _LIT(KErrorAndLeave, "Could not open positioner");
+ LogErrorAndLeaveL(KErrorAndLeave);
+ }
+
+ _LIT(KKallesPeriodicService, "KallesPeriodicService");
+ err = positioner1.SetRequestor(CRequestor::ERequestorService,
+ CRequestor::EFormatApplication, KKallesPeriodicService);
+ if (err != KErrNone)
+ {
+ _LIT(KErrorAndLeave, "Could not set requestor");
+ LogErrorAndLeaveL(KErrorAndLeave);
+ }
+
+ err = positioner1.SetUpdateOptions(posOption);
+ _LIT(KErrSetUpdateOption, "Could not set updateoptions");
+ AssertTrueL(err == KErrNone, KErrSetUpdateOption, err);
+
+ TRequestStatus status;
+ positioner1.NotifyPositionUpdate(moduleInfo1, status);
+ User::WaitForRequest(status);
+
+ posOption.SetUpdateInterval(TTimeIntervalMicroSeconds(0));
+ // Settings update interval to 0 should stop the periodic update
+ err = positioner1.SetUpdateOptions(posOption);
+ _LIT(KErrSetUpdateOption2, "Could not set updateoptions2");
+ AssertTrueL(err == KErrNone, KErrSetUpdateOption2, err);
+
+ // Get GetLastKnownPosition from the stopped periodic update session
+ positioner1.GetLastKnownPosition(moduleInfo2, status);
+ User::WaitForRequest(status);
+ // Check moduleInfo2 and moduleInfo1 here, should be the same
+ if (!ComparePositionL(moduleInfo1, moduleInfo2))
+ {
+ _LIT(KErrorAndLeave, "1. The periodic update session position was not equal to getlastknown position");
+ LogErrorAndLeaveL(KErrorAndLeave);
+ }
+
+ positioner1.Close();
+ moduleInfo1 = TPositionInfo();
+ moduleInfo2 = TPositionInfo();
+
+ // 18 ) Start a periodic update session
+ INFO_PRINTF1(KPeriodicUpdate);
+ posOption.SetUpdateInterval(TTimeIntervalMicroSeconds(5000000));
+
+ // Connect to server and open positioner
+ err = positioner1.Open(iPosServer);
+ if (err != KErrNone)
+ {
+ _LIT(KErrorAndLeave, "Could not open positioner");
+ LogErrorAndLeaveL(KErrorAndLeave);
+ }
+
+ err = positioner1.SetRequestor(CRequestor::ERequestorService,
+ CRequestor::EFormatApplication, KKallesPeriodicService);
+ if (err != KErrNone)
+ {
+ _LIT(KErrorAndLeave, "Could not set requestor");
+ LogErrorAndLeaveL(KErrorAndLeave);
+ }
+
+ // Connect to server and open positioner
+ err = positioner2.Open(iPosServer);
+ if (err != KErrNone)
+ {
+ _LIT(KErrorAndLeave, "Could not open positioner2");
+ LogErrorAndLeaveL(KErrorAndLeave);
+ }
+
+ err = positioner2.SetRequestor(CRequestor::ERequestorService,
+ CRequestor::EFormatApplication, KKallesPeriodicService);
+ if (err != KErrNone)
+ {
+ _LIT(KErrorAndLeave, "Could not set requestor");
+ LogErrorAndLeaveL(KErrorAndLeave);
+ }
+
+
+ err = positioner1.SetUpdateOptions(posOption);
+ AssertTrueL(err == KErrNone, KErrSetUpdateOption, err);
+
+ positioner1.NotifyPositionUpdate(moduleInfo1, status);
+ User::WaitForRequest(status);
+
+ posOption.SetUpdateInterval(TTimeIntervalMicroSeconds(0));
+ // Settings update interval to 0 should stop the periodic update
+ err = positioner1.SetUpdateOptions(posOption);
+ AssertTrueL(err == KErrNone, KErrSetUpdateOption2, err);
+
+ positioner2.GetLastKnownPosition(moduleInfo2, status1);
+ User::WaitForRequest(status1);
+
+ // Check moduleInfo2 and moduleInfo1 here, should be the same
+ if (!ComparePositionL(moduleInfo1, moduleInfo2))
+ {
+ _LIT(KErrorAndLeave, "2. The periodic update session position was not equal to getlastknown position");
+ LogErrorAndLeaveL(KErrorAndLeave);
+ }
+
+ positioner1.Close();
+ positioner2.Close();
+
+ CleanupStack::PopAndDestroy(1); //positioner2
+ CleanupStack::PopAndDestroy(1); //positioner1
+ }
+
+// ---------------------------------------------------------
+// CT_LbsClientPosTp257::ComparePositionL
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+TBool CT_LbsClientPosTp257::ComparePositionL(TPositionInfo aPosInfo1, TPositionInfo aPosInfo2)
+ {
+ _LIT(KFunctionName, "We are inside ComparePositionL");
+ INFO_PRINTF1(KFunctionName);
+ TBool result = ETrue;
+ TBuf<150> buf;
+
+ TPosition pos1 = TPosition();
+ TPosition pos2 = TPosition();
+ aPosInfo1.GetPosition(pos1);
+ aPosInfo2.GetPosition(pos2);
+
+ TTime time1 = pos1.Time();
+ TTime time2 = pos2.Time();
+
+ if (time1 == time2)
+ {
+ _LIT(KTime, "Equal Time");
+ INFO_PRINTF1(KTime);
+ }
+ else
+ {
+ _LIT(KTime, "NOT Equal Time");
+ INFO_PRINTF1(KTime);
+ }
+
+ if ((time1 != time2) || (pos1.Latitude() != pos2.Latitude()) ||
+ (pos1.Longitude() != pos2.Longitude()) ||
+ (pos1.Altitude() != pos2.Altitude()) )
+ {
+ // Not equal
+ result = EFalse;
+ _LIT(KNotEqual, "Not equal");
+ INFO_PRINTF1(KNotEqual);
+ _LIT(KPosition1, "Position1: Lat %f Long %f Alt %f");
+ buf.Format(KPosition1, pos1.Latitude(), pos1.Longitude() ,pos1.Altitude());
+ INFO_PRINTF1(buf);
+ _LIT(KPosition2, "Position2: Lat %f Long %f Alt %f");
+ buf.Format(KPosition2, pos2.Latitude(), pos2.Longitude() ,pos2.Altitude());
+ INFO_PRINTF1(buf);
+ }
+ else
+ {
+ _LIT(KEqual, "Equal");
+ INFO_PRINTF1(KEqual);
+ result = ETrue;
+ _LIT(KPosition1, "Position1: Lat %f Long %f Alt %f");
+ buf.Format(KPosition1, pos1.Latitude(), pos1.Longitude() ,pos1.Altitude());
+ INFO_PRINTF1(buf);
+ }
+ return result;
+ }
+
+// ---------------------------------------------------------
+// CT_LbsClientPosTp257::DeleteFileL
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CT_LbsClientPosTp257::DeleteFileL(const TDesC& aFile)
+ {
+ RFs fs;
+ TInt err = fs.Connect();
+
+ err = fs.Delete(aFile);
+ fs.Close();
+ if (err == KErrNone)
+ {
+ _LIT(KDebugText, "TP257: The specified file deleted");
+ INFO_PRINTF1(KDebugText);
+ }
+ else
+ {
+ if (err == KErrInUse)
+ {
+ _LIT(KErrText, "TP257: The specified file could not be deleted it is already in use, errorcode %d");
+ INFO_PRINTF1(aFile);
+ TBuf<100> buf;
+ buf.Format(KErrText, err);
+ AssertTrueL(err==0, KErrText, err);
+ }
+ else if (err == KErrNotFound)
+ {
+ _LIT(KDebugText, "TP257: The specified file could not be found ,errorcode %d");
+ TBuf<100> buf;
+ buf.Format(KDebugText, err);
+ INFO_PRINTF1(buf);
+ }
+ else
+ {
+ _LIT(KErrText, "TP257: The specified file could not be deleted, errorcode %d");
+ TBuf<100> buf;
+ buf.Format(KErrText, err);
+ AssertTrueL(err==0, KErrText, err);
+ }
+ }
+ }
+
+// ---------------------------------------------------------
+// CT_LbsClientPosTp254::FileExistsL
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+TBool CT_LbsClientPosTp257::FileExistsL(const TDesC& aFile)
+ {
+ TBool exist = EFalse;
+ RFs fs;
+ RFile file;
+ TInt err = fs.Connect();
+
+ err = file.Open(fs, aFile, EFileRead);
+ if (err==KErrNotFound) // file does not exist
+ {
+ fs.Close();
+ _LIT(KErrText, "TP257: The specified file does not exist");
+ INFO_PRINTF1(KErrText);
+ }
+ else
+ {
+ exist = ETrue;
+ _LIT(KErrText, "TP257: The specified file exists");
+ INFO_PRINTF1(KErrText);
+ file.Close();
+ fs.Close();
+ }
+ return exist;
+ }
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/lbsclient/src/ctlbsclientpostp259.cpp Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,200 @@
+// Copyright (c) 2001-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:
+//
+
+
+
+// INCLUDES
+#include "ctlbsclientpostp259.h"
+
+// CONSTANTS
+
+// ================= MEMBER FUNCTIONS =======================
+
+// ---------------------------------------------------------
+// Constructor.
+// ---------------------------------------------------------
+CT_LbsClientPosTp259::CT_LbsClientPosTp259(CT_LbsServer& aParent): CT_LbsPortedStepBase(aParent)
+ {
+ _LIT(KTestName, "TP259 - Cancel Request with incorrect enum values");
+ SetTestStepName(KTestName);
+ }
+
+// ---------------------------------------------------------
+// Destructor.
+// ---------------------------------------------------------
+CT_LbsClientPosTp259::~CT_LbsClientPosTp259()
+ {
+ }
+// ---------------------------------------------------------
+// CT_LbsClientPosTp259::CloseTest
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CT_LbsClientPosTp259::CloseTest()
+ {
+ ClosePositioner();
+ Disconnect();
+ }
+
+// ---------------------------------------------------------
+// CT_LbsClientPosTp259::StartL
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CT_LbsClientPosTp259::StartL()
+ {
+ // TestPart1 tests the separate case described in Error Report
+ // "SBUY-5W8KJ6-Bug in subsession selection when forwarding requests"
+ TestPart1L();
+
+ // Testpart2 tests some other scenarios not included in TestPart1L
+ TestPart2L();
+ }
+
+// ---------------------------------------------------------
+// CT_LbsClientPosTp259::TestPart1L
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CT_LbsClientPosTp259::TestPart1L()
+ {
+ _LIT(KFunctionsName, "We are inside TestPart1L()");
+ INFO_PRINTF1(KFunctionsName);
+ ConnectL();
+
+ // First call the RPosServer::CancelRequest method with inparameter
+ // EPositionerNotifyPositionUpdate and then call the RPositioner::CancelRequest
+ // method with EPositionServerNotifyModuleStatusEvent
+
+ _LIT(KCancelRequest, "iPosServer.CancelRequest(EPositionerNotifyPositionUpdate)");
+ INFO_PRINTF1(KCancelRequest);
+ TInt cancelErr = iPosServer.CancelRequest(EPositionerNotifyPositionUpdate);
+ if (cancelErr != KErrNotSupported)
+ {
+ _LIT(KErrorAndLeave, "The CancelRequest(EPositionerNotifyPositionUpdate) call did not return KErrNotSupported");
+ LogErrorAndLeaveL(KErrorAndLeave);
+ }
+
+ SetupPsyL(iUidMultiPsy);
+ User::LeaveIfError(OpenPositionerByName(iUidMultiPsy));
+
+ _LIT(KModuleStatusEvent, "iPositioner.CancelRequest(EPositionServerNotifyModuleStatusEvent);");
+ INFO_PRINTF1(KModuleStatusEvent);
+ TInt err = iPositioner.CancelRequest(EPositionServerNotifyModuleStatusEvent);
+ if (err != KErrNotSupported)
+ {
+ _LIT(KErrorAndLeave, "The CancelRequest(EPositionServerNotifyModuleStatusEvent) call did not return KErrNotFound");
+ LogErrorAndLeaveL(KErrorAndLeave);
+ }
+
+ ClosePositioner();
+ Disconnect();
+ }
+
+// ---------------------------------------------------------
+// CT_LbsClientPosTp259::TestPart2L
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CT_LbsClientPosTp259::TestPart2L()
+ {
+ _LIT(KFunctionsName,"We are inside TestPart2L()");
+ INFO_PRINTF1(KFunctionsName);
+ SetupPsyL(iUidMultiPsy);
+ ConnectL();
+ TInt err = KErrNone;
+ User::LeaveIfError(OpenPositionerByName(iUidMultiPsy));
+
+ err = iPositioner.CancelRequest(EPositionServerNotifyModuleStatusEvent);
+ if (err != KErrNotSupported)
+ {
+ _LIT(KErrorAndLeave, "The CancelRequest(EPositionServerNotifyModuleStatusEvent) call did not return KErrNotFound");
+ LogErrorAndLeaveL(KErrorAndLeave);
+ }
+
+ // Verify that a RPosServer.CancelRequest(EPositionServerNotifyModuleStatusEvent) (incorrect call)
+ // call does not affect the RPositioner.NotifyPositionUpdate call
+ _LIT(KKalle, "Kalle");
+ PerformRequestL(KKalle, CRequestor::ERequestorService, CRequestor::EFormatTelephone);
+ err = iPosServer.CancelRequest(EPositionServerNotifyModuleStatusEvent);
+ if (err != KErrNotFound)
+ {
+ _LIT(KErrorAndLeave, "The CancelRequest(EPositionServerNotifyModuleStatusEvent) call did not return KErrNotFound");
+ LogErrorAndLeaveL(KErrorAndLeave);
+ }
+ CheckRequestResultL(KErrNone);
+
+ // Verify that a RPositioner.CancelRequest(EPositionServerNotifyModuleStatusEvent) (incorrect call)
+ // call does not affect the RPositioner.NotifyPositionUpdate call
+ PerformRequestL(KKalle, CRequestor::ERequestorService, CRequestor::EFormatTelephone);
+ err = iPositioner.CancelRequest(EPositionServerNotifyModuleStatusEvent);
+ if (err != KErrNotSupported)
+ {
+ _LIT(KErrorAndLeave, "The CancelRequest(EPositionServerNotifyModuleStatusEvent) call did not return KErrNotFound");
+ LogErrorAndLeaveL(KErrorAndLeave);
+ }
+
+ CheckRequestResultL(KErrNone);
+
+ err = iPositioner.CancelRequest(EPositionerNotifyPositionUpdate);
+ if (err != KErrNotFound)
+ {
+ _LIT(KErrorAndLeave, "The CancelRequest(EPositionerNotifyPositionUpdate) call did not return KErrNotFound");
+ LogErrorAndLeaveL(KErrorAndLeave);
+ }
+
+ ClosePositioner();
+
+ // According to error report "SBUY-5W8KJ6 - Bug in subsession selection when forwarding requests"
+ // CancelRequest call will return with KErrNotSupported
+ TInt cancelErr = iPosServer.CancelRequest(EPositionerNotifyPositionUpdate);
+ if (cancelErr != KErrNotSupported)
+ {
+ _LIT(KErrorAndLeave, "The CancelRequest(EPositionerNotifyPositionUpdate) call did not return KErrNotSupported");
+ LogErrorAndLeaveL(KErrorAndLeave);
+ }
+
+ // According to error report "SBUY-5W8KJ6 - Bug in subsession selection when forwarding requests"
+ // CancelRequest call will return with KErrNotSupported
+ _LIT(KLastKnownPosition, "iPosServer.CancelRequest(EPositionerGetLastKnownPosition)");
+ INFO_PRINTF1(KLastKnownPosition);
+ cancelErr = iPosServer.CancelRequest(EPositionerGetLastKnownPosition);
+ if (cancelErr != KErrNotSupported)
+ {
+ _LIT(KErrorAndLeave, "The CancelRequest(EPositionerGetLastKnownPosition) call did not return KErrNotSupported");
+ LogErrorAndLeaveL(KErrorAndLeave);
+ }
+
+ //Make a request and then cancel a GetLastKnownPosition request that hasn't been made
+ //and check that the position request is not affected
+ User::LeaveIfError(OpenPositionerByName(iUidMultiPsy));
+ PerformRequestL(KKalle, CRequestor::ERequestorService, CRequestor::EFormatTelephone);
+
+ cancelErr = iPosServer.CancelRequest(EPositionerGetLastKnownPosition);
+ if (cancelErr != KErrNotSupported)
+ {
+ _LIT(KErrorAndLeave, "The CancelRequest(EPositionerGetLastKnownPosition call did not return KErrNotSupported");
+ LogErrorAndLeaveL(KErrorAndLeave);
+ }
+
+ CheckRequestResultL(KErrNone);
+
+ ClosePositioner();
+ Disconnect();
+ }
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/lbsclient/src/ctlbsclientpostp261.cpp Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,256 @@
+// Copyright (c) 2001-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:
+//
+
+
+
+// INCLUDES
+#include "ctlbsclientpostp261.h"
+#include <s32strm.h>
+#include <s32mem.h>
+
+// CONSTANTS
+
+// LOCAL FUNCTIONS
+void CleanOp(TAny* aAnArray)
+ {
+ // Cleanup function the requestor stack
+ RRequestorStack* theStack = reinterpret_cast <RRequestorStack*> (aAnArray);
+ theStack->ResetAndDestroy();
+ }
+
+// ================= MEMBER FUNCTIONS =======================
+
+
+// ---------------------------------------------------------
+// Constructor.
+// ---------------------------------------------------------
+CT_LbsClientPosTp261::CT_LbsClientPosTp261(CT_LbsServer& aParent): CT_LbsPortedStepBase(aParent)
+ {
+ _LIT(KTestName,"Tp261 - RequestorStack Externalize/Internalize");
+ SetTestStepName(KTestName);
+ }
+
+// ---------------------------------------------------------
+// Destructor.
+// ---------------------------------------------------------
+CT_LbsClientPosTp261::~CT_LbsClientPosTp261()
+ {
+ }
+
+// ---------------------------------------------------------
+// CT_LbsClientPosTp261::CloseTest
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CT_LbsClientPosTp261::CloseTest()
+ {
+ ClosePositioner();
+ Disconnect();
+ }
+
+// ---------------------------------------------------------
+// CT_LbsClientPosTp261::StartL
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CT_LbsClientPosTp261::StartL()
+ {
+ _LIT(KService1, "Service1");
+ _LIT(KService2, "Service2");
+ _LIT(KService3, "Service3");
+
+ _LIT(KContact1, "Contact1");
+ _LIT(KContact2, "Contact2");
+ _LIT(KContact3, "Contact3");
+
+ CRequestor* serviceId1 =
+ CRequestor::NewL(CRequestor::ERequestorService, CRequestor::EFormatApplication,
+ KService1);
+
+ CRequestor* serviceId2 =
+ CRequestor::NewL(CRequestor::ERequestorService, CRequestor::EFormatApplication,
+ KService2);
+
+ CRequestor* serviceId3 =
+ CRequestor::NewL(CRequestor::ERequestorService, CRequestor::EFormatApplication,
+ KService3);
+
+ CRequestor* contactId1 =
+ CRequestor::NewL(CRequestor::ERequestorContact, CRequestor::EFormatTelephone,
+ KContact1);
+
+ CRequestor* contactId2 =
+ CRequestor::NewL(CRequestor::ERequestorContact, CRequestor::EFormatUrl,
+ KContact2);
+
+ CRequestor* contactId3 =
+ CRequestor::NewL(CRequestor::ERequestorContact, CRequestor::EFormatMail,
+ KContact3);
+
+ RRequestorStack stack = RRequestorStack();
+ CleanupStack::PushL(TCleanupItem(CleanOp ,&stack));
+
+ CleanupStack::PushL(serviceId1);
+ CleanupStack::PushL(serviceId2);
+ CleanupStack::PushL(serviceId3);
+ CleanupStack::PushL(contactId1);
+ CleanupStack::PushL(contactId2);
+ CleanupStack::PushL(contactId3);
+
+ ConnectL();
+ OpenPositioner();
+
+ stack.Append(serviceId1);
+ stack.Append(contactId1);
+ stack.Append(contactId2);
+ stack.Append(serviceId2);
+ stack.Append(contactId3);
+ stack.Append(serviceId3);
+
+ CleanupStack::Pop(contactId3);
+ CleanupStack::Pop(contactId2);
+ CleanupStack::Pop(contactId1);
+ CleanupStack::Pop(serviceId3);
+ CleanupStack::Pop(serviceId2);
+ CleanupStack::Pop(serviceId1);
+
+ TInt err = iPositioner.SetRequestor(stack);
+ if (err != KErrNone)
+ {
+ _LIT(KErrorAndLeave, "Problems setting requestorstack");
+ LogErrorAndLeaveL(KErrorAndLeave);
+ }
+
+ const TInt KPosBufFlatExpandSize = 100;
+
+ //ExternalizeL
+ CBufFlat* bufFlat = CBufFlat::NewL(KPosBufFlatExpandSize);
+ CleanupStack::PushL(bufFlat);
+
+ RBufWriteStream stream(*bufFlat);
+ CleanupClosePushL(stream);
+ stack.ExternalizeL(stream);
+
+ TPtr8 dataPtr((TUint8*)NULL, 0);
+ dataPtr.Set(bufFlat->Ptr(0));
+
+ CleanupStack::PopAndDestroy(&stream);
+
+ HBufC8* tempBuf = HBufC8::NewLC(bufFlat->Size());
+ TPtr8 ptr = tempBuf->Des();
+ ptr = dataPtr;
+
+ //Internalize
+ bufFlat->InsertL(0, ptr);
+
+ RBufReadStream rstream(*bufFlat);
+ CleanupClosePushL(rstream);
+
+ RRequestorStack stack2 = RRequestorStack();
+ CleanupStack::PushL(TCleanupItem(CleanOp ,&stack2));
+
+ stack2.InternalizeL(rstream);
+
+ // Verify the requestor stack
+ VerifyRequestorStackL(stack2);
+ _LIT(KResult, "The RequestorStack is correct after Externalize/Internalize");
+ INFO_PRINTF1(KResult);
+
+ CleanupStack::PopAndDestroy(1); // CleanupOp stack2
+
+ CleanupStack::PopAndDestroy(&rstream);
+ CleanupStack::PopAndDestroy(tempBuf);
+ CleanupStack::PopAndDestroy(bufFlat);
+ CleanupStack::PopAndDestroy(1); // CleanupOp stack1
+
+ ClosePositioner();
+ Disconnect();
+ }
+
+// ---------------------------------------------------------
+// CT_LbsClientPosTp261::VerifyRequestorStackL
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CT_LbsClientPosTp261::VerifyRequestorStackL(RRequestorStack& aStack)
+ {
+ TInt count = aStack.Count();
+
+ _LIT(KService1, "Service1");
+ _LIT(KService2, "Service2");
+ _LIT(KService3, "Service3");
+
+ _LIT(KContact1, "Contact1");
+ _LIT(KContact2, "Contact2");
+ _LIT(KContact3, "Contact3");
+
+ // Hardcoded number of requestors
+ if (count != 6)
+ {
+ _LIT(KErrorAndLeave, "Wrong number of requestors in the stack");
+ LogErrorAndLeaveL(KErrorAndLeave);
+ }
+
+ if (aStack[0]->RequestorType() != CRequestor::ERequestorService
+ || aStack[0]->RequestorFormat() != CRequestor::EFormatApplication
+ || aStack[0]->RequestorData() != KService1)
+ {
+ _LIT(KErrorAndLeave, "Wrong requestor(1) in stack");
+ LogErrorAndLeaveL(KErrorAndLeave);
+ }
+
+ if (aStack[1]->RequestorType() != CRequestor::ERequestorContact
+ || aStack[1]->RequestorFormat() != CRequestor::EFormatTelephone
+ || aStack[1]->RequestorData() != KContact1)
+ {
+ _LIT(KErrorAndLeave, "Wrong requestor(2) in stack");
+ LogErrorAndLeaveL(KErrorAndLeave);
+ }
+
+ if (aStack[2]->RequestorType() != CRequestor::ERequestorContact
+ || aStack[2]->RequestorFormat() != CRequestor::EFormatUrl
+ || aStack[2]->RequestorData() != KContact2)
+ {
+ _LIT(KErrorAndLeave, "Wrong requestor(3) in stack");
+ LogErrorAndLeaveL(KErrorAndLeave);
+ }
+
+ if (aStack[3]->RequestorType() != CRequestor::ERequestorService
+ || aStack[3]->RequestorFormat() != CRequestor::EFormatApplication
+ || aStack[3]->RequestorData() != KService2)
+ {
+ _LIT(KErrorAndLeave, "Wrong requestor(4) in stack");
+ LogErrorAndLeaveL(KErrorAndLeave);
+ }
+
+ if (aStack[4]->RequestorType() != CRequestor::ERequestorContact
+ || aStack[4]->RequestorFormat() != CRequestor::EFormatMail
+ || aStack[4]->RequestorData() != KContact3)
+ {
+ _LIT(KErrorAndLeave, "Wrong requestor(5) in stack");
+ LogErrorAndLeaveL(KErrorAndLeave);
+ }
+
+ if (aStack[5]->RequestorType() != CRequestor::ERequestorService
+ || aStack[5]->RequestorFormat() != CRequestor::EFormatApplication
+ || aStack[5]->RequestorData() != KService3)
+ {
+ _LIT(KErrorAndLeave, "Wrong requestor(6) in stack");
+ LogErrorAndLeaveL(KErrorAndLeave);
+ }
+ }
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/lbsclient/src/ctlbsclientpostp269.cpp Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,229 @@
+// Copyright (c) 2001-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:
+//
+
+
+
+// INCLUDES
+#include "ctlbsclientpostp269.h"
+#include <LbsSatellite.h>
+#include <EPos_CPosModules.h>
+#include <EPos_CPosModuleUpdate.h>
+#include <EPos_CPosModuleIdList.h>
+#include <e32std.h>
+
+// CONSTANTS
+
+const TInt KEspectedErrorCodePSY1Request6 = KErrDied;
+const TInt KEspectedErrorCodePSY1Request8 = KErrBadPower;
+// ================= MEMBER FUNCTIONS =======================
+
+// ---------------------------------------------------------
+// Constructor.
+// ---------------------------------------------------------
+CT_LbsClientPosTp269::CT_LbsClientPosTp269(CT_LbsServer& aParent): CT_LbsPortedStepBase(aParent)
+ {
+ _LIT(KTestName, "Tp269 - Fallback in Default Proxy (CR0526)");
+ SetTestStepName(KTestName);
+ }
+
+// ---------------------------------------------------------
+// Destructor.
+// ---------------------------------------------------------
+CT_LbsClientPosTp269::~CT_LbsClientPosTp269()
+ {
+ }
+
+// ---------------------------------------------------------
+// CT_LbsClientPosTp269::StartL
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CT_LbsClientPosTp269::StartL()
+ {
+ ConnectL();
+
+ SetupProxyPSYsL();
+
+ TInt err = OpenPositioner();
+ _LIT(KOpenErr, "Error when opening positioner, %d");
+ AssertTrueSecL(err == KErrNone, KOpenErr, err);
+
+ _LIT(KServiceName, "TP269");
+ iPositioner.SetRequestor(CRequestor::ERequestorService, CRequestor::EFormatApplication, KServiceName);
+
+ TUint request = 0;
+
+ TPositionInfo posInfo;
+ /////////////////////////////////////////////
+ // Request 1
+ /////////////////////////////////////////////
+ RequestL(posInfo, ++request, KEspectedErrorCodePSY2);
+
+ // Used test PSYs reports ready when loaded, inactive when unloaded
+ VerifyPsyLoadedL(iUidTestProxyPsy1);
+ VerifyPsyLoadedL(iUidTestProxyPsy2);
+
+ /////////////////////////////////////////////
+ // Request 2
+ /////////////////////////////////////////////
+ RequestL(posInfo, ++request, KEspectedErrorCodePSY1);
+ VerifyPsyLoadedL(iUidTestProxyPsy1);
+
+ /////////////////////////////////////////////
+ // Request 3
+ /////////////////////////////////////////////
+ RequestL(posInfo, ++request, KEspectedErrorCodePSY3);
+ VerifyPsyLoadedL(iUidTestProxyPsy1);
+ VerifyPsyLoadedL(iUidTestProxyPsy2);
+ VerifyPsyLoadedL(iUidTestProxyPsy3);
+
+ /////////////////////////////////////////////
+ // Request 4
+ /////////////////////////////////////////////
+ RequestL(posInfo, ++request, KEspectedErrorCodePSY3);
+ VerifyPsyLoadedL(iUidTestProxyPsy1);
+ VerifyPsyLoadedL(iUidTestProxyPsy2);
+ VerifyPsyLoadedL(iUidTestProxyPsy3);
+
+ /////////////////////////////////////////////
+ // Request 5
+ /////////////////////////////////////////////
+ RequestL(posInfo, ++request, KEspectedErrorCodePSY2);
+ VerifyPsyLoadedL(iUidTestProxyPsy1);
+ VerifyPsyLoadedL(iUidTestProxyPsy2);
+
+ /////////////////////////////////////////////
+ // Request 6
+ /////////////////////////////////////////////
+ RequestL(posInfo, ++request, KEspectedErrorCodePSY1Request6);
+ VerifyPsyLoadedL(iUidTestProxyPsy1);
+ VerifyPsyLoadedL(iUidTestProxyPsy2);
+ VerifyPsyLoadedL(iUidTestProxyPsy3);
+
+ // Switch priority
+ CPosModules* db = CPosModules::OpenL();
+ CleanupStack::PushL(db);
+
+ db->SetModulePriorityL(iUidTestProxyPsy3, 1);
+ db->SetModulePriorityL(iUidTestProxyPsy2, 2);
+
+ /////////////////////////////////////////////
+ // Request 7
+ /////////////////////////////////////////////
+ RequestL(posInfo, ++request, KEspectedErrorCodePSY3);
+ VerifyPsyLoadedL(iUidTestProxyPsy1);
+ VerifyPsyLoadedL(iUidTestProxyPsy3);
+
+ /////////////////////////////////////////////
+ // Request 8
+ /////////////////////////////////////////////
+ RequestL(posInfo, ++request, KEspectedErrorCodePSY1Request8);
+ VerifyPsyLoadedL(iUidTestProxyPsy1);
+ VerifyPsyLoadedL(iUidTestProxyPsy2);
+ VerifyPsyLoadedL(iUidTestProxyPsy3);
+
+ // Switch back priority
+ db->SetModulePriorityL(iUidTestProxyPsy2, 1);
+ db->SetModulePriorityL(iUidTestProxyPsy3, 2);
+
+ CleanupStack::PopAndDestroy(db);
+
+ /////////////////////////////////////////////
+ // Request 9
+ /////////////////////////////////////////////
+ TPositionSatelliteInfo satInfo;
+ RequestL(satInfo, ++request, KErrArgument);
+
+ /////////////////////////////////////////////
+ // Request 10
+ /////////////////////////////////////////////
+ TPositionCourseInfo courseInfo;
+ RequestL(courseInfo, ++request, KEspectedErrorCodePSY3);
+
+ VerifyPsyLoadedL(iUidTestProxyPsy3);
+ }
+
+// ---------------------------------------------------------
+// CT_LbsClientPosTp269::CloseTest
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CT_LbsClientPosTp269::CloseTest()
+ {
+ iPositioner.Close();
+ iPosServer.Close();
+ }
+
+// ---------------------------------------------------------
+// CT_LbsClientPosTp269::AssertTrueSecL
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CT_LbsClientPosTp269::AssertTrueSecL(TBool aCondition, const TDesC& aErrorMsg, TInt aErrorCode)
+ {
+ if (!aCondition)
+ {
+ TBuf<100> buf;
+ buf.Format(aErrorMsg, aErrorCode);
+ LogErrorAndLeaveL(buf);
+ }
+ }
+
+// ---------------------------------------------------------
+// CT_LbsClientPosTp269::SetupProxyPSYsL
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CT_LbsClientPosTp269::SetupProxyPSYsL()
+ {
+ CPosModules* db = CPosModules::OpenL();
+ CleanupStack::PushL(db);
+
+ CPosModuleUpdate* moduleUpdate = CPosModuleUpdate::NewLC();
+
+ moduleUpdate->SetUpdateAvailability(EFalse);
+
+ CPosModuleIdList* prioList = db->ModuleIdListLC();
+
+ // Disable all PSY:s except PSYs used by this TP269, TP270
+ for (TInt i = 0 ; i < prioList->Count(); i++)
+ {
+ if ((*prioList)[i] != iUidTestProxyPsy1 &&
+ (*prioList)[i] != iUidTestProxyPsy2 &&
+ (*prioList)[i] != iUidTestProxyPsy3)
+ {
+ db->UpdateModuleL((*prioList)[i], *moduleUpdate);
+ }
+ }
+ moduleUpdate->SetUpdateAvailability(ETrue);
+ db->UpdateModuleL(iUidTestProxyPsy1, *moduleUpdate);
+ db->UpdateModuleL(iUidTestProxyPsy2, *moduleUpdate);
+ db->UpdateModuleL(iUidTestProxyPsy3, *moduleUpdate);
+
+ db->SetModulePriorityL(iUidTestProxyPsy1, 0);
+ db->SetModulePriorityL(iUidTestProxyPsy2, 1);
+ db->SetModulePriorityL(iUidTestProxyPsy3, 2);
+
+ CleanupStack::PopAndDestroy(prioList);
+ CleanupStack::PopAndDestroy(moduleUpdate);
+ CleanupStack::PopAndDestroy(db);
+ }
+
+// End of File
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/lbsclient/src/ctlbsclientpostp27.cpp Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,336 @@
+// Copyright (c) 2001-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:
+//
+
+
+
+// INCLUDES
+#include "ctlbsclientpostp27.h"
+#include "ctlbsposclientholder.h"
+#include <EPos_CPosModules.h>
+#include <EPos_CPosModuleUpdate.h>
+#include <EPos_CPosModuleIdList.h>
+#include <e32keys.h>
+
+// CONSTANTS
+
+// ================= MEMBER FUNCTIONS =======================
+
+// ---------------------------------------------------------
+// Constructor.
+// ---------------------------------------------------------
+CT_LbsClientPosTp27::CT_LbsClientPosTp27(CT_LbsServer& aParent): CT_LbsPortedStepBase(aParent)
+ {
+ _LIT(KTestName,"TP27 - Cancel Request");
+ SetTestStepName(KTestName);
+ }
+
+// ---------------------------------------------------------
+// Destructor.
+// ---------------------------------------------------------
+CT_LbsClientPosTp27::~CT_LbsClientPosTp27()
+ {
+ }
+
+// ---------------------------------------------------------
+// CT_LbsClientPosTp27::CloseTest
+// Always called after the test, even if the test leaves
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CT_LbsClientPosTp27::CloseTest()
+ {
+ ClosePositioner();
+ Disconnect();
+ }
+
+// ---------------------------------------------------------
+// CT_LbsClientPosTp27::StartL
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CT_LbsClientPosTp27::StartL()
+ {
+ SetupPsyL(iUidDynDbTestPsy);
+ TTimeIntervalMicroSeconds timeLimit(5000000);
+ ConnectL();
+ User::LeaveIfError(OpenPositioner());
+
+ TPositionInfo posInfo = TPositionInfo();
+ _LIT(KService, "service");
+ TInt err = PerformSyncRequest(KService, &posInfo);
+
+ if (err != KErrNone)
+ {
+ _LIT(KErrorRequest, "The request was not completed with KErrorNone");
+ LogErrorAndLeaveL(KErrorRequest);
+ }
+ ClosePositioner();
+ Disconnect();
+ //Cancel quick (most likely before the PSY gets involved
+ MakeCancelRequestL(TTimeIntervalMicroSeconds32(100), timeLimit );
+ //Cancel after 1 second so that the PSY gets involved.
+ MakeCancelRequestL(TTimeIntervalMicroSeconds32(1000000), timeLimit);
+
+ CheckCancelRequestL();
+
+ }
+
+// ---------------------------------------------------------
+// CT_LbsClientPosTp27::MakeCancelRequestL
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CT_LbsClientPosTp27::MakeCancelRequestL(TTimeIntervalMicroSeconds32 aCancelTime, TTimeIntervalMicroSeconds aTimeLimit)
+ {
+ const TInt KNrOfClients = 1;
+ CT_LbsPosClientHolder* clients = CT_LbsPosClientHolder::NewLC(KNrOfClients);
+
+ clients->SetRequesterWillCancelL();
+ clients ->SetCancelTime(aCancelTime);
+ clients->MakeRequests();
+
+ TInt status;
+
+ TPositionInfo myModuleInfo;
+ TTimeIntervalMicroSeconds reqTime;
+ clients->GetResult(status, myModuleInfo, reqTime);
+
+ if (status != KErrCancel)
+ {
+ _LIT(KReqWasNotCancelled, "The request was not cancelled, return code %d");
+ TBuf<100> buf;
+ buf.Format(KReqWasNotCancelled, status);
+ LogErrorAndLeaveL(buf);
+ }
+
+ if (reqTime > aTimeLimit)
+ {
+ _LIT(KError, "The request took too long, %d microsecs. It was probably never cancelled");
+ TBuf<100> buf;
+ buf.Format(KError, reqTime.Int64());
+ LogErrorAndLeaveL(buf);
+ }
+
+ _LIT(KMsg, "The request was cancelled after %d microsecs.");
+ TBuf<100> buf;
+ buf.Format(KMsg, reqTime.Int64());
+ INFO_PRINTF1(buf);
+ CleanupStack::PopAndDestroy(clients); //clients
+ }
+
+// ---------------------------------------------------------
+// CT_LbsClientPosTp27::MakeCancelRequest2L
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CT_LbsClientPosTp27::MakeCancelRequest2L(TTimeIntervalMicroSeconds32 aCancelTime, TTimeIntervalMicroSeconds aTimeLimit)
+ {
+ _LIT(KCancelRequest,"MakeCancelRequest2L");
+ INFO_PRINTF1(KCancelRequest);
+
+ RFs fs;
+ TInt err = fs.Connect();
+ CleanupClosePushL(fs);
+
+ DisableAllPsyL();
+ ConnectL();
+ // TestPsy9 waits for 6 sec before returning a position
+ EnablePsyL(iUidTestPsy9);
+ err = OpenPositionerByName(iUidTestPsy9);
+ if (err != KErrNone)
+ {
+ TBuf<150> buf;
+ _LIT(KErr, "OpenPositionerByName failed with %d");
+ buf.Format(KErr, err);
+ LogErrorAndLeaveL(buf);
+ }
+
+ _LIT(KPerformRequest,"The request info");
+ PerformRequestL(KPerformRequest, CRequestor::ERequestorService, CRequestor::EFormatApplication);
+
+ const TInt KNrOfClients = 2;
+ // TestPsy6 waits for 5 sec before returning a position
+ EnablePsyL(iUidTestPsy6);
+ CT_LbsPosClientHolder* clients = CT_LbsPosClientHolder::NewLC(KNrOfClients, iUidTestPsy6, ETrue);
+
+ clients->SetRequesterWillCancelL();
+ clients->SetCancelTime(aCancelTime);
+
+ clients->MakeRequests();
+ CheckRequestResultL(KErrNone);
+
+ TInt status;
+ TPositionInfo myModuleInfo;
+ TTimeIntervalMicroSeconds reqTime;
+ clients->GetResult(status, myModuleInfo, reqTime);
+
+ if (status != KErrCancel)
+ {
+ _LIT(KReqWasNotCancelled, "The request was not cancelled, return code %d");
+ TBuf<100> buf;
+ buf.Format(KReqWasNotCancelled, status);
+ LogErrorAndLeaveL(buf);
+ }
+
+ if (reqTime > aTimeLimit)
+ {
+ _LIT(KError, "The request took too long, %d microsecs. It was probably never cancelled");
+ TBuf<100> buf;
+ buf.Format(KError, reqTime.Int64());
+ LogErrorAndLeaveL(buf);
+ }
+
+ _LIT(KMsg, "The request was cancelled after %d microsecs.");
+ TBuf<100> buf;
+ buf.Format(KMsg, reqTime.Int64());
+ INFO_PRINTF1(buf);
+
+ ClosePositioner();
+ Disconnect();
+
+ //Check request log
+ RArray<TInt> arrayId;
+ CleanupClosePushL(arrayId);
+ err = KErrNone;
+
+ if (err != KErrNone)
+ {
+ TBuf<150> buf;
+ _LIT(KErr, "GetLogEntryListL() returned error, %d");
+ buf.Format(KErr, err);
+ LogErrorAndLeaveL(buf);
+ }
+
+ // All requests should have been logged, including the cancelled requests
+ TInt numberOfElements = arrayId. Count();
+
+ if (numberOfElements != 3)
+ {
+ buf.Zero();
+ _LIT(KErrLog,"ERROR: The log contains wrong number of entries, was %d");
+ buf.Format(KErrLog, numberOfElements);
+ INFO_PRINTF1(buf);
+ _LIT(KErrAndLeave, "Cancelled request has not been logged!!!");
+ LogErrorAndLeaveL(KErrAndLeave);
+ }
+
+ CleanupStack::PopAndDestroy(&arrayId);
+ CleanupStack::PopAndDestroy(clients); //clients
+ CleanupStack::PopAndDestroy(1); // privCtrl
+ CleanupStack::PopAndDestroy(1); //fs
+ }
+
+// ---------------------------------------------------------
+// CT_LbsClientPosTp27::CheckCancelRequestL
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CT_LbsClientPosTp27::CheckCancelRequestL()
+ {
+ _LIT(KFunctionName, "We are inside CheckCancelRequestL");
+ INFO_PRINTF1(KFunctionName);
+
+ RFs fs;
+ User::LeaveIfError(fs.Connect());
+ CleanupClosePushL(fs);
+
+ // TestPsy9 waits for 6 sec before returning a position
+ SetupPsyL(iUidTestPsy9);
+ TTimeIntervalMicroSeconds32 cancelTime(2000000); // 2 sec
+ const TInt KNrOfClients = 1;
+ CT_LbsPosClientHolder* clients = CT_LbsPosClientHolder::NewLC(KNrOfClients, iUidTestPsy9);
+
+ clients->SetRequesterWillCancelL();
+ clients->SetCancelTime(cancelTime);
+ clients->MakeRequests();
+
+ TInt status;
+
+ TPositionInfo myModuleInfo;
+ TTimeIntervalMicroSeconds reqTime;
+ clients->GetResult(status, myModuleInfo, reqTime);
+
+ if (status != KErrCancel)
+ {
+ _LIT(KReqWasNotCancelled, "The request was not cancelled, return code %d");
+ TBuf<100> buf;
+ buf.Format(KReqWasNotCancelled, status);
+ LogErrorAndLeaveL(buf);
+ }
+
+ _LIT(KMsg, "The request was cancelled after %d microsecs.");
+ TBuf<100> buf;
+ buf.Format(KMsg, reqTime.Int64());
+ INFO_PRINTF1(buf);
+
+ //Check request log
+ RArray<TInt> arrayId;
+ CleanupClosePushL(arrayId);
+
+ CleanupStack::PopAndDestroy(&arrayId);
+ CleanupStack::PopAndDestroy(clients); //clients
+ CleanupStack::PopAndDestroy(1); // privCtrl
+ }
+
+// ---------------------------------------------------------
+// CT_LbsClientPosTp27::DisableAllPsyL
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CT_LbsClientPosTp27::DisableAllPsyL()
+ {
+ CPosModules* db = CPosModules::OpenL();
+ CleanupStack::PushL(db);
+ CPosModuleUpdate* moduleUpdate = CPosModuleUpdate::NewLC();
+
+ // Disable PSY
+ moduleUpdate->SetUpdateAvailability(EFalse);
+ CPosModuleIdList* prioList = db->ModuleIdListLC();
+
+ // Disable all PSY:s
+ for (TInt i = 0 ; i < prioList->Count(); i++)
+ {
+ db->UpdateModuleL((*prioList)[i], *moduleUpdate);
+ }
+
+ CleanupStack::PopAndDestroy(prioList);
+ CleanupStack::PopAndDestroy(moduleUpdate);
+ CleanupStack::PopAndDestroy(db);
+ }
+
+// ---------------------------------------------------------
+// CT_LbsClientPosTp27::DisableAllPsyL
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CT_LbsClientPosTp27::EnablePsyL(const TUid aPsyUid)
+ {
+ CPosModules* db = CPosModules::OpenL();
+ CleanupStack::PushL(db);
+ CPosModuleUpdate* moduleUpdate = CPosModuleUpdate::NewLC();
+
+ // Enable the PSY that came as an in parameter
+ moduleUpdate->SetUpdateAvailability(ETrue);
+ db->UpdateModuleL(aPsyUid, *moduleUpdate);
+
+ CleanupStack::PopAndDestroy(moduleUpdate);
+ CleanupStack::PopAndDestroy(db);
+ }
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/lbsclient/src/ctlbsclientpostp271.cpp Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,282 @@
+// Copyright (c) 2002-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:
+//
+
+
+
+// INCLUDES
+#include "ctlbsclientpostp271.h"
+
+#include <LbsSatellite.h>
+#include <EPos_CPosModules.h>
+#include <EPos_CPosModuleUpdate.h>
+#include <EPos_CPosModuleIdList.h>
+#include <e32std.h>
+
+// CONSTANTS
+
+const TInt KUpdateInterval = 1000;
+const TInt KUpdateInterval2 = 2000;
+
+// ================= MEMBER FUNCTIONS =======================
+
+
+// ---------------------------------------------------------
+// Constructor.
+// ---------------------------------------------------------
+CT_LbsClientPosTp271::CT_LbsClientPosTp271(CT_LbsServer& aParent): CT_LbsPortedStepBase(aParent)
+ {
+ _LIT(KTestName,"Tp271-Fallback in Default Proxy,Perodic Update");
+ SetTestStepName(KTestName);
+ }
+
+// ---------------------------------------------------------
+// Destructor.
+// ---------------------------------------------------------
+CT_LbsClientPosTp271::~CT_LbsClientPosTp271()
+ {
+ }
+
+// ---------------------------------------------------------
+// CT_LbsClientPosTp271::StartL
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CT_LbsClientPosTp271::StartL()
+ {
+ ConnectL();
+
+ SetupProxyPSYsL();
+
+ iModuleEvent.SetRequestedEvents(TPositionModuleStatusEvent::EEventAll);
+
+ TInt err = OpenPositioner();
+ _LIT(KOpenErr, "Error when opening positioner, %d");
+ AssertTrueSecL(err == KErrNone, KOpenErr, err);
+
+ _LIT(KServiceName, "TP271");
+ iPositioner.SetRequestor(CRequestor::ERequestorService, CRequestor::EFormatApplication, KServiceName);
+
+ TUint request = 20;
+ TPositionInfo posInfo;
+ /////////////////////////////////////////////
+ // Request 1
+ /////////////////////////////////////////////
+ RequestL(posInfo, ++request, KEspectedErrorCodePSY2);
+
+ // Used test PSYs reports ready when loaded, inactive when unloaded
+ VerifyPsyLoadedL(iUidTestProxyPsy1);
+ VerifyPsyLoadedL(iUidTestProxyPsy2);
+
+ // Set periodic update
+ TPositionUpdateOptions updateOptions;
+ updateOptions.SetUpdateInterval(TTimeIntervalMicroSeconds(KUpdateInterval));
+
+ err = iPositioner.SetUpdateOptions(updateOptions);
+ _LIT(KUpdateErr, "Error when setting update interval, %d");
+ AssertTrueL(err == KErrNone, KUpdateErr, err);
+
+ /////////////////////////////////////////////
+ // Request 2
+ /////////////////////////////////////////////
+ RequestL(posInfo, ++request, KEspectedErrorCodePSY3);
+
+
+ /////////////////////////////////////////////
+ // Request 3
+ /////////////////////////////////////////////
+ RequestL(posInfo, ++request, KEspectedErrorCodePSY2);
+
+ VerifyPsyStartedTrackingL(iUidTestProxyPsy1); // Verify that still loaded, latest reported event
+ VerifyPsyStartedTrackingL(iUidTestProxyPsy2); // should still be the same
+ VerifyPsyStartedTrackingL(iUidTestProxyPsy3);
+
+ /////////////////////////////////////////////
+ // Request 4
+ /////////////////////////////////////////////
+ updateOptions.SetUpdateInterval(TTimeIntervalMicroSeconds(KUpdateInterval2));
+ err = iPositioner.SetUpdateOptions(updateOptions);
+ AssertTrueL(err == KErrNone, KUpdateErr, err);
+
+ RequestL(posInfo, ++request, KEspectedErrorCodePSY2);
+
+ VerifyPsyStartedTrackingL(iUidTestProxyPsy1);
+ VerifyPsyStartedTrackingL(iUidTestProxyPsy2);
+
+ /////////////////////////////////////////////
+ // Request 5
+ /////////////////////////////////////////////
+ updateOptions.SetUpdateInterval(TTimeIntervalMicroSeconds(0));
+ err = iPositioner.SetUpdateOptions(updateOptions);
+ AssertTrueL(err == KErrNone, KUpdateErr, err);
+
+ VerifyPsyStoppedTrackingL(iUidTestProxyPsy1);
+ VerifyPsyStoppedTrackingL(iUidTestProxyPsy2);
+
+ RequestL(posInfo, ++request, KEspectedErrorCodePSY3);
+
+ VerifyPsyStoppedTrackingL(iUidTestProxyPsy1); // Verifies that still loaded,
+ VerifyPsyStoppedTrackingL(iUidTestProxyPsy2); // Verifies that still loaded,
+
+ /////////////////////////////////////////////
+ // Request 6
+ /////////////////////////////////////////////
+ updateOptions.SetUpdateInterval(TTimeIntervalMicroSeconds(KUpdateInterval));
+ err = iPositioner.SetUpdateOptions(updateOptions);
+ AssertTrueL(err == KErrNone, KUpdateErr, err);
+
+ RequestL(posInfo, ++request, KEspectedErrorCodePSY1);
+
+ iPositioner.Close();
+
+ VerifyPsyUnloadedL(iUidTestProxyPsy1);
+ }
+
+// ---------------------------------------------------------
+// CT_LbsClientPosTp271::CloseTest
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CT_LbsClientPosTp271::CloseTest()
+ {
+ iPositioner.Close();
+ iPosServer.Close();
+ }
+
+// ---------------------------------------------------------
+// CT_LbsClientPosTp271::AssertTrueSecL
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CT_LbsClientPosTp271::AssertTrueSecL(TBool aCondition, const TDesC& aErrorMsg, TInt aErrorCode)
+ {
+ if (!aCondition)
+ {
+ TBuf<100> buf;
+ buf.Format(aErrorMsg, aErrorCode);
+ LogErrorAndLeaveL(buf);
+ }
+ }
+
+// ---------------------------------------------------------
+// CT_LbsClientPosTp271::SetupProxyPSYsL
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CT_LbsClientPosTp271::SetupProxyPSYsL()
+ {
+ CPosModules* db = CPosModules::OpenL();
+ CleanupStack::PushL(db);
+
+ CPosModuleUpdate* moduleUpdate = CPosModuleUpdate::NewLC();
+
+ moduleUpdate->SetUpdateAvailability(EFalse);
+
+ CPosModuleIdList* prioList = db->ModuleIdListLC();
+
+ // Disable all PSY:s except PSYs used by this TP271, TP270
+ for (TInt i = 0 ; i < prioList->Count(); i++)
+ {
+ if ((*prioList)[i] != iUidTestProxyPsy1 &&
+ (*prioList)[i] != iUidTestProxyPsy2 &&
+ (*prioList)[i] != iUidTestProxyPsy3)
+ {
+ db->UpdateModuleL((*prioList)[i], *moduleUpdate);
+ }
+ }
+ moduleUpdate->SetUpdateAvailability(ETrue);
+ db->UpdateModuleL(iUidTestProxyPsy1, *moduleUpdate);
+ db->UpdateModuleL(iUidTestProxyPsy2, *moduleUpdate);
+ db->UpdateModuleL(iUidTestProxyPsy3, *moduleUpdate);
+
+ db->SetModulePriorityL(iUidTestProxyPsy1, 0);
+ db->SetModulePriorityL(iUidTestProxyPsy2, 1);
+ db->SetModulePriorityL(iUidTestProxyPsy3, 2);
+
+ CleanupStack::PopAndDestroy(prioList);
+ CleanupStack::PopAndDestroy(moduleUpdate);
+ CleanupStack::PopAndDestroy(db);
+ }
+
+// ---------------------------------------------------------
+// CT_LbsClientPosTp271::VerifyPsyStartedUnloadedL
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CT_LbsClientPosTp271::VerifyPsyStartedTrackingL(TPositionModuleId& aUid)
+ {
+ _LIT(KPSYStatus,"Verifies if correct PSY is loaded by getting its status");
+ INFO_PRINTF1(KPSYStatus);
+
+ _LIT(KDeviceStatusErr, "The PSY has not reported expected Device Status and is not notified about start tracking");
+
+ TPositionModuleStatus moduleStatus;
+ iPosServer.GetModuleStatus(moduleStatus, aUid);
+
+ AssertTrueL(TPositionModuleStatus::EDeviceInitialising == moduleStatus.DeviceStatus(), KDeviceStatusErr, KErrGeneral);
+ }
+
+// ---------------------------------------------------------
+// CT_LbsClientPosTp271::VerifyPsyStoppedTrackingL
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CT_LbsClientPosTp271::VerifyPsyStoppedTrackingL(TPositionModuleId& /*aUid*/, TRequestStatus& aStatus)
+ {
+ _LIT(KPSYStatus,"Verifies that correct PSY has stopped tracking and is unloaded");
+ INFO_PRINTF1(KPSYStatus);
+
+ _LIT(KStoppedTrackingErr, "The PSY has not reported expected device status and has not stopped tracking");
+
+ TPositionModuleStatus moduleStatus;
+
+ User::WaitForRequest(aStatus);
+
+ iModuleEvent.GetModuleStatus(moduleStatus);
+
+ AssertTrueL(TPositionModuleStatus::EDeviceStandBy == moduleStatus.DeviceStatus(),
+ KStoppedTrackingErr,
+ KErrGeneral);
+
+
+ }
+// ---------------------------------------------------------
+// CT_LbsClientPosTp271::VerifyPsyStoppedTrackingL
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CT_LbsClientPosTp271::VerifyPsyStoppedTrackingL(TPositionModuleId& aUid)
+ {
+ _LIT(KPSYStatus,"Verifies that correct PSY has stopped tracking and is unloaded");
+ INFO_PRINTF1(KPSYStatus);
+
+ _LIT(KStoppedTrackingErr, "The PSY has not reported expected device status and has not stopped tracking");
+
+ TPositionModuleStatus moduleStatus;
+
+ iPosServer.GetModuleStatus(moduleStatus, aUid);
+
+ AssertTrueL(TPositionModuleStatus::EDeviceStandBy == moduleStatus.DeviceStatus(),
+ KStoppedTrackingErr,
+ KErrGeneral);
+ }
+
+// End of File
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/lbsclient/src/ctlbsclientpostp272.cpp Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,196 @@
+// Copyright (c) 2002-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:
+//
+
+
+
+// INCLUDES
+#include "ctlbsclientpostp272.h"
+
+#include <e32std.h>
+
+// CONSTANTS
+const TInt KUpdateInterval = 10000000;
+const TInt KUpdateInterval2 = 15000000;
+const TInt KUpdateInterval3 = 2000000;
+
+const TInt KMinTimeLimitRequest1 = 0;
+const TInt KMaxTimeLimitRequest1 = 2000000;
+
+const TInt KMinTimeLimitRequest2 = 9000000;
+const TInt KMaxTimeLimitRequest2 = 12000000;
+
+const TInt KMinTimeLimitRequest3 = 14000000;
+const TInt KMaxTimeLimitRequest3 = 17000000;
+
+const TInt KMinTimeLimitRequest4 = 0;
+const TInt KMaxTimeLimitRequest4 = 3000000;//200000;
+
+// ================= MEMBER FUNCTIONS =======================
+
+// ---------------------------------------------------------
+// Constructor.
+// ---------------------------------------------------------
+CT_LbsClientPosTp272::CT_LbsClientPosTp272(CT_LbsServer& aParent): CT_LbsPortedStepBase(aParent)
+ {
+ _LIT(KTestName,"Tp272-Perodic Update, Changing the interval");
+ SetTestStepName(KTestName);
+ }
+
+// ---------------------------------------------------------
+// Destructor.
+// ---------------------------------------------------------
+CT_LbsClientPosTp272::~CT_LbsClientPosTp272()
+ {
+ }
+
+// ---------------------------------------------------------
+// CT_LbsClientPosTp272::StartL
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CT_LbsClientPosTp272::StartL()
+ {
+ _LIT(KOpenErr, "Error when opening MultiPSY, %d");
+ _LIT(KServiceName, "TP272");
+
+ SetupPsyL(iUidMultiPsy);
+
+ ConnectL();
+
+ TInt err = OpenPositionerByName(iUidMultiPsy);
+ AssertTrueSecL(err == KErrNone, KOpenErr, err);
+
+ iPositioner.SetRequestor(CRequestor::ERequestorService, CRequestor::EFormatApplication, KServiceName);
+
+ SetPeriodicUpdateL(KUpdateInterval);
+
+ TInt request=0;
+ // NotifyPositionUpdate should be called direct by the server on the first request
+ // even if update interval is used
+ RequestL(++request, KMinTimeLimitRequest1, KMaxTimeLimitRequest1);
+
+ // Even if same update interval is set again should the first request complete direct
+ SetPeriodicUpdateL(KUpdateInterval);
+ RequestL(++request, KMinTimeLimitRequest2, KMaxTimeLimitRequest2);
+
+ // NotifyPositionUpdate should be called after the update interval on the second request
+ // but when the update interval is changed should it be called direct
+ RequestL(++request, KMinTimeLimitRequest2, KMaxTimeLimitRequest2, KUpdateInterval2);
+
+ // Now should the request time be about 10 sec
+ RequestL(++request, KMinTimeLimitRequest3, KMaxTimeLimitRequest3);
+
+ SetPeriodicUpdateL(KUpdateInterval3);
+
+ // Should return direct since update interval changed again
+ RequestL(++request, KMinTimeLimitRequest4, KMaxTimeLimitRequest4);
+
+
+ }
+
+// ---------------------------------------------------------
+// CT_LbsClientPosTp272::CloseTest
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CT_LbsClientPosTp272::CloseTest()
+ {
+ iPositioner.Close();
+ iPosServer.Close();
+ }
+
+// ---------------------------------------------------------
+// CT_LbsClientPosTp272::AssertTrueSecL
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CT_LbsClientPosTp272::AssertTrueSecL(TBool aCondition, const TDesC& aErrorMsg, TInt aErrorCode)
+ {
+ if (!aCondition)
+ {
+ TBuf<100> buf;
+ buf.Format(aErrorMsg, aErrorCode);
+ LogErrorAndLeaveL(buf);
+ }
+ }
+
+// ---------------------------------------------------------
+// CT_LbsClientPosTp272::RequestL
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CT_LbsClientPosTp272::RequestL(const TInt& aRequestIndex,
+ const TInt64& aMinTimeLimit,
+ const TInt64& aMaxTimeLimit,
+ const TInt& aPeriodicUpdateInterval)
+ {
+ _LIT(KUnexpectedErrCode, "Unexpected error code %d returned by the used PSY");
+ _LIT(KRequestMaxTimeErr, "Request took to long");
+ _LIT(KRequestMinTimeErr, "Request was to fast");
+ _LIT(KRequestTime, "Request took %d microsecs");
+
+ TBuf<100> info;
+ _LIT(KInfo, "Making request %d");
+ info.Format(KInfo, aRequestIndex);
+ INFO_PRINTF1(info);
+
+ TTime start, stop;
+ start.UniversalTime();
+
+ TPositionInfo posInfo;
+ TRequestStatus status;
+ iPositioner.NotifyPositionUpdate(posInfo, status);
+
+ if (aPeriodicUpdateInterval != 0)
+ {
+ User::After(5000000);
+ SetPeriodicUpdateL(KUpdateInterval2);
+ }
+
+ User::WaitForRequest(status);
+ stop.UniversalTime();
+
+ TInt64 usec = (stop.Int64() - start.Int64());
+ info.Format(KRequestTime, usec);
+ INFO_PRINTF1(info);
+
+ AssertTrueL(status.Int() == KErrNone, KUnexpectedErrCode, status.Int());
+
+ AssertTrueSecL(usec <= aMaxTimeLimit, KRequestMaxTimeErr);
+ AssertTrueSecL(usec >= aMinTimeLimit, KRequestMinTimeErr);
+ }
+
+// ---------------------------------------------------------
+// CT_LbsClientPosTp272::SetPeriodicUpdateL
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CT_LbsClientPosTp272::SetPeriodicUpdateL(const TInt& aUpdateInterval)
+ {
+ _LIT(KUpdateErr, "Error when setting update interval, %d");
+
+ TPositionUpdateOptions updateOptions;
+ updateOptions.SetUpdateInterval(TTimeIntervalMicroSeconds(aUpdateInterval));
+ TInt err = iPositioner.SetUpdateOptions(updateOptions);
+ AssertTrueL(err == KErrNone, KUpdateErr, err);
+
+ }
+
+// End of File
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/lbsclient/src/ctlbsclientpostp274.cpp Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,88 @@
+// Copyright (c) 2002-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:
+//
+
+
+
+// INCLUDES
+#include "ctlbsclientpostp274.h"
+
+#include <EPos_CPosModules.h>
+#include <EPos_CPosModuleUpdate.h>
+
+// ================= MEMBER FUNCTIONS =======================
+
+
+// ---------------------------------------------------------
+// Constructor.
+// ---------------------------------------------------------
+CT_LbsClientPosTp274::CT_LbsClientPosTp274(CT_LbsServer& aParent): CT_LbsPortedStepBase(aParent)
+ {
+ _LIT(KTestName, "Tp274-Disable PSY, Epos server crash (ESLI-649HQH)");
+ SetTestStepName(KTestName);
+ }
+
+// ---------------------------------------------------------
+// Destructor.
+// ---------------------------------------------------------
+CT_LbsClientPosTp274::~CT_LbsClientPosTp274()
+ {
+ }
+
+// ---------------------------------------------------------
+// CT_LbsClientPosTp274::StartL
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CT_LbsClientPosTp274::StartL()
+ {
+ ConnectL();
+
+ SetupPsyL(iUidMultiPsy);
+
+ User::LeaveIfError(OpenPositionerByName(iUidMultiPsy));
+
+ RPositioner positioner;
+ User::LeaveIfError(positioner.Open(iPosServer, iUidMultiPsy));
+ CleanupClosePushL(positioner);
+
+ iPositioner.Close();
+
+ CPosModules* modulesDb = CPosModules::OpenL();
+ CleanupStack::PushL(modulesDb);
+ CPosModuleUpdate* moduleUpdate = CPosModuleUpdate::NewLC();
+ moduleUpdate->SetUpdateAvailability(EFalse);
+ modulesDb->UpdateModuleL(iUidMultiPsy, *moduleUpdate);
+ CleanupStack::PopAndDestroy(2, modulesDb);
+
+ CleanupStack::PopAndDestroy(&positioner);
+
+ iPosServer.Close();
+
+ }
+
+// ---------------------------------------------------------
+// CT_LbsClientPosTp274::CloseTest
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CT_LbsClientPosTp274::CloseTest()
+ {
+ iPositioner.Close();
+ iPosServer.Close();
+ }
+
+// End of File
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/lbsclient/src/ctlbsclientpostp275.cpp Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,75 @@
+// Copyright (c) 2001-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:
+//
+
+
+
+// INCLUDES
+#include "ctlbsclientpostp275.h"
+#include <babackup.h>
+
+// CONSTANTS
+
+// ================= MEMBER FUNCTIONS =======================
+
+
+// ---------------------------------------------------------
+// Constructor.
+// ---------------------------------------------------------
+CT_LbsClientPosTp275::CT_LbsClientPosTp275(CT_LbsServer& aParent): CT_LbsPortedStepBase(aParent)
+ {
+ _LIT(KTestName, "TP275 - BackUpTest");
+ SetTestStepName(KTestName);
+ }
+
+// ---------------------------------------------------------
+// Destructor.
+// ---------------------------------------------------------
+CT_LbsClientPosTp275::~CT_LbsClientPosTp275()
+ {
+ }
+
+// ---------------------------------------------------------
+// CT_LbsClientPosTp275::CloseTest
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CT_LbsClientPosTp275::CloseTest()
+ {
+ }
+
+// ---------------------------------------------------------
+// CT_LbsClientPosTp275::StartL
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CT_LbsClientPosTp275::StartL()
+ {
+ ///////////////////////////////
+ CBaBackupSessionWrapper* backupWrapper = CBaBackupSessionWrapper::NewL();
+ CleanupStack::PushL(backupWrapper);
+ TBackupOperationAttributes backStart(MBackupObserver::EReleaseLockReadOnly,
+ MBackupOperationObserver::EStart);
+ backupWrapper->NotifyBackupOperationL(backStart);
+ RPositionServer server;
+ CleanupClosePushL(server);
+ User::LeaveIfError(server.Connect());
+ User::After(2000000);
+
+ CleanupStack::PopAndDestroy(2, backupWrapper);
+ }
+
+// End of File
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/lbsclient/src/ctlbsclientpostp4701.cpp Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,134 @@
+// Copyright (c) 2001-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:
+//
+
+
+
+// INCLUDES
+#include "ctlbsclientpostp4701.h"
+#include <EPos_CPosModules.h>
+#include <EPos_CPosModuleUpdate.h>
+#include <EPos_CPosModuleIdList.h>
+
+
+// ================= MEMBER FUNCTIONS =======================
+
+// ---------------------------------------------------------
+// Constructor.
+// ---------------------------------------------------------
+CT_LbsClientPosTp4701::CT_LbsClientPosTp4701(CT_LbsServer& aParent): CT_LbsPortedStepBase(aParent)
+ {
+ _LIT(KTestName, "TP4701 - Default Proxy fallback-Active\\Ready Status1");
+ SetTestStepName(KTestName);
+ }
+
+// ---------------------------------------------------------
+// Destructor.
+// ---------------------------------------------------------
+CT_LbsClientPosTp4701::~CT_LbsClientPosTp4701()
+ {
+ }
+
+// ---------------------------------------------------------
+// CPosTp4701::CloseTest
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CT_LbsClientPosTp4701::CloseTest()
+ {
+ ClosePositioner();
+ Disconnect();
+ }
+
+// ---------------------------------------------------------
+// CPosTp4701::StartL
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CT_LbsClientPosTp4701::StartL()
+ {
+ ConnectL();
+
+ SetupProxyPSYsL();
+ ResetDefaultPSYLastWorkingExtGPSPSYL();
+
+ User::After(4000000);
+
+ TInt err = OpenPositioner();
+ _LIT(KOpenErr, "Error when opening positioner, %d");
+ AssertTrueL(err == KErrNone, KOpenErr, err);
+
+ _LIT(KServiceName, "TP4701");
+ iPositioner.SetRequestor(CRequestor::ERequestorService,
+ CRequestor::EFormatApplication, KServiceName);
+
+ /////////////////////////////////////////////
+ // Request 1
+ /////////////////////////////////////////////
+ TInt request = 4701;
+
+ TPositionInfo posInfo;
+ RequestL(posInfo, request, KEspectedErrorCodePSY1);
+
+ VerifyPositionFromL(posInfo, iUidTestProxyPsy2);
+ VerifyRequestTimeLessThanL(8500000);
+
+ // Default proxy fallbacks to testproxypsy2
+ // because of time-shift,fix will
+ // be given by TestProxyPsy2 first.
+ VerifyPsyLoadedL(iUidTestProxyPsy1);
+ VerifyPsyLoadedL(iUidTestProxyPsy2);
+
+ VerifyPositionL(posInfo, 10, 20, 30);
+ }
+
+// ---------------------------------------------------------
+// CPosTp4701::SetupProxyPSYsL
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CT_LbsClientPosTp4701::SetupProxyPSYsL()
+ {
+ CPosModules* db = CPosModules::OpenL();
+ CleanupStack::PushL(db);
+
+ CPosModuleUpdate* moduleUpdate = CPosModuleUpdate::NewLC();
+ moduleUpdate->SetUpdateAvailability(EFalse);
+
+ // Disable all PSY:s except PSYs used by this test case
+ CPosModuleIdList* prioList = db->ModuleIdListLC();
+ for (TInt i = 0 ; i < prioList->Count(); i++)
+ {
+ if ((*prioList)[i] != iUidTestProxyPsy1 &&
+ (*prioList)[i] != iUidTestProxyPsy2)
+ {
+ db->UpdateModuleL((*prioList)[i], *moduleUpdate);
+ }
+ }
+ moduleUpdate->SetUpdateAvailability(ETrue);
+ db->UpdateModuleL(iUidTestProxyPsy1, *moduleUpdate);
+ db->UpdateModuleL(iUidTestProxyPsy2, *moduleUpdate);
+
+ db->SetModulePriorityL(iUidTestProxyPsy1, 0);
+ db->SetModulePriorityL(iUidTestProxyPsy2, 1);
+
+ CleanupStack::PopAndDestroy(prioList);
+ CleanupStack::PopAndDestroy(moduleUpdate);
+ CleanupStack::PopAndDestroy(db);
+ }
+
+// End of File
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/lbsclient/src/ctlbsclientpostp4702.cpp Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,131 @@
+// Copyright (c) 2001-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:
+//
+
+
+
+// INCLUDES
+#include "ctlbsclientpostp4702.h"
+#include <EPos_CPosModules.h>
+#include <EPos_CPosModuleUpdate.h>
+#include <EPos_CPosModuleIdList.h>
+
+
+// ================= MEMBER FUNCTIONS =======================
+
+// ---------------------------------------------------------
+// Constructor.
+// ---------------------------------------------------------
+CT_LbsClientPosTp4702::CT_LbsClientPosTp4702(CT_LbsServer& aParent): CT_LbsPortedStepBase(aParent)
+ {
+ _LIT(KTestName, "TP4702 - Default Proxy fallback-Active\\Ready Status2");
+ SetTestStepName(KTestName);
+ }
+
+// ---------------------------------------------------------
+// Destructor.
+// ---------------------------------------------------------
+CT_LbsClientPosTp4702::~CT_LbsClientPosTp4702()
+ {
+ }
+
+// ---------------------------------------------------------
+// CPosTp4702::CloseTest
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CT_LbsClientPosTp4702::CloseTest()
+ {
+ ClosePositioner();
+ Disconnect();
+ }
+
+// ---------------------------------------------------------
+// CPosTp4702::StartL
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CT_LbsClientPosTp4702::StartL()
+ {
+ ConnectL();
+
+ SetupProxyPSYsL();
+
+ TInt err = OpenPositioner();
+ _LIT(KOpenErr, "Error when opening positioner, %d");
+ AssertTrueL(err == KErrNone, KOpenErr, err);
+
+ _LIT(KServiceName, "TP4702");
+ iPositioner.SetRequestor(CRequestor::ERequestorService, CRequestor::EFormatApplication, KServiceName);
+
+ /////////////////////////////////////////////
+ // Request 1
+ /////////////////////////////////////////////
+ TInt request = 4702;
+ TPositionInfo posInfo;
+ RequestL(posInfo, request, KEspectedErrorCodePSY1);
+
+ VerifyPositionFromL(posInfo, iUidTestProxyPsy1);
+ VerifyRequestTimeLessThanL(7500000);
+
+ /*Default proxy fallbacks to testproxypsy2 because of time-shift,fix will
+ be given by TestProxyPsy1 first.*/
+ VerifyPsyLoadedL(iUidTestProxyPsy1);
+ VerifyPsyLoadedL(iUidTestProxyPsy2);
+
+ VerifyPositionL(posInfo, 5, 15, 25);
+ }
+
+// ---------------------------------------------------------
+// CPosTp4702::SetupProxyPSYsL
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CT_LbsClientPosTp4702::SetupProxyPSYsL()
+ {
+ CPosModules* db = CPosModules::OpenL();
+ CleanupStack::PushL(db);
+
+ CPosModuleUpdate* moduleUpdate = CPosModuleUpdate::NewLC();
+
+ moduleUpdate->SetUpdateAvailability(EFalse);
+
+ CPosModuleIdList* prioList = db->ModuleIdListLC();
+
+ // Disable all PSY:s except PSYs used by this test case
+
+ for (TInt i = 0 ; i < prioList->Count(); i++)
+ {
+ if ((*prioList)[i] != iUidTestProxyPsy1 &&
+ (*prioList)[i] != iUidTestProxyPsy2)
+ {
+ db->UpdateModuleL((*prioList)[i], *moduleUpdate);
+ }
+ }
+ moduleUpdate->SetUpdateAvailability(ETrue);
+ db->UpdateModuleL(iUidTestProxyPsy1, *moduleUpdate);
+ db->UpdateModuleL(iUidTestProxyPsy2, *moduleUpdate);
+
+ db->SetModulePriorityL(iUidTestProxyPsy1, 0);
+ db->SetModulePriorityL(iUidTestProxyPsy2, 1);
+
+ CleanupStack::PopAndDestroy(prioList);
+ CleanupStack::PopAndDestroy(moduleUpdate);
+ CleanupStack::PopAndDestroy(db);
+ }
+
+// End of File
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/lbsclient/src/ctlbsclientpostp4703.cpp Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,132 @@
+// Copyright (c) 2001-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:
+//
+
+
+
+// INCLUDES
+#include "ctlbsclientpostp4703.h"
+#include <EPos_CPosModules.h>
+#include <EPos_CPosModuleUpdate.h>
+#include <EPos_CPosModuleIdList.h>
+
+
+// ================= MEMBER FUNCTIONS =======================
+
+// ---------------------------------------------------------
+// Constructor.
+// ---------------------------------------------------------
+CT_LbsClientPosTp4703::CT_LbsClientPosTp4703(CT_LbsServer& aParent): CT_LbsPortedStepBase(aParent)
+ {
+ _LIT(KTestName, "TP4703 - Default Proxy fallback-other status1");
+ SetTestStepName(KTestName);
+ }
+
+// ---------------------------------------------------------
+// Destructor.
+// ---------------------------------------------------------
+CT_LbsClientPosTp4703::~CT_LbsClientPosTp4703()
+ {
+ }
+
+// ---------------------------------------------------------
+// CPosTp4703::CloseTest
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CT_LbsClientPosTp4703::CloseTest()
+ {
+ ClosePositioner();
+ Disconnect();
+ }
+
+// ---------------------------------------------------------
+// CPosTp4703::StartL
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CT_LbsClientPosTp4703::StartL()
+ {
+ ConnectL();
+
+ SetupProxyPSYsL();
+
+ TInt err = OpenPositioner();
+ _LIT(KOpenErr, "Error when opening positioner, %d");
+ AssertTrueL(err == KErrNone, KOpenErr, err);
+
+ _LIT(KServiceName, "TP4703");
+ iPositioner.SetRequestor(CRequestor::ERequestorService, CRequestor::EFormatApplication, KServiceName);
+
+ // First request a pre position request
+ TInt request = 100;
+ TPositionInfo posInfo;
+ RequestL(posInfo, request, KEspectedErrorCodePSY1);
+
+ /////////////////////////////////////////////
+ // Request 1
+ /////////////////////////////////////////////
+ request = 4703;
+ RequestL(posInfo, request, KEspectedErrorCodePSY1);
+
+ VerifyPositionFromL(posInfo, iUidTestProxyPsy2);
+ VerifyRequestTimeLessThanL(5001000);
+
+ VerifyPositionL(posInfo, 10, 20, 30);
+ }
+
+// ---------------------------------------------------------
+// CPosTp4703::SetupProxyPSYsL
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CT_LbsClientPosTp4703::SetupProxyPSYsL()
+ {
+ CPosModules* db = CPosModules::OpenL();
+ CleanupStack::PushL(db);
+
+ CPosModuleUpdate* moduleUpdate = CPosModuleUpdate::NewLC();
+
+ moduleUpdate->SetUpdateAvailability(EFalse);
+
+ CPosModuleIdList* prioList = db->ModuleIdListLC();
+
+ // Disable all PSY:s except PSYs used by this test case
+
+ for (TInt i = 0 ; i < prioList->Count(); i++)
+ {
+ if ((*prioList)[i] != iUidTestProxyPsy1 &&
+ (*prioList)[i] != iUidTestProxyPsy2)
+ {
+ db->UpdateModuleL((*prioList)[i], *moduleUpdate);
+ }
+ }
+ moduleUpdate->SetUpdateAvailability(ETrue);
+ db->UpdateModuleL(iUidTestProxyPsy1, *moduleUpdate);
+ db->UpdateModuleL(iUidTestProxyPsy2, *moduleUpdate);
+
+ db->SetModulePriorityL(iUidTestProxyPsy1, 0);
+ db->SetModulePriorityL(iUidTestProxyPsy2, 1);
+
+ CleanupStack::PopAndDestroy(prioList);
+ CleanupStack::PopAndDestroy(moduleUpdate);
+ CleanupStack::PopAndDestroy(db);
+ }
+
+// End of File
+
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/lbsclient/src/ctlbsclientpostp4704.cpp Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,114 @@
+// Copyright (c) 2001-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:
+//
+
+
+
+// INCLUDES
+#include "ctlbsclientpostp4704.h"
+#include <EPos_CPosModules.h>
+#include <EPos_CPosModuleUpdate.h>
+#include <EPos_CPosModuleIdList.h>
+
+
+// ================= MEMBER FUNCTIONS =======================
+
+// ---------------------------------------------------------
+// Constructor.
+// ---------------------------------------------------------
+CT_LbsClientPosTp4704::CT_LbsClientPosTp4704(CT_LbsServer& aParent): CT_LbsPortedStepBase(aParent)
+ {
+ _LIT(KTestName, "TP4704 - Default Proxy fallback-other status2");
+ SetTestStepName(KTestName);
+ }
+
+// ---------------------------------------------------------
+// Destructor.
+// ---------------------------------------------------------
+CT_LbsClientPosTp4704::~CT_LbsClientPosTp4704()
+ {
+ }
+
+void CT_LbsClientPosTp4704::CloseTest()
+ {
+ ClosePositioner();
+ Disconnect();
+ }
+
+void CT_LbsClientPosTp4704::StartL()
+ {
+ ConnectL();
+
+ SetupProxyPSYsL();
+
+ TInt err = OpenPositioner();
+ _LIT(KOpenErr, "Error when opening positioner, %d");
+ AssertTrueL(err == KErrNone, KOpenErr, err);
+
+ _LIT(KServiceName, "TP4704");
+ iPositioner.SetRequestor(CRequestor::ERequestorService, CRequestor::EFormatApplication, KServiceName);
+
+ // Requesting a pre position request
+ TInt request = 100;
+ TPositionInfo posInfo;
+ RequestL(posInfo, request, KEspectedErrorCodePSY1);
+
+ /////////////////////////////////////////////
+ // Request 1
+ /////////////////////////////////////////////
+ request = 4704;
+ RequestL(posInfo, request, KEspectedErrorCodePSY1);
+
+ VerifyPositionFromL(posInfo, iUidTestProxyPsy1);
+ VerifyRequestTimeLessThanL(4001000);
+
+ VerifyPositionL(posInfo, 5, 15, 25);
+ }
+
+void CT_LbsClientPosTp4704::SetupProxyPSYsL()
+ {
+ CPosModules* db = CPosModules::OpenL();
+ CleanupStack::PushL(db);
+
+ CPosModuleUpdate* moduleUpdate = CPosModuleUpdate::NewLC();
+
+ moduleUpdate->SetUpdateAvailability(EFalse);
+
+ CPosModuleIdList* prioList = db->ModuleIdListLC();
+
+ // Disable all PSY:s except PSYs used by this test case
+
+ for (TInt i = 0 ; i < prioList->Count(); i++)
+ {
+ if ((*prioList)[i] != iUidTestProxyPsy1 &&
+ (*prioList)[i] != iUidTestProxyPsy2)
+ {
+ db->UpdateModuleL((*prioList)[i], *moduleUpdate);
+ }
+ }
+ moduleUpdate->SetUpdateAvailability(ETrue);
+ db->UpdateModuleL(iUidTestProxyPsy1, *moduleUpdate);
+ db->UpdateModuleL(iUidTestProxyPsy2, *moduleUpdate);
+
+ db->SetModulePriorityL(iUidTestProxyPsy1, 0);
+ db->SetModulePriorityL(iUidTestProxyPsy2, 1);
+
+ CleanupStack::PopAndDestroy(prioList);
+ CleanupStack::PopAndDestroy(moduleUpdate);
+ CleanupStack::PopAndDestroy(db);
+ }
+
+// End of File
+
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/lbsclient/src/ctlbsclientpostp4705.cpp Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,139 @@
+// Copyright (c) 2001-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:
+//
+
+
+
+// INCLUDES
+#include "ctlbsclientpostp4705.h"
+#include <EPos_CPosModules.h>
+#include <EPos_CPosModuleUpdate.h>
+#include <EPos_CPosModuleIdList.h>
+
+
+// ================= MEMBER FUNCTIONS =======================
+
+// ---------------------------------------------------------
+// Constructor.
+// ---------------------------------------------------------
+CT_LbsClientPosTp4705::CT_LbsClientPosTp4705(CT_LbsServer& aParent): CT_LbsPortedStepBase(aParent)
+ {
+ _LIT(KTestName, "TP4705 - Default Proxy fallback-partial update1");
+ SetTestStepName(KTestName);
+ }
+
+// ---------------------------------------------------------
+// Destructor.
+// ---------------------------------------------------------
+CT_LbsClientPosTp4705::~CT_LbsClientPosTp4705()
+ {
+ }
+
+// ---------------------------------------------------------
+// CPosTp4705::CloseTest
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CT_LbsClientPosTp4705::CloseTest()
+ {
+ ClosePositioner();
+ Disconnect();
+ }
+
+// ---------------------------------------------------------
+// CPosTp4705::StartL
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CT_LbsClientPosTp4705::StartL()
+ {
+ ConnectL();
+
+ SetupProxyPSYsL();
+
+ TInt err = OpenPositioner();
+ _LIT(KOpenErr, "Error when opening positioner, %d");
+ AssertTrueL(err == KErrNone, KOpenErr, err);
+
+ _LIT(KServiceName, "TP4705");
+ iPositioner.SetRequestor(CRequestor::ERequestorService, CRequestor::EFormatApplication, KServiceName);
+
+ /////////////////////////////////////////////
+ // Request 1
+ /////////////////////////////////////////////
+ // Check that partial update is not supported
+ TPositionUpdateOptions updateOptions;
+ updateOptions.SetAcceptPartialUpdates(ETrue);
+ iPositioner.SetUpdateOptions(updateOptions);
+
+ TInt request = 4705;
+ TPositionInfo posInfo;
+ RequestL(posInfo, request, KEspectedErrorCodePSY2);
+
+ VerifyPositionFromL(posInfo, iUidTestPsyPartialUpdate);
+ VerifyRequestTimeLessThanL(8001000);
+
+ /*Default proxy fallbacks to TestPsyPartialUpdate because of time-shift,partial
+ update will be given by TestPsyPartialUpdate.Request to TestProxyPsy1
+ gets cancelled after cleanup time.*/
+ VerifyPsyLoadedL(iUidTestProxyPsy1);
+ VerifyPsyLoadedL(iUidTestPsyPartialUpdate);
+
+ VerifyPositionL(posInfo, 30, 40, 50);
+ }
+
+// ---------------------------------------------------------
+// CPosTp4705::SetupProxyPSYsL
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CT_LbsClientPosTp4705::SetupProxyPSYsL()
+ {
+ CPosModules* db = CPosModules::OpenL();
+ CleanupStack::PushL(db);
+
+ CPosModuleUpdate* moduleUpdate = CPosModuleUpdate::NewLC();
+
+ moduleUpdate->SetUpdateAvailability(EFalse);
+
+ CPosModuleIdList* prioList = db->ModuleIdListLC();
+
+ // Disable all PSY:s except PSYs used by this test case
+
+ for (TInt i = 0 ; i < prioList->Count(); i++)
+ {
+ if ((*prioList)[i] != iUidTestProxyPsy1 &&
+ (*prioList)[i] != iUidTestPsyPartialUpdate)
+ {
+ db->UpdateModuleL((*prioList)[i], *moduleUpdate);
+ }
+ }
+ moduleUpdate->SetUpdateAvailability(ETrue);
+ db->UpdateModuleL(iUidTestProxyPsy1, *moduleUpdate);
+ db->UpdateModuleL(iUidTestPsyPartialUpdate, *moduleUpdate);
+
+ db->SetModulePriorityL(iUidTestProxyPsy1, 0);
+ db->SetModulePriorityL(iUidTestPsyPartialUpdate, 1);
+
+ CleanupStack::PopAndDestroy(prioList);
+ CleanupStack::PopAndDestroy(moduleUpdate);
+ CleanupStack::PopAndDestroy(db);
+ }
+
+// End of File
+
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/lbsclient/src/ctlbsclientpostp4706.cpp Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,135 @@
+// Copyright (c) 2001-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:
+//
+
+
+
+// INCLUDES
+#include "ctlbsclientpostp4706.h"
+#include <EPos_CPosModules.h>
+#include <EPos_CPosModuleUpdate.h>
+#include <EPos_CPosModuleIdList.h>
+
+
+// ================= MEMBER FUNCTIONS =======================
+
+// ---------------------------------------------------------
+// Constructor.
+// ---------------------------------------------------------
+CT_LbsClientPosTp4706::CT_LbsClientPosTp4706(CT_LbsServer& aParent): CT_LbsPortedStepBase(aParent)
+ {
+ _LIT(KTestName, "TP4706 - Default Proxy fallback-partial update2");
+ SetTestStepName(KTestName);
+ }
+
+// ---------------------------------------------------------
+// Destructor.
+// ---------------------------------------------------------
+CT_LbsClientPosTp4706::~CT_LbsClientPosTp4706()
+ {
+ }
+
+// ---------------------------------------------------------
+// CPosTp4706::CloseTest
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CT_LbsClientPosTp4706::CloseTest()
+ {
+ ClosePositioner();
+ Disconnect();
+ }
+
+// ---------------------------------------------------------
+// CPosTp4706::StartL
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CT_LbsClientPosTp4706::StartL()
+ {
+ ConnectL();
+
+ SetupProxyPSYsL();
+
+ TInt err = OpenPositioner();
+ _LIT(KOpenErr, "Error when opening positioner, %d");
+ AssertTrueL(err == KErrNone, KOpenErr, err);
+
+ _LIT(KServiceName, "TP4706");
+ iPositioner.SetRequestor(CRequestor::ERequestorService, CRequestor::EFormatApplication, KServiceName);
+
+ // Issue a pre position request
+ TInt request=100;
+ TPositionInfo posInfo;
+ RequestL(posInfo, request, KEspectedErrorCodePSY1);
+
+ /////////////////////////////////////////////
+ // Request 1
+ /////////////////////////////////////////////
+ // Check that partial update is not supported
+ TPositionUpdateOptions updateOptions;
+ updateOptions.SetAcceptPartialUpdates(ETrue);
+ iPositioner.SetUpdateOptions(updateOptions);
+
+ request = 4706;
+ RequestL(posInfo, request, KEspectedErrorCodePSY2);
+
+ VerifyPositionFromL(posInfo, iUidPartialUpdate2);
+ VerifyRequestTimeLessThanL(5001000);
+
+ VerifyPositionL(posInfo, 55, 65, 75);
+ }
+
+// ---------------------------------------------------------
+// CPosTp4706::SetupProxyPSYsL
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CT_LbsClientPosTp4706::SetupProxyPSYsL()
+ {
+ CPosModules* db = CPosModules::OpenL();
+ CleanupStack::PushL(db);
+
+ CPosModuleUpdate* moduleUpdate = CPosModuleUpdate::NewLC();
+
+ moduleUpdate->SetUpdateAvailability(EFalse);
+
+ CPosModuleIdList* prioList = db->ModuleIdListLC();
+
+ // Disable all PSY:s except PSYs used by this test case
+
+ for (TInt i = 0 ; i < prioList->Count(); i++)
+ {
+ if ((*prioList)[i] != iUidTestPsyPartialUpdate &&
+ (*prioList)[i] != iUidPartialUpdate2)
+ {
+ db->UpdateModuleL((*prioList)[i], *moduleUpdate);
+ }
+ }
+ moduleUpdate->SetUpdateAvailability(ETrue);
+ db->UpdateModuleL(iUidTestPsyPartialUpdate, *moduleUpdate);
+ db->UpdateModuleL(iUidPartialUpdate2, *moduleUpdate);
+
+ db->SetModulePriorityL(iUidTestPsyPartialUpdate, 0);
+ db->SetModulePriorityL(iUidPartialUpdate2, 1);
+
+ CleanupStack::PopAndDestroy(prioList);
+ CleanupStack::PopAndDestroy(moduleUpdate);
+ CleanupStack::PopAndDestroy(db);
+ }
+
+// End of File
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/lbsclient/src/ctlbsclientpostp4707.cpp Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,137 @@
+// Copyright (c) 2001-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:
+//
+
+
+
+// INCLUDES
+#include "ctlbsclientpostp4707.h"
+#include <EPos_CPosModules.h>
+#include <EPos_CPosModuleUpdate.h>
+#include <EPos_CPosModuleIdList.h>
+
+
+// ================= MEMBER FUNCTIONS =======================
+
+// ---------------------------------------------------------
+// Constructor.
+// ---------------------------------------------------------
+CT_LbsClientPosTp4707::CT_LbsClientPosTp4707(CT_LbsServer& aParent): CT_LbsPortedStepBase(aParent)
+ {
+ _LIT(KTestName, "TP4707 - Default Proxy fallback-partial update3");
+ SetTestStepName(KTestName);
+ }
+
+// ---------------------------------------------------------
+// Destructor.
+// ---------------------------------------------------------
+CT_LbsClientPosTp4707::~CT_LbsClientPosTp4707()
+ {
+ }
+
+// ---------------------------------------------------------
+// CPosTp4707::CloseTest
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CT_LbsClientPosTp4707::CloseTest()
+ {
+ ClosePositioner();
+ Disconnect();
+ }
+
+// ---------------------------------------------------------
+// CPosTp4707::StartL
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CT_LbsClientPosTp4707::StartL()
+ {
+ ConnectL();
+
+ SetupProxyPSYsL();
+
+ TInt err = OpenPositioner();
+ _LIT(KOpenErr, "Error when opening positioner, %d");
+ AssertTrueL(err == KErrNone, KOpenErr, err);
+
+ _LIT(KServiceName, "TP4707");
+ iPositioner.SetRequestor(CRequestor::ERequestorService, CRequestor::EFormatApplication, KServiceName);
+
+ // Issue a pre position request
+ TInt request = 100;
+ TPositionInfo posInfo;
+ RequestL(posInfo, request, KEspectedErrorCodePSY1);
+
+ /////////////////////////////////////////////
+ // Request 1
+ /////////////////////////////////////////////
+ // Check that partial update is not supported
+ TPositionUpdateOptions updateOptions;
+ updateOptions.SetAcceptPartialUpdates(ETrue);
+ iPositioner.SetUpdateOptions(updateOptions);
+
+ request = 4707;
+ RequestL(posInfo, request, KEspectedErrorCodePSY2);
+
+ VerifyPositionFromL(posInfo, iUidTestPsyPartialUpdate);
+ VerifyRequestTimeLessThanL(5001000);
+
+ VerifyPositionL(posInfo, 30, 40, 50);
+ }
+
+// ---------------------------------------------------------
+// CPosTp4707::SetupProxyPSYsL
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CT_LbsClientPosTp4707::SetupProxyPSYsL()
+ {
+ CPosModules* db = CPosModules::OpenL();
+ CleanupStack::PushL(db);
+
+ CPosModuleUpdate* moduleUpdate = CPosModuleUpdate::NewLC();
+
+ moduleUpdate->SetUpdateAvailability(EFalse);
+
+ CPosModuleIdList* prioList = db->ModuleIdListLC();
+
+ // Disable all PSY:s except PSYs used by this test case
+
+ for (TInt i = 0 ; i < prioList->Count(); i++)
+ {
+ if ((*prioList)[i] != iUidTestProxyPsy1 &&
+ (*prioList)[i] != iUidTestPsyPartialUpdate)
+ {
+ db->UpdateModuleL((*prioList)[i], *moduleUpdate);
+ }
+ }
+ moduleUpdate->SetUpdateAvailability(ETrue);
+ db->UpdateModuleL(iUidTestProxyPsy1, *moduleUpdate);
+ db->UpdateModuleL(iUidTestPsyPartialUpdate, *moduleUpdate);
+
+ db->SetModulePriorityL(iUidTestProxyPsy1, 0);
+ db->SetModulePriorityL(iUidTestPsyPartialUpdate, 1);
+
+ CleanupStack::PopAndDestroy(prioList);
+ CleanupStack::PopAndDestroy(moduleUpdate);
+ CleanupStack::PopAndDestroy(db);
+ }
+
+// End of File
+
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/lbsclient/src/ctlbsclientpostp4708.cpp Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,144 @@
+// Copyright (c) 2001-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:
+//
+
+
+
+// INCLUDES
+#include "ctlbsclientpostp4708.h"
+#include <EPos_CPosModules.h>
+#include <EPos_CPosModuleUpdate.h>
+#include <EPos_CPosModuleIdList.h>
+
+
+// ================= MEMBER FUNCTIONS =======================
+
+// ---------------------------------------------------------
+// Constructor.
+// ---------------------------------------------------------
+CT_LbsClientPosTp4708::CT_LbsClientPosTp4708(CT_LbsServer& aParent): CT_LbsPortedStepBase(aParent)
+ {
+ _LIT(KTestName, "TP4708 - Default Proxy-Configure time-shift values");
+ SetTestStepName(KTestName);
+ }
+
+// ---------------------------------------------------------
+// Destructor.
+// ---------------------------------------------------------
+CT_LbsClientPosTp4708::~CT_LbsClientPosTp4708()
+ {
+ }
+
+// ---------------------------------------------------------
+// CPosTp4708::CloseTest
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CT_LbsClientPosTp4708::CloseTest()
+ {
+ ClosePositioner();
+ Disconnect();
+ }
+
+// ---------------------------------------------------------
+// CPosTp4708::StartL
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CT_LbsClientPosTp4708::StartL()
+ {
+ ConnectL();
+
+ SetupProxyPSYsL();
+
+ TInt err = OpenPositioner();
+ _LIT(KOpenErr, "Error when opening positioner, %d");
+ AssertTrueL(err == KErrNone, KOpenErr, err);
+
+ _LIT(KServiceName, "TP4708");
+ iPositioner.SetRequestor(CRequestor::ERequestorService,
+ CRequestor::EFormatApplication, KServiceName);
+
+ /////////////////////////////////////////////
+ // Request 1
+ /////////////////////////////////////////////
+ TInt request = 4708;
+ TPositionInfo posInfo;
+ RequestL(posInfo, request, KEspectedErrorCodePSY1);
+
+ VerifyPositionFromL(posInfo, iUidTestProxyPsy2);
+ VerifyRequestTimeLessThanL(8000000);
+
+ // Default proxy fallbacks to testproxypsy2
+ // because of time-shift,fix will
+ // be given by TestProxyPsy2 first.
+ VerifyPsyLoadedL(iUidTestProxyPsy1);
+ VerifyPsyLoadedL(iUidTestProxyPsy2);
+
+ VerifyPositionL(posInfo, 10, 20, 30);
+
+ /////////////////////////////////////////////
+ // Request 2
+ /////////////////////////////////////////////
+ request = 100;
+ RequestL(posInfo, request, KEspectedErrorCodePSY1);
+
+ request = 4708;
+ RequestL(posInfo, request, KEspectedErrorCodePSY1);
+
+ VerifyPositionFromL(posInfo, iUidTestProxyPsy2);
+ VerifyRequestTimeLessThanL(5001000);
+
+ VerifyPositionL(posInfo, 10, 20, 30);
+ }
+
+// ---------------------------------------------------------
+// CPosTp4708::SetupProxyPSYsL
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CT_LbsClientPosTp4708::SetupProxyPSYsL()
+ {
+ CPosModules* db = CPosModules::OpenL();
+ CleanupStack::PushL(db);
+
+ CPosModuleUpdate* moduleUpdate = CPosModuleUpdate::NewLC();
+ moduleUpdate->SetUpdateAvailability(EFalse);
+
+ // Disable all PSY:s except PSYs used by this test case
+ CPosModuleIdList* prioList = db->ModuleIdListLC();
+ for (TInt i = 0 ; i < prioList->Count(); i++)
+ {
+ if ((*prioList)[i] != iUidTestProxyPsy1 &&
+ (*prioList)[i] != iUidTestProxyPsy2)
+ {
+ db->UpdateModuleL((*prioList)[i], *moduleUpdate);
+ }
+ }
+ moduleUpdate->SetUpdateAvailability(ETrue);
+ db->UpdateModuleL(iUidTestProxyPsy1, *moduleUpdate);
+ db->UpdateModuleL(iUidTestProxyPsy2, *moduleUpdate);
+
+ db->SetModulePriorityL(iUidTestProxyPsy1, 0);
+ db->SetModulePriorityL(iUidTestProxyPsy2, 1);
+
+ CleanupStack::PopAndDestroy(prioList);
+ CleanupStack::PopAndDestroy(moduleUpdate);
+ CleanupStack::PopAndDestroy(db);
+ }
+
+// End of File
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/lbsclient/src/ctlbsclientpostp4709.cpp Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,138 @@
+// Copyright (c) 2001-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:
+//
+
+
+
+// INCLUDES
+#include <centralrepository.h>
+#include "ctlbsclientpostp4709.h"
+#include <EPos_CPosModules.h>
+#include <EPos_CPosModuleUpdate.h>
+#include <EPos_CPosModuleIdList.h>
+
+// ================= MEMBER FUNCTIONS =======================
+
+// ---------------------------------------------------------
+// Constructor.
+// ---------------------------------------------------------
+CT_LbsClientPosTp4709::CT_LbsClientPosTp4709(CT_LbsServer& aParent): CT_LbsPortedStepBase(aParent)
+ {
+ _LIT(KTestName, "TP4709 - Default Proxy-Configure Cleanup Timeout");
+ SetTestStepName(KTestName);
+ }
+
+// ---------------------------------------------------------
+// Destructor.
+// ---------------------------------------------------------
+CT_LbsClientPosTp4709::~CT_LbsClientPosTp4709()
+ {
+ }
+
+// ---------------------------------------------------------
+// CPosTp4709::CloseTest
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CT_LbsClientPosTp4709::CloseTest()
+ {
+ ClosePositioner();
+ Disconnect();
+ }
+
+// ---------------------------------------------------------
+// CPosTp4709::StartL
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CT_LbsClientPosTp4709::StartL()
+ {
+ ConnectL();
+
+ SetupProxyPSYsL();
+
+ TInt err = OpenPositioner();
+ _LIT(KOpenErr, "Error when opening positioner, %d");
+ AssertTrueL(err == KErrNone, KOpenErr, err);
+
+ _LIT(KServiceName, "TP4709");
+ iPositioner.SetRequestor(CRequestor::ERequestorService,
+ CRequestor::EFormatApplication, KServiceName);
+
+ ResetDefaultPSYLastWorkingExtGPSPSYL();
+
+ TInt request = 100;
+ TPositionInfo posInfo;
+ RequestL(posInfo, request, KEspectedErrorCodePSY1);
+
+ /////////////////////////////////////////////
+ // Request 1
+ /////////////////////////////////////////////
+
+ // Check that partial update is not supported
+ // Check this with TP/TC document, Fredrik
+ //
+ TPositionUpdateOptions updateOptions;
+ updateOptions.SetAcceptPartialUpdates(ETrue);
+ TInt res = iPositioner.SetUpdateOptions(updateOptions);
+ User::LeaveIfError(res);
+
+ request = 4709;
+ RequestL(posInfo, request, KEspectedErrorCodePSY2);
+
+ VerifyPositionFromL(posInfo, iUidTestPsyPartialUpdate);
+ VerifyRequestTimeLessThanL(4400000);
+
+ VerifyPositionL(posInfo, 30, 40, 50);
+ }
+
+// ---------------------------------------------------------
+// CPosTp4709::SetupProxyPSYsL
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CT_LbsClientPosTp4709::SetupProxyPSYsL()
+ {
+ CPosModules* db = CPosModules::OpenL();
+ CleanupStack::PushL(db);
+
+ CPosModuleUpdate* moduleUpdate = CPosModuleUpdate::NewLC();
+ moduleUpdate->SetUpdateAvailability(EFalse);
+
+ // Disable all PSY:s except PSYs used by this test case
+ CPosModuleIdList* prioList = db->ModuleIdListLC();
+ for (TInt i = 0 ; i < prioList->Count(); i++)
+ {
+ if ((*prioList)[i] != iUidTestProxyPsy1 &&
+ (*prioList)[i] != iUidTestPsyPartialUpdate)
+ {
+ db->UpdateModuleL((*prioList)[i], *moduleUpdate);
+ }
+ }
+ moduleUpdate->SetUpdateAvailability(ETrue);
+ db->UpdateModuleL(iUidTestProxyPsy1, *moduleUpdate);
+ db->UpdateModuleL(iUidTestPsyPartialUpdate, *moduleUpdate);
+
+ db->SetModulePriorityL(iUidTestProxyPsy1, 0);
+ db->SetModulePriorityL(iUidTestPsyPartialUpdate, 1);
+
+ CleanupStack::PopAndDestroy(prioList);
+ CleanupStack::PopAndDestroy(moduleUpdate);
+ CleanupStack::PopAndDestroy(db);
+ }
+
+// End of File
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/lbsclient/src/ctlbsclientpostp4722.cpp Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,166 @@
+// Copyright (c) 2001-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:
+//
+
+
+
+// INCLUDES
+#include "ctlbsclientpostp4722.h"
+#include <EPos_CPosModules.h>
+#include <EPos_CPosModuleUpdate.h>
+#include <EPos_CPosModuleIdList.h>
+
+
+// ================= MEMBER FUNCTIONS =======================
+
+// ---------------------------------------------------------
+// Constructor.
+// ---------------------------------------------------------
+CT_LbsClientPosTp4722::CT_LbsClientPosTp4722(CT_LbsServer& aParent): CT_LbsPortedStepBase(aParent)
+ {
+ _LIT(KTestName, "TP4722 - Default Proxy -Prefer working GPS PSY");
+ SetTestStepName(KTestName);
+ }
+
+// ---------------------------------------------------------
+// Destructor.
+// ---------------------------------------------------------
+CT_LbsClientPosTp4722::~CT_LbsClientPosTp4722()
+ {
+ }
+
+// ---------------------------------------------------------
+// CPosTp4722::CloseTest
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CT_LbsClientPosTp4722::CloseTest()
+ {
+ ClosePositioner();
+ Disconnect();
+ }
+
+// ---------------------------------------------------------
+// CPosTp4722::StartL
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CT_LbsClientPosTp4722::StartL()
+ {
+ ConnectL();
+
+ SetupProxyPSYsL();
+ ResetDefaultPSYLastWorkingExtGPSPSYL();
+
+ TInt err = OpenPositioner();
+ _LIT(KOpenErr, "Error when opening positioner, %d");
+ AssertTrueL(err == KErrNone, KOpenErr, err);
+
+ _LIT(KServiceName, "TP4722");
+ iPositioner.SetRequestor(CRequestor::ERequestorService,
+ CRequestor::EFormatApplication, KServiceName);
+
+ TPositionSatelliteInfo posInfo;
+
+ // Pre request
+ TInt request = 100;
+ RequestL(posInfo, request, KErrNone);
+
+ /////////////////////////////////////////////
+ // Request 1
+ /////////////////////////////////////////////
+ request = 4722;
+ RequestL(posInfo, request, KErrNone);
+ VerifyPositionFromL(posInfo, iUidSatInfoPsy);
+ VerifyRequestTimeLessThanL(4001000);
+
+ VerifyPositionL(posInfo, 40, 50, 60);
+
+ // Default PSY should pre-load SetInfo PSY since it is External and supports GPS
+ VerifyPsyLoadedL(iUidSatInfoPsy);
+
+ ClosePositioner();
+ Disconnect();
+
+ const TTimeIntervalMicroSeconds32 KPosWaitServerShutDown( 6000000 );
+ User::After(KPosWaitServerShutDown);
+
+ ConnectL();
+ SetupProxyPSYsL();
+ err = OpenPositioner();
+ AssertTrueL(err == KErrNone, KOpenErr, err);
+
+ iPositioner.SetRequestor(CRequestor::ERequestorService,
+ CRequestor::EFormatApplication, KServiceName);
+
+ /////////////////////////////////////////////
+ // Request 2
+ /////////////////////////////////////////////
+ RequestL(posInfo, request, KErrNone);
+
+ VerifyPositionFromL(posInfo, iUidSatInfoPsy);
+ VerifyRequestTimeLessThanL(4001000);
+
+ VerifyPositionL(posInfo, 40, 50, 60);
+
+ // Default PSY won't pre-load Multi PSY since it is Internal
+ VerifyPsyUnloadedL(iUidMultiPsy);
+ // Default PSY should pre-load SetInfo PSY since it is External and supports GPS
+ VerifyPsyLoadedL(iUidSatInfoPsy);
+ }
+
+// ---------------------------------------------------------
+// CPosTp4722::SetupProxyPSYsL
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CT_LbsClientPosTp4722::SetupProxyPSYsL()
+ {
+ CPosModules* db = CPosModules::OpenL();
+ CleanupStack::PushL(db);
+
+ CPosModuleUpdate* moduleUpdate = CPosModuleUpdate::NewLC();
+
+ moduleUpdate->SetUpdateAvailability(EFalse);
+
+ CPosModuleIdList* prioList = db->ModuleIdListLC();
+
+ // Disable all PSY:s except PSYs used by this test case
+
+ for (TInt i = 0 ; i < prioList->Count(); i++)
+ {
+ if ((*prioList)[i] != iUidMultiPsy &&
+ (*prioList)[i] != iUidSatInfoPsy)
+ {
+ db->UpdateModuleL((*prioList)[i], *moduleUpdate);
+ }
+ }
+ moduleUpdate->SetUpdateAvailability(ETrue);
+ db->UpdateModuleL(iUidMultiPsy, *moduleUpdate);
+ db->UpdateModuleL(iUidSatInfoPsy, *moduleUpdate);
+
+ db->SetModulePriorityL(iUidMultiPsy, 0);
+ db->SetModulePriorityL(iUidSatInfoPsy, 1);
+
+ CleanupStack::PopAndDestroy(prioList);
+ CleanupStack::PopAndDestroy(moduleUpdate);
+ CleanupStack::PopAndDestroy(db);
+ }
+
+// End of File
+
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/lbsclient/src/ctlbsclientpostp4723.cpp Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,144 @@
+// Copyright (c) 2001-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:
+//
+
+
+
+// INCLUDES
+#include "ctlbsclientpostp4723.h"
+#include <EPos_CPosModules.h>
+#include <EPos_CPosModuleUpdate.h>
+#include <EPos_CPosModuleIdList.h>
+
+// ================= MEMBER FUNCTIONS =======================
+
+// ---------------------------------------------------------
+// Constructor.
+// ---------------------------------------------------------
+CT_LbsClientPosTp4723::CT_LbsClientPosTp4723(CT_LbsServer& aParent): CT_LbsPortedStepBase(aParent)
+ {
+ _LIT(KTestName, "TP4723 - Default Proxy -Configure working GPS PSY");
+ SetTestStepName(KTestName);
+ }
+
+// ---------------------------------------------------------
+// Destructor.
+// ---------------------------------------------------------
+CT_LbsClientPosTp4723::~CT_LbsClientPosTp4723()
+ {
+ }
+
+// ---------------------------------------------------------
+// CPosTp4723::CloseTest
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CT_LbsClientPosTp4723::CloseTest()
+ {
+ ClosePositioner();
+ Disconnect();
+ }
+
+// ---------------------------------------------------------
+// CPosTp4723::StartL
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CT_LbsClientPosTp4723::StartL()
+ {
+ ConnectL();
+ SetupProxyPSYsL();
+
+ TPositionModuleId modId = iUidSatInfoPsy;
+ CRepository* repos = CRepository::NewL( KCRUidDefaultProxyConfiguration );
+ TBuf<40> idBuf;
+ idBuf.AppendNumFixedWidth( modId.iUid, EHex, 8);
+ TInt error = repos->Set(KDefaultProxyLastWorkingGpsPsy, idBuf);
+ delete repos;
+ User::LeaveIfError(error);
+
+ TInt err = OpenPositioner();
+ _LIT(KOpenErr, "Error when opening positioner, %d");
+ AssertTrueL(err == KErrNone, KOpenErr, err);
+
+ _LIT(KServiceName, "TP4723");
+ iPositioner.SetRequestor(CRequestor::ERequestorService,
+ CRequestor::EFormatApplication, KServiceName);
+
+ TPositionSatelliteInfo posInfo;
+ // Request value should be 4722, even for TP4723...
+ TInt request = 4722;
+
+ // Default PSY won't pre-load Multi PSY since it is Internal
+ VerifyPsyUnloadedL(iUidMultiPsy);
+ // Default PSY should pre-load SetInfo PSY since it is External and supports GPS
+ VerifyPsyLoadedL(iUidSatInfoPsy);
+
+ /////////////////////////////////////////////
+ // Request 1
+ /////////////////////////////////////////////
+ RequestL(posInfo, request, KEspectedErrorCodePSY1);
+
+ VerifyPositionFromL(posInfo, iUidSatInfoPsy);
+ VerifyRequestTimeLessThanL(1200000);
+
+ VerifyPsyLoadedL(iUidSatInfoPsy);
+
+ VerifyPositionL(posInfo, 40, 50, 60);
+ }
+
+// ---------------------------------------------------------
+// CPosTp4723::SetupProxyPSYsL
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CT_LbsClientPosTp4723::SetupProxyPSYsL()
+ {
+ CPosModules* db = CPosModules::OpenL();
+ CleanupStack::PushL(db);
+
+ CPosModuleUpdate* moduleUpdate = CPosModuleUpdate::NewLC();
+
+ moduleUpdate->SetUpdateAvailability(EFalse);
+
+ CPosModuleIdList* prioList = db->ModuleIdListLC();
+
+ // Disable all PSY:s except PSYs used by this test case
+
+ for (TInt i = 0 ; i < prioList->Count(); i++)
+ {
+ if ((*prioList)[i] != iUidMultiPsy &&
+ (*prioList)[i] != iUidSatInfoPsy)
+ {
+ db->UpdateModuleL((*prioList)[i], *moduleUpdate);
+ }
+ }
+ moduleUpdate->SetUpdateAvailability(ETrue);
+ db->UpdateModuleL(iUidMultiPsy, *moduleUpdate);
+ db->UpdateModuleL(iUidSatInfoPsy, *moduleUpdate);
+
+ db->SetModulePriorityL(iUidMultiPsy, 0);
+ db->SetModulePriorityL(iUidSatInfoPsy, 1);
+
+ CleanupStack::PopAndDestroy(prioList);
+ CleanupStack::PopAndDestroy(moduleUpdate);
+ CleanupStack::PopAndDestroy(db);
+ }
+
+// End of File
+
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/lbsclient/src/ctlbsclientpostp76.cpp Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,261 @@
+// Copyright (c) 2001-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:
+//
+
+
+
+
+// INCLUDES
+#include "ctlbsclientpostp76.h"
+#include <badesca.h>
+#include <EPos_CPosModules.h>
+#include <EPos_CPosModuleUpdate.h>
+#include <EPos_CPosModuleIdList.h>
+
+// CONSTANTS
+
+// ================= MEMBER FUNCTIONS =======================
+
+// ---------------------------------------------------------
+// Constructor.
+// ---------------------------------------------------------
+CT_LbsClientPosTp76::CT_LbsClientPosTp76(CT_LbsServer& aParent): CT_LbsPortedStepBase(aParent)
+ {
+ _LIT(KTestName,"TP76 - Get module data");
+ SetTestStepName(KTestName);
+ }
+
+// ---------------------------------------------------------
+// Destructor.
+// ---------------------------------------------------------
+CT_LbsClientPosTp76::~CT_LbsClientPosTp76()
+ {
+ }
+
+// ---------------------------------------------------------
+// CT_LbsClientPosTp76::StartL
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CT_LbsClientPosTp76::StartL()
+ {
+ // Open connection to Epos
+ RPositionServer posServer;
+ CleanupClosePushL(posServer);
+ TInt err = posServer.Connect();
+ _LIT(KConnectError, "TP76. Unable to open connection to Epos, return code %d");
+ AssertTrueSecL(err == KErrNone, KConnectError, err);
+
+ // Set priority for those psys that will be used in this tp.
+ // The order will be testpsy1(externalgps),testpsy2,testpsy3
+ TUid uidPsy1 = iUidTestPsy1;
+ TUid uidPsy2 = iUidTestPsy2;
+ TUid uidPsy3 = iUidTestPsy3;
+
+ SetupPsyL(uidPsy1); // will disable all except uidPsy1
+
+ CPosModules* db = CPosModules::OpenL();
+ CleanupStack::PushL(db);
+
+ // Enable the PSY test psys
+ CPosModuleUpdate* moduleUpdate = CPosModuleUpdate::NewLC();
+ moduleUpdate -> SetUpdateAvailability(ETrue);
+ db->SetModulePriorityL(uidPsy1, 0);
+ db->SetModulePriorityL(uidPsy2, 1);
+ db->SetModulePriorityL(uidPsy3, 1);
+ db->UpdateModuleL(uidPsy1, *moduleUpdate);
+ db->UpdateModuleL(uidPsy2, *moduleUpdate);
+ db->UpdateModuleL(uidPsy3, *moduleUpdate);
+ CleanupStack::PopAndDestroy(moduleUpdate);
+
+ // Setup the PSY:s in the correct order
+ CPosModuleIdList* prioList = db->ModuleIdListLC();
+ TInt numModules = prioList->Count();
+ TPositionModuleInfo modInfoPsy2; //used to comapre that the same result is returned.
+ db -> GetModuleInfoL(uidPsy2, modInfoPsy2);
+ CleanupStack::PopAndDestroy(2); // db, prioList
+
+ // Get default positioning module info. (testpsy1 or externalgps)
+ TPositionModuleInfo modInfo;
+ TPositionModuleId defaultId;
+ err = posServer.GetDefaultModuleId(defaultId);
+ _LIT(KDefaultModuleId, "Not possible to get default module id");
+ AssertTrueSecL(err == KErrNone, KDefaultModuleId, err);
+ // Check that the correct id was returned.
+ if (defaultId != uidPsy1)
+ {
+ _LIT(KErrorWrongModule, "Default module was not returned in GetDefaultModuleId()");
+ LogErrorAndLeaveL(KErrorWrongModule);
+ }
+
+ // Get default module info by using the id returned.
+ err = posServer.GetModuleInfoById(defaultId, modInfo);
+ _LIT(KGetDefPosModInfoError,
+ "TP76. Error occured at GetModuleInfoById, return code %d");
+ AssertTrueSecL(err == KErrNone, KGetDefPosModInfoError, err);
+ // Check if the received psy is the right one
+ _LIT(KIncorrectPsyError,
+ "TP76. Incorrect PSY returned from Epos.");
+ AssertTrueL(uidPsy1 == modInfo.ModuleId(), KIncorrectPsyError);
+ /////END TEST DEFAULT/////
+
+ /////////////////////////////////
+ ///// TestGetModuleInfoById /////
+ /////////////////////////////////
+
+ // Get info from specific psy (testpsy2)
+ _LIT(KGetPosModInfoError, "Wrong data received from Epos");
+ err = posServer.GetModuleInfoById(uidPsy2, modInfo);
+ AssertTrueSecL(err == 0, KGetPosModInfoError, err);
+ AssertTrueL(modInfo.ModuleId() == uidPsy2, KGetPosModInfoError);
+ CheckModuleInfoL(modInfoPsy2, modInfo);
+ /////END TEST GetModuleInfoById/////
+
+ /////////////////////////////////////
+ ///// Test GetModuleInfoByIndex /////
+ /////////////////////////////////////
+
+ // Get info from the testpsys (testpsy1, testpsy2, testpsy3)
+ TPositionModuleId id1;
+ TPositionModuleId id2;
+ TPositionModuleId id3;
+ TUint count;
+ err = posServer.GetNumModules(count);
+ _LIT(KNumPosModInfoError,
+ "TP76. Error occured at GetNumModules error code returned, return code %d");
+ AssertTrueSecL(err == 0,KNumPosModInfoError,err);
+ _LIT(KIncorrectNoOfModules,
+ "TP76. Incorrect number of modules.");
+ TUint no = (TUint) numModules; //Bad API implementation
+ AssertTrueL(count == no, KIncorrectNoOfModules);
+
+ err = posServer.GetModuleInfoByIndex(0, modInfo);
+ AssertTrueSecL(err == KErrNone, KGetDefPosModInfoError, err);
+ id1 = modInfo.ModuleId();
+ if (!(id1 == uidPsy1 ||
+ id1 == uidPsy2 ||
+ id1 == uidPsy3))
+ {
+ LogErrorAndLeaveL(KGetPosModInfoError);
+ }
+
+ err = posServer.GetModuleInfoByIndex(1, modInfo);
+ AssertTrueSecL(err == 0, KGetDefPosModInfoError, err);
+ id2 = modInfo.ModuleId();
+ if (!(id2 == uidPsy1 ||
+ id2 == uidPsy2 ||
+ id2 == uidPsy3))
+ {
+ LogErrorAndLeaveL(KGetPosModInfoError);
+ }
+
+ err = posServer.GetModuleInfoByIndex(2, modInfo);
+ AssertTrueSecL(err == 0, KGetDefPosModInfoError, err);
+ id3 = modInfo.ModuleId();
+ if (!(id3 == uidPsy1 ||
+ id3 == uidPsy2 ||
+ id3 == uidPsy3))
+ {
+ LogErrorAndLeaveL(KGetPosModInfoError);
+ }
+
+ // Assuming that only 3 PSYs are installed
+ err = posServer.GetModuleInfoByIndex(3, modInfo);
+ AssertTrueSecL(err == 0, KGetDefPosModInfoError, err);
+
+ ///// END TEST GetModuleInfoByIndex /////
+
+ CleanupStack::PopAndDestroy(); //posServer
+ }
+
+// ---------------------------------------------------------
+// CT_LbsClientPosTp76::CheckModuleInfoL
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CT_LbsClientPosTp76::CheckModuleInfoL(const TPositionModuleInfo& dbInfo,
+ const TPositionModuleInfo& clientInfo)
+ {
+ _LIT(KNotSame, "Module Info from settings is not the same as when read by GetModuleInfoById");
+ if (dbInfo.IsAvailable() != clientInfo.IsAvailable() ||
+ dbInfo.ModuleId() != clientInfo.ModuleId() ||
+ dbInfo.DeviceLocation() != clientInfo.DeviceLocation() ||
+ dbInfo.Capabilities() != clientInfo.Capabilities() ||
+ dbInfo.TechnologyType() != clientInfo.TechnologyType() ||
+ dbInfo.Version().iBuild != clientInfo.Version().iBuild ||
+ dbInfo.Version().iMajor != clientInfo.Version().iMajor ||
+ dbInfo.Version().iMinor != clientInfo.Version().iMinor ||
+ dbInfo.Version().Name() != clientInfo.Version().Name() ||
+ dbInfo.ClassesSupported(EPositionInfoFamily) != clientInfo.ClassesSupported(EPositionInfoFamily))
+ {
+ LogErrorAndLeaveL(KNotSame);
+ }
+ TPositionQuality dbQuality;
+ TPositionQuality clientQuality;
+ dbInfo.GetPositionQuality(dbQuality);
+ clientInfo.GetPositionQuality(clientQuality);
+ if (dbQuality.TimeToFirstFix() != clientQuality.TimeToFirstFix() ||
+ dbQuality.TimeToNextFix() != clientQuality.TimeToNextFix() ||
+ dbQuality.HorizontalAccuracy() != clientQuality.HorizontalAccuracy() ||
+ dbQuality.VerticalAccuracy() != clientQuality.VerticalAccuracy() ||
+ dbQuality.CostIndicator() != clientQuality.CostIndicator() ||
+ dbQuality.PowerConsumption() != clientQuality.PowerConsumption() )
+ {
+ LogErrorAndLeaveL(KNotSame);
+ }
+
+
+ TBuf<30> name1;
+ TBuf<30> name2;
+ dbInfo.GetModuleName(name1);
+ clientInfo.GetModuleName(name2);
+ if (name1 != name2)
+ {
+ LogErrorAndLeaveL(KNotSame);
+ }
+ }
+
+
+// ---------------------------------------------------------
+// CT_LbsClientPosTp76::AssertTrueL
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CT_LbsClientPosTp76::AssertTrueL(TBool aCondition, const TDesC& aErrorMsg)
+ {
+ if (!aCondition)
+ {
+ LogErrorAndLeaveL(aErrorMsg);
+ }
+ }
+
+
+// ---------------------------------------------------------
+// CT_LbsClientPosTp76::AssertTrueSecL
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CT_LbsClientPosTp76::AssertTrueSecL(TBool aCondition, const TDesC& aErrorMsg, TInt aErrorCode)
+ {
+ if (!aCondition)
+ {
+ TBuf<100> buf;
+ buf.Format(aErrorMsg, aErrorCode);
+ LogErrorAndLeaveL(buf);
+ }
+ }
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/lbsclient/src/ctlbsclientpostp93.cpp Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,229 @@
+// Copyright (c) 2001-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:
+//
+
+
+
+// INCLUDES
+#include "ctlbsclientpostp93.h"
+#include "ctlbsclientperiodictester.h"
+
+// CONSTANTS
+_LIT(KServiceName1, " aaaaaaaaaaa");
+_LIT(KServiceName2, " bbbbbbbbbbb");
+_LIT(KServiceName3, " ccccccccccc");
+
+// ================= MEMBER FUNCTIONS =======================
+
+// ---------------------------------------------------------
+// Constructor.
+// ---------------------------------------------------------
+CT_LbsClientPosTp93::CT_LbsClientPosTp93(CT_LbsServer& aParent): CT_LbsPortedStepBase(aParent)
+ {
+ _LIT(KTestName,"TP93 - Periodic Updates, Multiple clients");
+ SetTestStepName(KTestName);
+ }
+
+// ---------------------------------------------------------
+// Destructor.
+// ---------------------------------------------------------
+CT_LbsClientPosTp93::~CT_LbsClientPosTp93()
+ {
+ }
+
+// ---------------------------------------------------------
+// CT_LbsClientPosTp93::CloseTest
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CT_LbsClientPosTp93::CloseTest()
+ {
+ iRequestArray.Reset();
+ iNameArray.Reset();
+ iRequestArray.Close();
+ iNameArray.Close();
+
+ }
+
+// ---------------------------------------------------------
+// CT_LbsClientPosTp93::StartL
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CT_LbsClientPosTp93::StartL()
+ {
+ SetupPsyL(iUidMultiPsy);
+
+ TPtrC name1(KServiceName1);
+ TPtrC name2(KServiceName2);
+ TPtrC name3(KServiceName3);
+
+ iNameArray.Append(name1);
+ iNameArray.Append(name2);
+ iNameArray.Append(name3);
+
+ TInt numberOfRuns = 25;
+ TTimeIntervalMicroSeconds interval1 = TTimeIntervalMicroSeconds(1000000);
+ TTimeIntervalMicroSeconds interval3 = TTimeIntervalMicroSeconds(3000000);
+ TTimeIntervalMicroSeconds interval5 = TTimeIntervalMicroSeconds(5000000);
+ TTimeIntervalMicroSeconds interval11 = TTimeIntervalMicroSeconds(11000000);
+ TTimeIntervalMicroSeconds interval13 = TTimeIntervalMicroSeconds(13000000);
+ TTimeIntervalMicroSeconds interval17 = TTimeIntervalMicroSeconds(17000000);
+
+
+ TUid uid = iUidMultiPsy;
+ TInt errorsFound = KErrNone;
+
+ CT_LbsClientPeriodicTester* periodicTester1 =
+ CT_LbsClientPeriodicTester::NewL(interval1,
+ KServiceName1,
+ iLog,
+ uid,
+ numberOfRuns);
+ CleanupStack::PushL(periodicTester1);
+
+ CT_LbsClientPeriodicTester* periodicTester2 =
+ CT_LbsClientPeriodicTester::NewL(interval3,
+ KServiceName2,
+ iLog,
+ uid,
+ numberOfRuns);
+ CleanupStack::PushL(periodicTester2);
+
+ CT_LbsClientPeriodicTester* periodicTester3 =
+ CT_LbsClientPeriodicTester::NewL(interval5,
+ KServiceName3,
+ iLog,
+ uid,
+ numberOfRuns);
+ CleanupStack::PushL(periodicTester3);
+
+ periodicTester1->RequestNotification();
+ periodicTester2->RequestNotification();
+ periodicTester3->RequestNotification();
+
+ // Active scheduler is stopped three times.
+ CActiveScheduler::Start();
+ CActiveScheduler::Start();
+ CActiveScheduler::Start();
+
+ if (!periodicTester1->IsCompletedOK() ||
+ !periodicTester2->IsCompletedOK() ||
+ !periodicTester3->IsCompletedOK())
+ {
+ _LIT(KErr, "ERROR: periodicTester1-3 returned error");
+ INFO_PRINTF1(KErr);
+ errorsFound++;
+ }
+
+ CleanupStack::PopAndDestroy(3, periodicTester1);
+
+ CT_LbsClientPeriodicTester* periodicTester4 =
+ CT_LbsClientPeriodicTester::NewL(interval3,
+ KServiceName1,
+ iLog,
+ uid,
+ numberOfRuns);
+ CleanupStack::PushL(periodicTester4);
+
+ CT_LbsClientPeriodicTester* periodicTester5 =
+ CT_LbsClientPeriodicTester::NewL(interval3,
+ KServiceName2,
+ iLog,
+ uid,
+ numberOfRuns);
+ CleanupStack::PushL(periodicTester5);
+
+ CT_LbsClientPeriodicTester* periodicTester6 =
+ CT_LbsClientPeriodicTester::NewL(interval3,
+ KServiceName3,
+ iLog,
+ uid,
+ numberOfRuns);
+ CleanupStack::PushL(periodicTester6);
+
+ periodicTester4->RequestNotification();
+ periodicTester5->RequestNotification();
+ periodicTester6->RequestNotification();
+
+ // Active scheduler is stopped three times.
+ CActiveScheduler::Start();
+ CActiveScheduler::Start();
+ CActiveScheduler::Start();
+
+ if (!periodicTester4->IsCompletedOK() ||
+ !periodicTester5->IsCompletedOK() ||
+ !periodicTester6->IsCompletedOK())
+ {
+ _LIT(KErr, "ERROR: periodicTester4-6 returned error");
+ INFO_PRINTF1(KErr);
+ errorsFound++;
+ }
+
+ CleanupStack::PopAndDestroy(3, periodicTester4);
+
+ CT_LbsClientPeriodicTester* periodicTester7 =
+ CT_LbsClientPeriodicTester::NewL(interval11,
+ KServiceName1,
+ iLog,
+ uid,
+ numberOfRuns);
+ CleanupStack::PushL(periodicTester7);
+
+ CT_LbsClientPeriodicTester* periodicTester8 =
+ CT_LbsClientPeriodicTester::NewL(interval13,
+ KServiceName2,
+ iLog,
+ uid,
+ numberOfRuns);
+ CleanupStack::PushL(periodicTester8);
+
+ CT_LbsClientPeriodicTester* periodicTester9 =
+ CT_LbsClientPeriodicTester::NewL(interval17,
+ KServiceName3,
+ iLog,
+ uid,
+ numberOfRuns);
+ CleanupStack::PushL(periodicTester9);
+
+ periodicTester7->RequestNotification();
+ periodicTester8->RequestNotification();
+ periodicTester9->RequestNotification();
+
+ // Active scheduler is stopped three times.
+ CActiveScheduler::Start();
+ CActiveScheduler::Start();
+ CActiveScheduler::Start();
+
+ if (!periodicTester7->IsCompletedOK() ||
+ !periodicTester8->IsCompletedOK() ||
+ !periodicTester9->IsCompletedOK())
+ {
+ _LIT(KErr, "ERROR : periodicTester7-9 returned error");
+ INFO_PRINTF1(KErr);
+ errorsFound++;
+ }
+
+ CleanupStack::PopAndDestroy(3, periodicTester7);
+
+ if (errorsFound != KErrNone)
+ {
+ _LIT(KErr, "Errors returned from some periodicTester");
+ LogErrorAndLeaveL(KErr);
+ }
+ }
+
+// End of File
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/lbsclient/src/ctlbsclientserver.cpp Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,281 @@
+// 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 CT_LbsClientServer.cpp
+// This is the class implementation for the LBS Client Test Server
+//
+//
+
+// User includes
+#include "ctlbsclientserver.h"
+
+// System includes
+#include <e32std.h>
+#include <rsshared.h>
+
+// Header files of LBS Client API Test Steps
+#include "ctlbsstepconfighybridmodule.h"
+#include "ctlbsclientstepsrvconnectclose.h"
+#include "ctlbsclientstepnotifyposupdate.h"
+#include "ctlbsclientstepcellbasednpud.h"
+#include "ctlbsclientstepopenclose.h"
+#include "ctlbsclientstepsrvversion.h"
+#include "ctlbsclientstepmodselect.h"
+#include "ctlbsclientstepmodinfo.h"
+#include "ctlbsclientsteplastknownpos.h"
+#include "ctlbsclientstepmultireq.h"
+#include "ctlbsclientstepmodstatus.h"
+#include "ctlbsclientstepupdateoptions.h"
+#include "ctlbsclientstepassistance.h"
+#include "ctlbsclientsteppartialupdate.h"
+#include "ctlbsclientsteptracking.h"
+#include "ctlbsclientstepignoreaccurracysetting.h"
+#include "ctlbsclientstepignoreaccurracysettingtracking.h"
+#include "ctlbsclientstep_reset_assistance.h"
+
+/**
+ MainL()
+ Description : This is the main function which installs the
+ active scheduler and creates an object of the Email server
+ @internalTechnology
+ @param none
+ @return none
+ @pre None
+ @post None
+*/
+LOCAL_C void MainL()
+ {
+ __UHEAP_MARK;
+ CActiveScheduler* sched = new (ELeave) CActiveScheduler;
+ CleanupStack::PushL(sched);
+ CActiveScheduler::Install(sched);
+
+ __UHEAP_MARK;
+ // this registers the server with the active scheduler and calls SetActive
+ CT_LbsClientServer* server = CT_LbsClientServer::NewL();
+
+ // signal to the client that we are ready by
+ // rendevousing process
+ RProcess::Rendezvous(KErrNone);
+
+ // run the active scheduler
+ sched->Start();
+
+ // clean up
+ delete server;
+
+ __UHEAP_MARKEND;
+
+ CleanupStack::PopAndDestroy(sched);
+ __UHEAP_MARKEND;
+ }
+
+
+
+
+/**
+ E32Main()
+ Description : It is the entry point
+ @internalTechnology
+ @param none
+ @return Returns the error code
+ @pre None
+ @post None
+*/
+GLDEF_C TInt E32Main()
+ {
+ __UHEAP_MARK;
+ CTrapCleanup* cleanup = CTrapCleanup::New();
+ if(cleanup == NULL)
+ {
+ return KErrNoMemory;
+ }
+
+ TRAPD(err, MainL());
+
+ delete cleanup;
+ __UHEAP_MARKEND;
+
+ return err;
+ }
+
+
+
+/**
+ NewL()
+ Constructs a CT_LbsClientServer object.
+ Uses two phase construction and leaves nothing on the CleanupStack.
+ @internalTechnology
+ @param none
+ @return Created object of type CT_LbsClientServer
+ @pre None
+ @post None
+*/
+CT_LbsClientServer* CT_LbsClientServer::NewL()
+ {
+ CT_LbsClientServer*server = new(ELeave) CT_LbsClientServer();
+ CleanupStack::PushL(server);
+ server->ConstructL(KLbsClientTestServer);
+ CleanupStack::Pop(server);
+ return server;
+ }
+
+
+CT_LbsClientServer::~CT_LbsClientServer()
+ {
+ // DELETE EVERYTHIGN THAT IS ALLOCATED IN THE ConstructL(!)
+ delete iSharedData;
+ iSharedData = NULL;
+ }
+
+
+/**
+ Function : CT_LbsClientServer
+ Description : Constructor
+ @internalTechnology
+ @param :
+ @return : N/A
+ @precondition : none
+ @postcondition : none
+*/
+CT_LbsClientServer::CT_LbsClientServer()
+ {
+ }
+
+/**
+ Function : ConstructL
+ Description :
+ @internalTechnology
+ @param :
+ @return : N/A
+ @precondition : none
+ @postcondition : none
+*/
+void CT_LbsClientServer::ConstructL(const TDesC& aName)
+ {
+ CT_LbsServer::ConstructL(aName);
+
+ iSharedData = CT_LbsSharedData::NewL();
+ }
+
+
+/**
+ Function : CreateTestStep
+ Description : Creates a test step based on the step name read from the script file
+ @internalTechnology
+ @param : aStepName The step name which needs to be created
+ @return : Created object of type CTestStep
+ @precondition : none
+ @postcondition : none
+*/
+CTestStep* CT_LbsClientServer::CreateTestStep(const TDesC& aStepName)
+ {
+ // NULL if insufficient memory. This suits the API.
+
+ // Test case test steps, each test step supports one or more test cases.
+ if(aStepName == KLbsStep_ConfigHybridModule)
+ {
+ return CT_LbsStep_ConfigHybridModule::New(*this);
+ }
+
+ if(aStepName == KLbsClientStep_SrvConnectClose)
+ {
+ return CT_LbsClientStep_SrvConnectClose::New(*this);
+ }
+
+ if(aStepName == KLbsClientStep_OpenClose)
+ {
+ return CT_LbsClientStep_OpenClose::New(*this);
+ }
+
+ if(aStepName == KLbsClientStep_SrvVersion)
+ {
+ return CT_LbsClientStep_SrvVersion::New(*this);
+ }
+
+ if(aStepName == KLbsClientStep_NotifyPosUpdate)
+ {
+ return CT_LbsClientStep_NotifyPosUpdate::New(*this);
+ }
+
+ if(aStepName == KLbsClientStep_CellBasedNotifyPosUpdate)
+ {
+ return CT_LbsClientStep_CellBasedNotifyPosUpdate::New(*this);
+ }
+
+ if(aStepName == KLbsClientStep_ModSelect)
+ {
+ return CT_LbsClientStep_ModSelect::New(*this);
+ }
+
+ if(aStepName == KLbsClientStep_ModInfo)
+ {
+ return CT_LbsClientStep_ModInfo::New(*this);
+ }
+
+ if(aStepName == KLbsClientStep_LastKnownPos)
+ {
+ return CT_LbsClientStep_LastKnownPos::New(*this);
+ }
+
+ if(aStepName == KLbsClientStep_MultiReq)
+ {
+ return CT_LbsClientStep_MultiReq::New(*this);
+ }
+
+ if(aStepName == KLbsClientStep_ModStatus)
+ {
+ return CT_LbsClientStep_ModStat::New(*this);
+ }
+
+ if(aStepName == KLbsClientStep_UpdateOptions)
+ {
+ return CT_LbsClientStep_UpdateOptions::New(*this);
+ }
+
+ if(aStepName == KLbsClientStep_Assistance)
+ {
+ return CT_LbsClientStep_Assistance::New(*this);
+ }
+
+ if(aStepName == KLbsClientStep_PartialUpdate)
+ {
+ return CT_LbsClientStep_PartialUpdate::New(*this);
+ }
+ if(aStepName == KLbsClientStep_IgnoreAccuracySetting)
+ {
+ return CT_LbsClientStep_IgnoreAccuracySetting::New(*this);
+ }
+ if(aStepName == KLbsClientStep_IgnoreAccuracySettingTracking)
+ {
+ return CT_LbsClientStep_IgnoreAccuracySettingTracking::New(*this);
+ }
+
+ if (aStepName == KLbsClientStep_Tracking)
+ {
+ return CT_LbsClientStep_Tracking::New(*this);
+ }
+
+ if (aStepName == KLbsClientStep_Tracking)
+ {
+ return CT_LbsClientStep_Tracking::New(*this);
+ }
+
+ if (aStepName == KLbsClientStep_ResetAssistance)
+ {
+ return CT_LbsClientStep_ResetAssistance::New(*this);
+ }
+
+ // Let base class handle any common test steps - will return NULL if test step is not supported.
+ return CT_LbsServer::CreateTestStep(aStepName);
+ }
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/lbsclient/src/ctlbsclientshareddata.cpp Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,89 @@
+// 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 CT_LbsClientSharedData.cpp
+// This file contains the shared data class for the Lbs Client Test server
+//
+//
+
+
+#include "ctlbsclientshareddata.h"
+
+
+/**
+ Function : NewL
+ Description : Constructor
+ @internalTechnology
+ @param :
+ @return : N/A
+ @precondition : none
+ @postcondition : none
+*/
+CT_LbsClientSharedData* CT_LbsClientSharedData::NewL()
+ {
+ CT_LbsClientSharedData* sharedData=new(ELeave) CT_LbsClientSharedData();
+ CleanupStack::PushL(sharedData);
+ sharedData->ConstructL();
+ CleanupStack::Pop(sharedData);
+
+ return sharedData;
+ }
+
+
+/**
+ Function : ConstructL
+ Description : Constructor
+ @internalTechnology
+ @param :
+ @return : N/A
+ @precondition : none
+ @postcondition : none
+*/
+void CT_LbsClientSharedData::ConstructL()
+ {
+ }
+
+
+/**
+ Function : CT_LbsClientSharedData
+ Description : Constructor
+ @internalTechnology
+ @param :
+ @return : N/A
+ @precondition : none
+ @postcondition : none
+*/
+CT_LbsClientSharedData::CT_LbsClientSharedData()
+ {
+ }
+
+/**
+ Function : ~CT_LbsClientSharedData
+ Description : Destructor
+ @internalTechnology
+ @param :
+ @return : N/A
+ @precondition : none
+ @postcondition : none
+*/
+CT_LbsClientSharedData::~CT_LbsClientSharedData()
+ {
+ // Clear arrays.
+ for (TInt i = 0; i < iVerifyPosInfoArr.Count(); ++i)
+ delete iVerifyPosInfoArr[i];
+ iVerifyPosInfoArr.Close();
+
+ for (TInt i = 0; i < iCurrentPosInfoArr.Count(); ++i)
+ delete iCurrentPosInfoArr[i];
+ iCurrentPosInfoArr.Close();
+ }
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/lbsclient/src/ctlbsclientstep.cpp Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,202 @@
+// 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 CT_LbsClientStep.cpp
+// This is the class implementation for the LBS Client Test Step Base
+//
+//
+
+#include "ctlbsclientstep.h"
+
+#include "tlbsutils.h"
+#include "ctlbsasyncwaiter.h"
+
+
+#define REFPOS_LAT 52.2
+#define REFPOS_LONG 0.2
+#define REFPOS_ALT 10
+#define REFPOS_HORZ_ACCURACY 100
+#define REFPOS_VERT_ACCURACY 100
+
+/**
+ * @return - TVerdict
+ * Implementation of CTestStep base class virtual
+ * It is used for doing all initialisation common to derived classes in here.
+ * Make it being able to leave if there are any errors here as there's no point in
+ * trying to run a test step if anything fails.
+ * The leave will be picked up by the framework.
+ */
+TVerdict CT_LbsClientStep::doTestStepPreambleL()
+ {
+ // Process some common pre setting to test steps then set SetTestStepResult to EFail or Epass.
+ INFO_PRINTF1(_L(">>CT_LbsClientStep::doTestStepPreambleL()"));
+ SetTestStepResult(EPass);
+
+ return TestStepResult();
+ }
+
+
+/**
+ * @return - TVerdict
+ * Implementation of CTestStep base class virtual
+ * It is used for doing all after test treatment common to derived classes in here.
+ * Make it being able to leave
+ * The leave will be picked up by the framework.
+ */
+TVerdict CT_LbsClientStep::doTestStepPostambleL()
+ {
+ // Process some common post setting to test steps then set SetTestStepResult to EFail or Epass.
+ INFO_PRINTF1(_L(">>CT_LbsClientStep::doTestStepPostabmleL()"));
+
+ //SetTestStepResult(EPass); // or EFail
+ return TestStepResult();
+ }
+
+
+CT_LbsClientStep::~CT_LbsClientStep()
+ {
+ }
+
+
+CT_LbsClientStep::CT_LbsClientStep(CT_LbsClientServer& aParent) : iParent(aParent)
+ {
+ }
+
+
+TInt CT_LbsClientStep::DoNotifyUpdateL(TPositionInfoBase& aPosInfo)
+{
+ return GetLocationL(aPosInfo, EDoNotifyPosUpdate);
+}
+
+TInt CT_LbsClientStep::DoLastKnownPosL(TPositionInfoBase& aPosInfo)
+{
+ return GetLocationL(aPosInfo, EDoLastKnownPos);
+}
+
+
+TInt CT_LbsClientStep::GetLocationL(TPositionInfoBase& aPosInfo, TUint32 aNotifyCallType)
+{
+ // Use wrapper active object for the async call below.
+ CT_LbsAsyncWaiter* waiter = CT_LbsAsyncWaiter::NewL();
+ CleanupStack::PushL(waiter);
+
+ // Set requestor, note we use the same values as DUMMY_REQUESTOR so we don't have
+ // to include the header file from the test server, to keep code generic when test pos server goes.
+
+ // TODO: NOTE for the new server, there is no requirement to SetRequestor so we can
+ // remove later.
+ User::LeaveIfError(iPositioner.SetRequestor( CRequestor::ERequestorService,
+ CRequestor::EFormatApplication,
+ _L("Tom Tom")));
+
+ // Determine the position function to call and get the actual position
+ if (EDoNotifyPosUpdate == aNotifyCallType)
+ {
+ iPositioner.NotifyPositionUpdate(aPosInfo, waiter->iStatus);
+ }
+ else if (EDoLastKnownPos == aNotifyCallType)
+ {
+ iPositioner.GetLastKnownPosition(aPosInfo, waiter->iStatus);
+ }
+
+ else
+ User::LeaveIfError(KErrArgument);
+
+ // Wait for and process the result.
+ waiter->StartAndWait();
+
+ TInt err = waiter->Result();
+ if (KErrNone == err)
+ {
+ INFO_PRINTF1(_L("position obtained successfully"));
+
+ const TPositionInfo& posInfo = reinterpret_cast<const TPositionInfo&>(aPosInfo);
+
+
+ TPosition pos;
+ posInfo.GetPosition(pos);
+ TReal32 lat = pos.Latitude();
+ TReal32 lng = pos.Longitude();
+ TReal32 hac = pos.HorizontalAccuracy();
+ TReal vac = pos.VerticalAccuracy();
+
+ INFO_PRINTF2(_L("lat: %f"),lat);
+ INFO_PRINTF2(_L("lng: %f"),lng);
+ INFO_PRINTF2(_L("hac: %f"),hac);
+ INFO_PRINTF2(_L("vac: %f"),vac);
+
+ }
+ else
+ {
+ INFO_PRINTF2(_L("position update failed with error %d"), err);
+ }
+
+ CleanupStack::PopAndDestroy(waiter);
+
+ return err;
+}
+
+
+
+TInt CT_LbsClientStep::OpenNetSim()
+ {
+ // Connect to net sim.
+ TInt err = iNetSim.ConnectL(NULL);
+ if (err)
+ {
+ return err;
+ }
+
+
+ // Set the reference position, which also be used for any required verification.
+ iRefPos.SetCoordinate(REFPOS_LAT, REFPOS_LONG, REFPOS_ALT);
+ iRefPos.SetAccuracy(REFPOS_HORZ_ACCURACY, REFPOS_VERT_ACCURACY);
+ iRefPos.SetCurrentTime();
+
+ if (!iNetSim.SetReferenceLocation(iRefPos))
+ {
+ iNetSim.Close();
+
+ return KErrGeneral;
+ }
+
+
+ // Set plugin to use.
+ TUid pluginUid;
+ if(iParent.iSharedData->iTestModuleInUse)
+ {
+ pluginUid = TUid::Uid(KSimpleAssistanceDataProviderPluginUidValue);
+ }
+ else
+ {
+ pluginUid = TUid::Uid(KSuplAssistanceDataProviderPluginUidValue);
+ }
+ if (!iNetSim.SetAssistanceDataProvider(pluginUid))
+ {
+ iNetSim.Close();
+
+ return KErrGeneral;
+ }
+
+ return err;
+ }
+
+void CT_LbsClientStep::SendResetAssistanceData(TLbsAssistanceDataGroup aMask)
+ {
+ iNetSim.SendResetAssistanceData(aMask);
+ }
+
+void CT_LbsClientStep::CloseNetSim()
+ {
+ iNetSim.Close();
+ }
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/lbsclient/src/ctlbsclientstep_reset_assistance.cpp Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,258 @@
+// 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 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:
+// This is the class implementation for the Notify Position Update Tests
+//
+//
+
+#include "ctlbsclientstep_reset_assistance.h"
+
+#include <lbs.h>
+#include <lbssatellite.h>
+
+#include "tlbsutils.h"
+#include "ctlbsasyncwaiter.h"
+
+
+const TTimeIntervalMicroSeconds KModuleTimeout = 6000000;//makes test module time out(which should be more than the Maxtime in lbsprofile.ini)
+
+const TInt KNumberOfRequests = 10; // the number of requests to do to be near the average
+
+const TInt KWaitTimeForCoolDown = 10 * 1000 * 1000; // how long to wait to make sure the integration module gets turned off
+
+/**
+ * Sets a Requestor for now - TODO will be removed with new location server
+ */
+void CT_LbsClientStep_ResetAssistance::TempSetRequestorL()
+ {
+ User::LeaveIfError(iPositioner.SetRequestor( CRequestor::ERequestorService,
+ CRequestor::EFormatApplication,
+ _L("Tom Tom")));
+ }
+
+
+/**
+ * Destructor
+ */
+CT_LbsClientStep_ResetAssistance::~CT_LbsClientStep_ResetAssistance()
+ {
+ delete iLbsAdmin;
+ }
+
+
+/**
+ * Constructor
+ */
+CT_LbsClientStep_ResetAssistance::CT_LbsClientStep_ResetAssistance(CT_LbsClientServer& aParent) : CT_LbsClientStep(aParent),iLbsAdmin(NULL),iRequestedAssData(FALSE), iReceivedAssData(FALSE)
+ {
+
+ SetTestStepName(KLbsClientStep_ResetAssistance);
+ }
+
+
+/**
+Static Constructor
+*/
+CT_LbsClientStep_ResetAssistance* CT_LbsClientStep_ResetAssistance::New(CT_LbsClientServer& aParent)
+ {
+
+ // Note the lack of ELeave.
+ // This means that having insufficient memory will return NULL;
+
+ CT_LbsClientStep_ResetAssistance* testStep = new CT_LbsClientStep_ResetAssistance(aParent);
+ if (testStep)
+ {
+ TInt err = KErrNone;
+
+ TRAP(err, testStep->ConstructL());
+ if (err)
+ {
+ delete testStep;
+ testStep = NULL;
+ }
+ }
+ return testStep;
+ }
+
+
+void CT_LbsClientStep_ResetAssistance::ConstructL()
+ {
+ // create the admin
+ iLbsAdmin = CLbsAdmin::NewL();
+
+ }
+
+//from MT_NotifyPosUpdateObserver:
+/**
+ * Callback - called when NotifyPositionUpdate request completes
+ */
+
+void CT_LbsClientStep_ResetAssistance::NotifyPositionUpdateCallback(TRequestStatus& aStatus)
+ {
+ TInt err = aStatus.Int();
+ if (KErrCancel != err)
+ {
+ SetTestStepResult(EFail); // the request always gets cancelled (see test 0122)
+ }
+ CActiveScheduler::Stop();
+ }
+
+/**
+ * @return - TVerdict code
+ * Override of base class pure virtual
+ * Our implementation only gets called if the base class doTestStepPreambleL() did
+ * not leave. That being the case, the current test result value will be EPass.
+ */
+TVerdict CT_LbsClientStep_ResetAssistance::doTestStepL()
+ {
+ // Generic test step used to test the LBS Client Notify position update API.
+ INFO_PRINTF1(_L(">>CT_LbsClientStep_ResetAssistance::doTestStepL()"));
+
+ if (TestStepResult()==EPass)
+ {
+ TInt err = KErrNone;
+
+ iParent.iSharedData->iTestModuleInUse = EFalse;
+
+ // Connect to self locate server.
+ err = iServer.Connect();
+ User::LeaveIfError(err);
+ CleanupClosePushL(iServer);
+
+ // Setup netsim.
+ User::LeaveIfError(OpenNetSim());
+
+ TTimeIntervalMicroSeconds resetRequestTime;
+ resetRequestTime = DoRequests(EFalse, ETrue);
+ INFO_PRINTF2(_L("Requests from warm with reset assistance data took on average %d miliseconds to complete."), (resetRequestTime.Int64()/KNumberOfRequests)/1000);
+
+
+ TTimeIntervalMicroSeconds coldRequestTime;
+ coldRequestTime = DoRequests(ETrue, EFalse);
+ INFO_PRINTF2(_L("Requests from cold took on average %d miliseconds to complete."), (coldRequestTime.Int64()/KNumberOfRequests)/1000);
+
+ TTimeIntervalMicroSeconds warmRequestTime;
+ warmRequestTime = DoRequests(EFalse, EFalse);
+ INFO_PRINTF2(_L("Requests from warm took on average %d miliseconds to complete."), (warmRequestTime.Int64()/KNumberOfRequests)/1000);
+
+ INFO_PRINTF2(_L("Requests from warm with reset assistance data took on average %d miliseconds to complete."), (resetRequestTime.Int64()/KNumberOfRequests)/1000);
+ INFO_PRINTF2(_L("Requests from cold took on average %d miliseconds to complete."), (coldRequestTime.Int64()/KNumberOfRequests)/1000);
+/* if(warmRequestTime >= resetRequestTime/2 || resetRequestTime < (coldRequestTime*3)/4)
+ {
+ INFO_PRINTF1(_L("Reseting assistance data didn't fit into the right time frame"));
+ SetTestStepResult(EFail);
+ }
+*/
+ CloseNetSim();
+
+ // All done, clean up.
+ CleanupStack::PopAndDestroy(&iServer);
+ }
+
+ INFO_PRINTF1(_L("<<CT_LbsClientStep_ResetAssistance::doTestStepL()"));
+
+ return TestStepResult();
+ }
+
+TInt64 CT_LbsClientStep_ResetAssistance::DoRequests(TBool aCold, TBool aReset)
+ {
+ if(!aCold)
+ {
+ // *** Warming up module
+ // Open positioner.
+ TInt err = iPositioner.Open(iServer);
+ User::LeaveIfError(err);
+ CleanupClosePushL(iPositioner);
+
+ // Request notify for the expected reference position.
+ TPositionInfo actualRefPosInfo;
+ err = DoNotifyUpdateL(actualRefPosInfo);
+ if (KErrNone != err)
+ {
+ INFO_PRINTF2(_L("Failed test, reference position request returned err %d."), err);
+ SetTestStepResult(EFail);
+ }
+
+ TPositionInfo posInfo;
+ // Get the actual position
+ err = DoNotifyUpdateL(posInfo);
+ if (KErrNone != err)
+ {
+ INFO_PRINTF2(_L("Failed test, position request returned err %d."), err);
+ SetTestStepResult(EFail);
+ }
+ }
+
+ TTimeIntervalMicroSeconds requestTime;
+ requestTime = 0;
+ // *** Doing the repeated requests with reset assistance data in between if it's requested so
+ for(TInt count = 0; count < KNumberOfRequests; ++count)
+ {
+ if(aReset)
+ {
+ SendResetAssistanceData(0xFFFFFFFF);
+ }
+
+ if(aCold)
+ {
+ // Open positioner.
+ TInt err = iPositioner.Open(iServer);
+ User::LeaveIfError(err);
+ CleanupClosePushL(iPositioner);
+ }
+
+ TTime startTime;
+ startTime.UniversalTime(); // start the clock
+
+ if(aCold)
+ {
+ // Request notify for the expected reference position.
+ TPositionInfo actualRefPosInfo;
+ TInt err = DoNotifyUpdateL(actualRefPosInfo);
+ if (KErrNone != err)
+ {
+ INFO_PRINTF2(_L("Failed test, reference position request returned err %d."), err);
+ SetTestStepResult(EFail);
+ }
+ }
+ TPositionInfo posInfo;
+ // Get the actual position
+ TInt err = DoNotifyUpdateL(posInfo);
+ if (KErrNone != err)
+ {
+ INFO_PRINTF2(_L("Failed test, position request returned err %d."), err);
+ SetTestStepResult(EFail);
+ }
+
+ TTime endTime;
+ endTime.UniversalTime(); // stop the clock
+ TTimeIntervalMicroSeconds interval;
+ interval = endTime.MicroSecondsFrom(startTime);
+ INFO_PRINTF2(_L("Request took %d microseconds to complete."), interval.Int64());
+ requestTime = requestTime.Int64() + interval.Int64();
+
+ if(aCold)
+ {
+ CleanupStack::PopAndDestroy(&iPositioner);
+ User::After(KWaitTimeForCoolDown);
+ }
+ }
+
+ if(!aCold)
+ {
+ // Cleanup.
+ CleanupStack::PopAndDestroy(&iPositioner);
+ User::After(KWaitTimeForCoolDown);
+ }
+ return requestTime.Int64();
+ }
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/lbsclient/src/ctlbsclientstepassistance.cpp Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,432 @@
+// 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 CT_LbsClientStepAssistance.cpp
+// This is the class implementation for the LBS Client Step Assistance
+//
+//
+
+//LBS includes.
+#include <lbs.h>
+#include <lbsnetcommon.h>
+#include <lbsnetprotocolbase.h>
+
+// LBS test includes.
+#include "ctlbsclientstepassistance.h"
+#include "tlbsutils.h"
+
+
+const TInt KAssistanceDataProviderPluginUidValue = 0x1028225B;
+
+
+/**
+Static Constructor
+*/
+CT_LbsClientStep_Assistance* CT_LbsClientStep_Assistance::New(CT_LbsClientServer& aParent)
+ {
+ // Note the lack of ELeave.
+ // This means that having insufficient memory will return NULL;
+ CT_LbsClientStep_Assistance* testStep = new CT_LbsClientStep_Assistance(aParent);
+ if (testStep)
+ {
+ TInt err = KErrNone;
+
+ TRAP(err, testStep->ConstructL());
+ if (err)
+ {
+ delete testStep;
+ testStep = NULL;
+ }
+ }
+ return testStep;
+ }
+
+/**
+ * Constructor
+ */
+CT_LbsClientStep_Assistance::CT_LbsClientStep_Assistance(CT_LbsClientServer& aParent) : CT_LbsNetSimStep(), iParent(aParent),iLbsAdmin(NULL)
+ {
+ SetTestStepName(KLbsClientStep_Assistance);
+ }
+
+
+void CT_LbsClientStep_Assistance::ConstructL()
+ {
+ // Create the base class objects.
+ CT_LbsNetSimStep::ConstructL();
+
+ // and the active object wrapper for the notify position update.
+ iDoPosUpdate = CT_LbsDoPosUpdate::NewL(this);
+
+ // create the admin
+ iLbsAdmin = CLbsAdmin::NewL();
+ }
+
+/**
+ * Destructor
+ */
+CT_LbsClientStep_Assistance::~CT_LbsClientStep_Assistance()
+ {
+ delete iLbsAdmin;
+
+ iDoPosUpdate->Cancel();
+ delete iDoPosUpdate;
+
+ }
+
+/**
+ * @return - TVerdict code
+ * Override of base class pure virtual
+ * Our implementation only gets called if the base class doTestStepPreambleL() did
+ * not leave. That being the case, the current test result value will be EPass.
+ */
+TVerdict CT_LbsClientStep_Assistance::doTestStepL()
+ {
+ // Generic test step used to test the LBS Client Notify position update API with assistant data.
+ INFO_PRINTF1(_L(">> CT_LbsClientStep_Assistance::doTestStepL()"));
+
+ if (TestStepResult() == EPass)
+ {
+
+ // Expected callbacks flags, most test steps require MO-LR.
+ iFlagsToHaltOn = KLbsCallback_NetSim_Got_Connect | // Net Sim callback events.
+ KLbsCallback_MoLr |
+ KLbsCallback_Got_NotifyUpdate; // notifypositionupdate completed.
+
+ // Carry out unique test actions.
+ if (GetIntFromConfig(ConfigSection(), KTestCaseId, iTestCaseId))
+ {
+ switch (iTestCaseId)
+ {
+
+ case 16:
+ {
+
+ // Set 'assisted-if-possible' (EGpsPreferTerminalBased) mode
+
+ CLbsAdmin::TGpsMode mode;
+
+ User::LeaveIfError(iLbsAdmin->Set(KLbsSettingHomeGpsMode, CLbsAdmin::EGpsPreferTerminalBased));
+ User::LeaveIfError(iLbsAdmin->Get(KLbsSettingHomeGpsMode, mode));
+
+ if(mode != CLbsAdmin::EGpsPreferTerminalBased)
+ {
+ SetTestStepResult(EFail);
+ }
+
+ }
+ break;
+
+
+ case 18:
+ {
+
+
+ // Set 'assisted-if-possible' (EGpsPreferTerminalBased) mode
+
+ CLbsAdmin::TGpsMode mode;
+
+ User::LeaveIfError(iLbsAdmin->Set(KLbsSettingHomeGpsMode, CLbsAdmin::EGpsPreferTerminalBased));
+ User::LeaveIfError(iLbsAdmin->Get(KLbsSettingHomeGpsMode, mode));
+
+ if(mode != CLbsAdmin::EGpsPreferTerminalBased)
+ {
+ SetTestStepResult(EFail);
+ }
+ }
+ break;
+
+ // Test case LBS-NotifyPosUpdate-0020
+ case 20:
+ {
+
+ // Set 'assisted-if-possible' (EGpsPreferTerminalBased) mode
+
+ CLbsAdmin::TGpsMode mode;
+
+ User::LeaveIfError(iLbsAdmin->Set(KLbsSettingHomeGpsMode, CLbsAdmin::EGpsPreferTerminalBased));
+ User::LeaveIfError(iLbsAdmin->Get(KLbsSettingHomeGpsMode, mode));
+ // TO DO - ideally we should wait for the admin callback for this change here instead of pausing:
+ User::After(5000000);
+ if(mode != CLbsAdmin::EGpsPreferTerminalBased)
+ {
+ SetTestStepResult(EFail);
+ }
+ }
+ break;
+
+ default:
+ {
+ User::Panic(KLbsClientStep_Assistance, KErrUnknown);
+ }
+ }
+ }
+
+
+ // Inform the test module of the required test mode - will block.
+
+ // TODO remove modDataIn stuff all of it
+// utils.NotifyModuleOfConfigChangeL(modDataIn);
+
+ // Connect to net sim.
+
+ iNetSim.ConnectL(/*(MLbsNetSimTestObserver*)*/this);
+
+ // Setup net sim's assistance data.
+
+ // Create reference location. The test step will verify this is returned correctly
+ // in the netsim callbacks only, it will not be used by the test assistance data provider.
+
+ // Location to use.
+ RPointerArray<TAny>& srcPosInfoArr = iParent.iSharedData->iVerifyPosInfoArr;
+ TPositionInfo* srcPosInfo = reinterpret_cast<TPositionInfo*>(srcPosInfoArr[0]);
+ TPosition srcPos;
+ srcPosInfo->GetPosition(srcPos);
+
+ if (!iNetSim.SetReferenceLocation(srcPos))
+ {
+ INFO_PRINTF1(_L("Failed test, can't set NetSim's reference location."));
+ SetTestStepResult(EFail);
+
+ iNetSim.Close();
+
+ return TestStepResult();
+ }
+ // Set plugin to use.
+ TUid pluginUid = TUid::Uid(KAssistanceDataProviderPluginUidValue);
+ if (!iNetSim.SetAssistanceDataProvider(pluginUid))
+ {
+ INFO_PRINTF1(_L("Failed test, can't set NetSim's assistance data plugin uid."));
+ SetTestStepResult(EFail);
+
+ iNetSim.Close();
+
+ return TestStepResult();
+ }
+
+
+ // Kick off the keep alive timer - do last to ensure NetSim is ready otherwise the
+ // timer callback may start a MO-LR if the NetSim connected to early.
+ TTimeIntervalMicroSeconds32 interval(KLbsKeepAlivePeriod);
+
+ iKeepAliveTimer->SetTimer(interval);
+
+
+ // Kick off test.
+ CActiveScheduler::Start();
+
+
+ // Clean up.
+
+ //iNetSim.ClearAssistanceDataFilters();
+ iNetSim.Close();
+ }
+
+ INFO_PRINTF1(_L("<<CT_LbsClientStep_Assistance::doTestStepL()"));
+
+ return TestStepResult();
+ }
+
+ /** NetSim callbacks given for a MoLr, which we invoke as a result of the notify position update.
+*/
+
+// This method called when a client connects to the gateway API
+
+void CT_LbsClientStep_Assistance::Connected()
+ {
+ // Call base implementation.
+ CT_LbsNetSimStep::Connected();
+
+ switch (iTestCaseId)
+ {
+
+ case 16:
+ {
+ //Configure network simulation to ensure it does not deliver assistance data.
+ //need to be changed
+ TBool ret = iNetSim.SetResponseError(KErrNotReady, ETrue);
+ }
+ break;
+
+ // All other test cases required a MO-LR.
+ default:
+ {
+ // Create a posinfo and store in our shared array for later verification.
+ RPointerArray<TAny>& posInfoArr = iParent.iSharedData->iCurrentPosInfoArr;
+ TPositionInfo* posInfo = new(ELeave) TPositionInfo();
+
+ T_LbsUtils utils;
+ utils.ResetAndDestroy_PosInfoArr(posInfoArr); // Clear previous entries before new entry is appended.
+
+ posInfoArr.Append(posInfo);
+
+ // Kick off pos update - this will invoke the assistance data processing
+ // within the test module. The result of this will be reported back to
+ // the test step via the module data bus monitor.
+ iDoPosUpdate->StartL(*posInfo);
+
+ // Move to the waiting state.
+ iState = CT_LbsNetSimStep::EWaiting;
+ }
+ }
+ }
+
+
+//called when a client disconnects to the gateway API
+void CT_LbsClientStep_Assistance::Disconnected()
+ {
+ // Call base implementation.
+ CT_LbsNetSimStep::Disconnected();
+ }
+
+// The data to start MoLr . If this blank then we are starting an MoLr, if not then X3P
+void CT_LbsClientStep_Assistance::NotifyRegisterLcsMoLr(const TDesC& aData)
+ {
+ // Call base implementation.
+ CT_LbsNetSimStep::NotifyRegisterLcsMoLr(aData);
+
+ // Verify the aData is blank to indicate this is a MOLR.
+ if (aData != KNullDesC)
+ {
+ INFO_PRINTF1(_L("Failed test, register contains data."));
+ SetTestStepResult(EFail);
+ }
+ }
+// The reason the MoLr ended
+void CT_LbsClientStep_Assistance::NotifyReleaseLcsMoLr(TInt aReason)
+ {
+ // Call base implementation.
+ CT_LbsNetSimStep::NotifyReleaseLcsMoLr(aReason);
+
+ if (aReason != KErrNone)
+ {
+ INFO_PRINTF2(_L("Failed test, bad release reason %d."), aReason);
+ SetTestStepResult(EFail);
+ }
+
+ }
+// A measurement control
+
+void CT_LbsClientStep_Assistance::NotifyMeasurementControlLocation(const TPositionInfo& aPosition,
+ const RLbsAssistanceDataBuilderSet& aData,
+ const TLbsNetPosRequestQuality& aQuality)
+
+ {
+ T_LbsUtils utils;
+
+ // Call base implementation.
+ CT_LbsNetSimStep::NotifyMeasurementControlLocation(aPosition, aData, aQuality);
+
+ // Verify the reference position - use the entry in the verify pos info array.
+ RPointerArray<TAny>& verifyPosInfoArr = iParent.iSharedData->iVerifyPosInfoArr;
+ TPositionInfo* verifyPosInfo = reinterpret_cast<TPositionInfo*>(verifyPosInfoArr[0]);
+
+ if (!utils.Compare_PosInfo(*verifyPosInfo, aPosition, T_LbsUtils::ERoughAccuracy))
+ {
+ INFO_PRINTF1(_L("Failed test, position incorrect."));
+ SetTestStepResult(EFail);
+ }
+
+
+// TODO: Check if we can verify aQuality in any way.
+ (void)aQuality;
+ }
+
+
+void CT_LbsClientStep_Assistance::NotifyFacilityLcsMoLrResult(TInt aReason, const TPositionInfo& aPosition)
+ {
+ // Call base implementation.
+ CT_LbsNetSimStep::NotifyFacilityLcsMoLrResult(aReason, aPosition);
+
+ if (aReason != KErrNone)
+ {
+ INFO_PRINTF2(_L("Failed test, bad release reason %d."), aReason);
+ SetTestStepResult(EFail);
+ }
+
+ // Verify the position returned from the network, this will be the same position
+ // we sent to the network as the result of the MO-LR, thus use the entry given by
+ // the test module.
+ T_LbsUtils utils;
+ RPointerArray<TAny>& verifyPosInfoArr = iParent.iSharedData->iVerifyPosInfoArr;
+ TPositionInfo* verifyPosInfo = reinterpret_cast<TPositionInfo*>(verifyPosInfoArr[0]);
+
+ if (!utils.Compare_PosInfo(*verifyPosInfo, aPosition, T_LbsUtils::ERoughAccuracy))
+ {
+ INFO_PRINTF1(_L("Failed test, position incorrect."));
+ SetTestStepResult(EFail);
+ }
+ }
+
+void CT_LbsClientStep_Assistance::NotifyMeasurementReportLocation(const TPositionInfo& aPosition)
+ {
+ // Call base implementation.
+ CT_LbsNetSimStep::NotifyMeasurementReportLocation(aPosition);
+
+ // Verify the position given to the network, this will be the same position
+ // returned as the result of the MO-LR, thus use the entry given by
+ // the test module.
+ T_LbsUtils utils;
+ RPointerArray<TAny>& verifyPosInfoArr = iParent.iSharedData->iVerifyPosInfoArr;
+ TPositionInfo* verifyPosInfo = reinterpret_cast<TPositionInfo*>(verifyPosInfoArr[0]);
+
+ if (!utils.Compare_PosInfo(*verifyPosInfo, aPosition, T_LbsUtils::ERoughAccuracy))
+ {
+ INFO_PRINTF1(_L("Failed test, position incorrect."));
+ SetTestStepResult(EFail);
+ }
+ }
+
+void CT_LbsClientStep_Assistance::NotifyMeasurementReportControlFailure(TInt aReason)
+ {
+ // Call base implementation.
+ CT_LbsNetSimStep::NotifyMeasurementReportControlFailure(aReason);
+
+ INFO_PRINTF2(_L("Failed test, got un-expected control failure with reason code = %d."), aReason);
+ SetTestStepResult(EFail);
+
+ }
+
+void CT_LbsClientStep_Assistance::NotifyMeasurementReportRequestMoreAssistanceData(const TLbsAssistanceDataGroup& aFilter)
+ {
+ (void)aFilter;
+
+ INFO_PRINTF1(_L("Got - Net Sim Notify Measurement Report Request More Assistance Data - Callback Event."));
+
+ // Note that we do NOT set the callback flag here (since it may not be set and the base class does an equivalence test, so we don't test for it)
+ }
+
+/** Notify position update callback.
+
+ The notify position update as completed. We can mark as done in the callback flags.
+*/
+void CT_LbsClientStep_Assistance::MT_LbsDoPosUpdateCallback(TRequestStatus& aStatus)
+ {
+ INFO_PRINTF1(_L("Got - Notify Update - Callback Event."));
+
+ SetCallbackFlag(KLbsCallback_Got_NotifyUpdate);
+
+ if (KErrNone != aStatus.Int())
+ {
+ INFO_PRINTF2(_L("Failed test, pos info request err = %d."), aStatus.Int());
+ SetTestStepResult(EFail);
+ }
+
+// TODO also we expect this to happen before the last netsim callbacks happen if not
+// we can't use current pos in those funcs maybe have to use the verify one not as nice.
+
+
+ }
+
+
+//END
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/lbsclient/src/ctlbsclientstepcellbasednpud.cpp Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,474 @@
+// 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 ctlbsclientstep_cellbasednpud.cpp
+// This is the class implementation for the Notify Position Update Tests
+//
+//
+
+#include "ctlbsclientstepcellbasednpud.h"
+
+#include <lbs.h>
+#include <lbssatellite.h>
+
+#include "tlbsutils.h"
+#include "ctlbsasyncwaiter.h"
+
+
+// constant definitions
+
+_LIT(KLbsClientStepCellBasedNotifyPosUpdate, "LbsClientStepCellBasedNotifyPosUpdate");
+
+// by default, a test case will abort after this time if all callbacks not completed:
+// Note that this must be less than the TEF timeout in the script to be of any value
+TTimeIntervalMicroSeconds32 KDefaultAbortTimerPeriod = 90*1000000; // 1.5 mins
+
+// by default, a test case running with real gps hardware will abort after this time
+// Note that this must be less than the TEF timeout in the script to be of any value
+TTimeIntervalMicroSeconds32 KDefaultAbortTimerPeriod_real = 100*1000000; // 5 mins
+
+
+/**
+ * Destructor
+ */
+CT_LbsClientStep_CellBasedNotifyPosUpdate::~CT_LbsClientStep_CellBasedNotifyPosUpdate()
+ {
+ iDoPosUpdate->Cancel();
+ delete iDoPosUpdate;
+ }
+
+
+/**
+ * Constructor
+ */
+CT_LbsClientStep_CellBasedNotifyPosUpdate::CT_LbsClientStep_CellBasedNotifyPosUpdate(CT_LbsClientServer& aParent) : iParent(aParent)
+ {
+ SetTestStepName(KLbsClientStep_CellBasedNotifyPosUpdate);
+ }
+
+
+/**
+Static Constructor
+*/
+CT_LbsClientStep_CellBasedNotifyPosUpdate* CT_LbsClientStep_CellBasedNotifyPosUpdate::New(CT_LbsClientServer& aParent)
+ {
+ // Can't leave, so return NULL if insufficient memory
+ CT_LbsClientStep_CellBasedNotifyPosUpdate* testStep = new CT_LbsClientStep_CellBasedNotifyPosUpdate(aParent);
+ if (testStep)
+ {
+ TInt err = KErrNone;
+
+ TRAP(err, testStep->ConstructL());
+ if (err)
+ {
+ delete testStep;
+ testStep = NULL;
+ }
+ }
+ return testStep;
+
+ }
+
+void CT_LbsClientStep_CellBasedNotifyPosUpdate::ConstructL()
+ {
+ // Create the base class object.
+ CT_LbsNetSimStep::ConstructL();
+
+ // Active object wrapper for the notify position update.
+ iDoPosUpdate = CT_LbsDoPosUpdate::NewL(this, TPositionModuleInfo::ETechnologyNetwork);
+
+ }
+
+/**
+ * @return - TVerdict code
+ * Override of base class pure virtual
+ * Our implementation only gets called if the base class doTestStepPreambleL() did
+ * not leave. That being the case, the current test result value will be EPass.
+ */
+TVerdict CT_LbsClientStep_CellBasedNotifyPosUpdate::doTestStepL()
+ {
+ // Generic test step used to test the LBS Client Notify position update API.
+ INFO_PRINTF1(_L(">>CT_LbsClientStep_CellBasedNotifyPosUpdate::doTestStepL()"));
+
+ if (TestStepResult()==EPass) // TODO still don't see why we need this...
+ {
+ iNetworkUnavailable = FALSE;
+ iIsCancelTest = FALSE;
+ iCancel = FALSE;
+ iCancelOnPosUpdate = FALSE;
+ iCancelBeforePosUpdate = FALSE;
+ iMultiReq = EFalse;
+ iNumNPUDs = iParent.iSharedData->iVerifyPosInfoArr.Count(); // how many NPUDs to do
+
+ // Expected callbacks flags
+ iFlagsToHaltOn = KLbsCallback_NetSim_Got_Connect |
+ KLbsCallback_NetworkBasedLocation |
+ KLbsCallback_Got_NotifyPositionUpdate; // notifypositionupdate completed.
+
+
+ TTimeIntervalMicroSeconds32 abortInterval;
+ if(iParent.iSharedData->iTestModuleInUse)
+ {
+ abortInterval = KDefaultAbortTimerPeriod;
+ }
+ else
+ {
+ abortInterval = KDefaultAbortTimerPeriod_real;
+ }
+
+ // Carryout unique test actions.
+ TInt testCaseId;
+ if (GetIntFromConfig(ConfigSection(), KTestCaseId, testCaseId))
+ {
+ switch (testCaseId)
+ {
+ case 1: // LBS-NotifyPosUpdateCellBased-0001 Request a cell-based location
+ {
+ // nothing to do
+ }
+ break;
+
+ case 2: // LBS-NotifyPosUpdateCellBased-0002 Request a cell-based location and cancel before it completes
+ {
+ iCancel = ETrue;
+ iFlagsToHaltOn = KLbsCallback_NetSim_Got_Connect |
+ KLbsCallback_Got_NotifyPositionUpdate;
+ }
+ break;
+
+ case 3: // LBS-NotifyPosUpdateCellBased-0003 Request a cell-based location, when network unavailable
+ {
+ iNetworkUnavailable = ETrue;
+ // TO DO - are these the right flags (get NO NetSIm callbacks while network unavailable)?
+ iFlagsToHaltOn &= ~KLbsCallback_NetworkBasedLocation;
+ }
+ break;
+
+ case 4: // LBS-NotifyPosUpdateCellBased-0004 multiple sequential npuds
+ {
+ iMultiReq = ETrue;
+ }
+ break;
+
+ case 5: // LBS-NotifyPosUpdateCellBased-0005 Request a cell-based location and attempt to cancel when the update is received
+ {
+ iCancelOnPosUpdate = ETrue;
+ iFlagsToHaltOn = KLbsCallback_NetSim_Got_Connect |
+ KLbsCallback_Got_NotifyPositionUpdate;
+ }
+ break;
+
+ case 6: // LBS-NotifyPosUpdateCellBased-0006 Request a cell-based location and cancel before a position update is generated
+ {
+ iCancelBeforePosUpdate = ETrue;
+ iFlagsToHaltOn = KLbsCallback_NetSim_Got_Connect |
+ KLbsCallback_Got_NotifyPositionUpdate;
+ }
+
+ break;
+
+ default:
+ User::Panic(KLbsClientStepCellBasedNotifyPosUpdate, KErrUnknown);
+ }
+ }
+ else
+ {
+ User::Panic(KLbsClientStepCellBasedNotifyPosUpdate, KErrUnknown);
+ }
+
+ iIsCancelTest = (iCancel || iCancelBeforePosUpdate || iCancelOnPosUpdate);
+
+ // Steps common to all tests:
+
+ // Connect to net sim
+ iNetSim.ConnectL(this);
+
+ // Configure NetSim:
+ // Set reference location:
+ RPointerArray<TAny>& srcPosInfoArr = iParent.iSharedData->iVerifyPosInfoArr;
+ TPositionInfo* srcPosInfo = reinterpret_cast<TPositionInfo*>(srcPosInfoArr[0]);
+ TPosition srcPos;
+ srcPosInfo->GetPosition(srcPos);
+ if (!iNetSim.SetReferenceLocation(srcPos))
+ {
+ INFO_PRINTF1(_L("CT_LbsClientStep_CellBasedNotifyPosUpdate::doTestStepL() Failed: Can't set NetSim's reference location."));
+ SetTestStepResult(EFail);
+ }
+
+ // Set plugin to use for getting assistance data:
+ TUid pluginUid;
+ if(iParent.iSharedData->iTestModuleInUse)
+ {
+ pluginUid = TUid::Uid(KSimpleAssistanceDataProviderPluginUidValue);
+ }
+ else
+ {
+ pluginUid = TUid::Uid(KSuplAssistanceDataProviderPluginUidValue);
+ }
+ if (!iNetSim.SetAssistanceDataProvider(pluginUid))
+ {
+ INFO_PRINTF1(_L("Can't set NetSim's assistance data plugin uid."));
+ SetTestStepResult(EFail);
+ }
+
+ // make network unavailable if appropriate:
+ if(iNetworkUnavailable)
+ {
+ // Tell netsim to make network unavailable until further notice:
+ if(!iNetSim.SetResponseError(RLbsNetSimTest::KNetSimNetworkNotAvailable, ETrue)) //sticky
+ {
+ INFO_PRINTF1(_L("CT_LbsClientStep_CellBasedNotifyPosUpdate::doTestStepL() Failed: Can't set NetSim's response error."));
+ SetTestStepResult(EFail);
+ }
+ }
+
+ // Kick off the keep alive timer - do last to ensure NetSim is ready otherwise the
+ // timer callback may start a MO-LR if the NetSim connected too early.
+ TTimeIntervalMicroSeconds32 interval(KLbsKeepAlivePeriod);
+
+ iKeepAliveTimer->SetTimer(interval);
+
+ // don't wait for TEF to timeout and abort
+ iAbortTimer->SetTimer(abortInterval);
+
+ // Kick off test.
+ CActiveScheduler::Start();
+
+ if(EDone != iState)
+ {
+ INFO_PRINTF2(_L("Failed test, finished in state %d"), iState);
+ INFO_PRINTF3(_L("Callback flags currently set = 0x%x. Expecting 0x%x"), iCallbackFlags, iFlagsToHaltOn);
+ SetTestStepResult(EFail);
+ }
+ else
+ {
+ INFO_PRINTF2(_L("Got all expected callbacks (0x%x)"), iCallbackFlags);
+ }
+
+ iNetSim.Close();
+
+ }
+
+ INFO_PRINTF1(_L("<<CT_LbsClientStep_CellBasedNotifyPosUpdate::doTestStepL()"));
+
+ return TestStepResult();
+ }
+
+
+void CT_LbsClientStep_CellBasedNotifyPosUpdate::Connected()
+ {
+ // Call base implementation.
+ CT_LbsNetSimStep::Connected();
+
+ if(iCancelBeforePosUpdate)
+ {
+ TPositionInfo* posInfo = new(ELeave) TPositionInfo();
+ iDoPosUpdate->StartL(*posInfo);
+
+ iNumNPUDs--;
+
+ // Wait for all expected callback flags to be set:
+ iState = CT_LbsNetSimStep::EWaiting;
+
+ // Cancel the request for the cancel test.
+ iDoPosUpdate->CancelRequest();
+ delete posInfo;
+ }
+ else
+ {
+ T_LbsUtils utils;
+ // Create a posinfo and store in our shared array for later verification.
+ RPointerArray<TAny>& posInfoArr = iParent.iSharedData->iCurrentPosInfoArr;
+ TPositionInfo* posInfo = new(ELeave) TPositionInfo();
+ utils.ResetAndDestroy_PosInfoArr(posInfoArr); // Clear previous entries before new entry is appended.
+ posInfoArr.Append(posInfo);
+
+ iDoPosUpdate->StartL(*posInfo);
+
+ iNumNPUDs--;
+
+ // Wait for all expected callback flags to be set:
+ iState = CT_LbsNetSimStep::EWaiting;
+
+ // Cancel the request for the cancel test.
+ if(iCancel)
+ {
+ User::After((TTimeIntervalMicroSeconds32)100000); // arbitrary delay as workaround for DEF107349
+ iDoPosUpdate->CancelRequest();
+ }
+ }
+ }
+
+void CT_LbsClientStep_CellBasedNotifyPosUpdate::Disconnected()
+ {
+ // Call base implementation.
+ CT_LbsNetSimStep::Disconnected();
+ }
+
+void CT_LbsClientStep_CellBasedNotifyPosUpdate::NotifyRegisterLcsMoLr(const TDesC& aData)
+ {
+ if (!iIsCancelTest)
+ {
+ // Call base implementation.
+ CT_LbsNetSimStep::NotifyRegisterLcsMoLr(aData);
+ }
+ }
+
+void CT_LbsClientStep_CellBasedNotifyPosUpdate::NotifyReleaseLcsMoLr(TInt aReason)
+ {
+ if (!iIsCancelTest)
+ {
+ // Call base implementation.
+ CT_LbsNetSimStep::NotifyReleaseLcsMoLr(aReason);
+ }
+ }
+
+// Measurement Control has been received from Network:
+void CT_LbsClientStep_CellBasedNotifyPosUpdate::NotifyMeasurementControlLocation(const TPositionInfo& aPosition, const RLbsAssistanceDataBuilderSet& aData, const TLbsNetPosRequestQuality& aQuality)
+ {
+ if (!iIsCancelTest)
+ {
+ // Call base implementation.
+ CT_LbsNetSimStep::NotifyMeasurementControlLocation(aPosition, aData, aQuality);
+ }
+ }
+
+void CT_LbsClientStep_CellBasedNotifyPosUpdate::NotifyReleaseLcsLocationNotification(const CLbsNetworkProtocolBase::TLbsPrivacyResponse& aResult)
+ {
+ if (!iIsCancelTest)
+ {
+ // Call base implementation.
+ CT_LbsNetSimStep::NotifyReleaseLcsLocationNotification(aResult);
+ }
+ }
+
+void CT_LbsClientStep_CellBasedNotifyPosUpdate::NotifyFacilityLcsMoLrResult(TInt aReason, const TPositionInfo& aPosition)
+ {
+ if (!iIsCancelTest)
+ {
+ // Call base implementation.
+ CT_LbsNetSimStep::NotifyFacilityLcsMoLrResult(aReason, aPosition);
+ }
+ }
+
+// Our position has been reported to network
+void CT_LbsClientStep_CellBasedNotifyPosUpdate::NotifyMeasurementReportLocation(const TPositionInfo& aPosition)
+ {
+ if(iCancelOnPosUpdate)
+ {
+ iDoPosUpdate->CancelRequest();
+ }
+ if (!iIsCancelTest)
+ {
+ // Call base implementation.
+ CT_LbsNetSimStep::NotifyMeasurementReportLocation(aPosition);
+ }
+ }
+
+void CT_LbsClientStep_CellBasedNotifyPosUpdate::NotifyMeasurementReportRequestMoreAssistanceData(const TLbsAssistanceDataGroup& aFilter)
+ {
+ if (!iIsCancelTest)
+ {
+ // Call base implementation.
+ CT_LbsNetSimStep::NotifyMeasurementReportRequestMoreAssistanceData(aFilter);
+ }
+ }
+
+void CT_LbsClientStep_CellBasedNotifyPosUpdate::NotifyMeasurementReportControlFailure(TInt aReason)
+ {
+ if (!iIsCancelTest && !iMultiReq)
+ {
+ // Call base implementation.
+ CT_LbsNetSimStep::NotifyMeasurementReportControlFailure(aReason);
+ }
+ else if (iMultiReq && ! ((aReason == KErrPositionHighPriorityReceive) || (aReason == KErrServerBusy)))
+ {
+ INFO_PRINTF2(_L("FAILED: NotifyMeasurementReportControlFailure with reason = %d"), aReason);
+ SetTestStepResult(EFail);
+ }
+ }
+
+void CT_LbsClientStep_CellBasedNotifyPosUpdate::NotifyError(MLbsNetSimTestObserver::EFunction aFunction, int aError)
+ {
+ // Call base implementation.
+ CT_LbsNetSimStep::NotifyError(aFunction, aError);
+ }
+
+void CT_LbsClientStep_CellBasedNotifyPosUpdate::ProcessMeasurementControlLocationError(TInt aError)
+ {
+ // Call base implementation.
+ CT_LbsNetSimStep::ProcessMeasurementControlLocationError(aError);
+ }
+
+/** Notify position update callback.
+*/
+void CT_LbsClientStep_CellBasedNotifyPosUpdate::MT_LbsDoPosUpdateCallback(TRequestStatus& aStatus)
+ {
+ TInt err = aStatus.Int();
+
+ INFO_PRINTF2(_L("CT_LbsClientStep_CellBasedNotifyPosUpdate::MT_LbsDoPosUpdateCallback: Got - Notify Update - Callback Event. Error = %d"), err);
+
+ if(!iNumNPUDs) // only set the flag when we've got them all
+ {
+ SetCallbackFlag(KLbsCallback_Got_NotifyPositionUpdate);
+ }
+
+ if(iNetworkUnavailable)
+ {
+ if(KErrTimedOut != err && KErrDisconnected != err)
+ {
+ INFO_PRINTF2(_L("FAILED: MT_LbsDoPosUpdateCallback with error %d, expecting KErrTimedOut"), err);
+ SetTestStepResult(EFail);
+ }
+ }
+ else
+ {
+ if(iCancel)
+ {
+ if(KErrCancel != err && KErrNone != err)
+ {
+ INFO_PRINTF2(_L("FAILED: MT_LbsDoPosUpdateCallback with error = %d"), err);
+ SetTestStepResult(EFail);
+ }
+ }
+ else
+ {
+ if(iCancelBeforePosUpdate)
+ {
+ if(KErrCancel != err)
+ {
+ INFO_PRINTF2(_L("FAILED: MT_LbsDoPosUpdateCallback with error = %d"), err);
+ SetTestStepResult(EFail);
+ }
+ }
+ else
+ {
+ if(KErrNone != err)
+ {
+ INFO_PRINTF2(_L("FAILED: MT_LbsDoPosUpdateCallback with error = %d"), err);
+ SetTestStepResult(EFail);
+ }
+ }
+ }
+ }
+
+ if(iNumNPUDs--)
+ {
+ // Create another posinfo and store in our shared array for later verification.
+ RPointerArray<TAny>& posInfoArr = iParent.iSharedData->iCurrentPosInfoArr;
+ TPositionInfo* posInfo = new(ELeave) TPositionInfo();
+ posInfoArr.Append(posInfo);
+
+ iDoPosUpdate->StartL(*posInfo);
+ }
+ }
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/lbsclient/src/ctlbsclientstepignoreaccurracysetting.cpp Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,450 @@
+// Copyright (c) 2007-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 ctlbsclientstepignoreaccurracysetting.cpp
+//
+//
+
+#include "ctlbsclientstepignoreaccurracysetting.h"
+
+#include <lbs.h>
+#include <lbssatellite.h>
+#include <lbsadmin.h>
+
+#include "tlbsutils.h"
+#include "ctlbsasyncwaiter.h"
+
+#define EXPECTED_GPS_ACCURACY_HORIZONTAL 10
+#define EXPECTED_GPS_ACCURACY_VERTICAL 10
+
+const TTimeIntervalMicroSeconds KModuleTimeout = 5000000;//makes test module time out(which should be more than the Maxtime in lbsprofile.ini)
+
+/**
+ * Construction.
+ */
+CT_LbsClientStep_IgnoreAccuracySetting* CT_LbsClientStep_IgnoreAccuracySetting::New(CT_LbsClientServer& aParent)
+ {
+ // Note the lack of ELeave.
+ // This means that having insufficient memory will return NULL;
+ CT_LbsClientStep_IgnoreAccuracySetting* testStep = new CT_LbsClientStep_IgnoreAccuracySetting(aParent);
+ if (testStep)
+ {
+ TInt err = KErrNone;
+
+ TRAP(err, testStep->ConstructL());
+ if (err)
+ {
+ delete testStep;
+ testStep = NULL;
+ }
+ }
+
+ return testStep;
+ }
+
+
+CT_LbsClientStep_IgnoreAccuracySetting::CT_LbsClientStep_IgnoreAccuracySetting(CT_LbsClientServer& aParent)
+ : CT_LbsClientStep(aParent), iTestCaseId(0)
+ {
+ SetTestStepName(KLbsClientStep_IgnoreAccuracySetting);
+ }
+
+
+void CT_LbsClientStep_IgnoreAccuracySetting::ConstructL()
+ {
+ // Connect server.
+ User::LeaveIfError(iServer.Connect());
+ }
+
+
+/**
+ * Destructor
+ */
+CT_LbsClientStep_IgnoreAccuracySetting::~CT_LbsClientStep_IgnoreAccuracySetting()
+ {
+ iPositioner.Close();
+ CloseNetSim();
+ iServer.Close();
+ }
+/**
+ * The set-up for the tests open the net sim, where required (the terminal based
+ * tests) and open the connection to the server. Also it sets the update options
+ * for the requests with those in the ini file. RPositioner is open through one
+ * of the three APIs, depending on the tests
+ */
+TVerdict CT_LbsClientStep_IgnoreAccuracySetting::doTestStepPreambleL()
+ {
+ // Process some common pre setting to test steps then set SetTestStepResult to EFail or Epass.
+ INFO_PRINTF1(_L(">>CT_LbsClientStep::doTestStepPreambleL()"));
+ SetTestStepResult(EPass);
+ T_LbsUtils utils;
+
+ if(GetIntFromConfig(ConfigSection(), KTestCaseId, iTestCaseId))
+ {
+ switch(iTestCaseId)
+ { // open the network simulator for the tests that run in terminal based
+ case 151: // LBS-IGNORE-ACCURACY-ON-TERMINAL-BASED-001
+ case 152: // LBS-IGNORE-ACCURACY-ON-TERMINAL-BASED-002
+ case 153: // LBS-IGNORE-ACCURACY-ON-TERMINAL-BASED-003
+ {
+ CloseNetSim();
+ User::LeaveIfError(OpenNetSim());
+ break;
+ }
+ default:
+ {
+ }
+ }
+
+ switch(iTestCaseId)
+ { // open the positioner for the tests that are doing a position update
+ // the positioner is opened through the required API for each test
+ case 1: // LBS-IGNORE-ACCURACY-ENABLED-001
+ case 2: // LBS-IGNORE-ACCURACY-DISABLED-001
+ { // do nothing, these tests don't ask for a position update
+ break;
+ }
+ case 3: // LBS-IGNORE-ACCURACY-ABSENT-001
+ case 101: // LBS-MOLR-IGNORE-ACCURACY-ON-ACCURATE-001
+ case 104: // LBS-MOLR-IGNORE-ACCURACY-ON-INACCURATE-001
+ case 107: // LBS-MOLR-IGNORE-ACCURACY-ON-TIMEOUT-001
+ case 110: // LBS-IGNORE-ACCURACY-ON-PARTIAL-UPDATE-001
+ case 111: // LBS-IGNORE-ACCURACY-ON-PARTIAL-UPDATE-002
+ case 114: // LBS-IGNORE-ACCURACY-ON-EARLY-COMPLETE-001
+ case 151: // LBS-IGNORE-ACCURACY-ON-TERMINAL-BASED-001
+ case 201: // LBS-MOLR-IGNORE-ACCURACY-OFF-ACCURATE-001
+ case 204: // LBS-MOLR-IGNORE-ACCURACY-OFF-INACCURATE-001
+ case 207: // LBS-MOLR-IGNORE-ACCURACY-OFF-TIMEOUT-001
+ case 210: // LBS-IGNORE-ACCURACY-OFF-PARTIAL-UPDATE-001
+ case 211: // LBS-IGNORE-ACCURACY-OFF-PARTIAL-UPDATE-002
+ case 214: // LBS-IGNORE-ACCURACY-OFF-EARLY-COMPLETE-001
+ {
+ User::LeaveIfError(iPositioner.Open(iServer));
+ break;
+ }
+ case 102: // LBS-MOLR-IGNORE-ACCURACY-ON-ACCURATE-002
+ case 105: // LBS-MOLR-IGNORE-ACCURACY-ON-INACCURATE-002
+ case 108: // LBS-MOLR-IGNORE-ACCURACY-ON-TIMEOUT-002
+ case 152: // LBS-IGNORE-ACCURACY-ON-TERMINAL-BASED-002
+ case 202: // LBS-MOLR-IGNORE-ACCURACY-OFF-ACCURATE-002
+ case 205: // LBS-MOLR-IGNORE-ACCURACY-OFF-INACCURATE-002
+ case 208: // LBS-MOLR-IGNORE-ACCURACY-OFF-TIMEOUT-002
+ {
+ TPositionModuleId networkModuleId = utils.GetAGpsModuleIdL(iServer);
+ User::LeaveIfError(iPositioner.Open(iServer, networkModuleId));
+ break;
+ }
+ case 103: // LBS-MOLR-IGNORE-ACCURACY-ON-ACCURATE-003
+ case 106: // LBS-MOLR-IGNORE-ACCURACY-ON-INACCURATE-003
+ case 109: // LBS-MOLR-IGNORE-ACCURACY-ON-TIMEOUT-003
+ case 153: // LBS-IGNORE-ACCURACY-ON-TERMINAL-BASED-003
+ case 203: // LBS-MOLR-IGNORE-ACCURACY-OFF-ACCURATE-003
+ case 206: // LBS-MOLR-IGNORE-ACCURACY-OFF-INACCURATE-003
+ case 209: // LBS-MOLR-IGNORE-ACCURACY-OFF-TIMEOUT-003
+ {
+ TPositionCriteria criteria;
+ TPositionQuality quality;
+ // set up the required accuracy
+ quality.SetHorizontalAccuracy(EXPECTED_GPS_ACCURACY_HORIZONTAL);
+ quality.SetVerticalAccuracy(EXPECTED_GPS_ACCURACY_VERTICAL);
+ criteria.SetRequiredQuality(quality);
+ User::LeaveIfError(iPositioner.Open(iServer, criteria));
+ break;
+ }
+ default:
+ {
+ SetTestStepResult(EFail);
+ }
+ }
+ if(iTestCaseId != 1 && iTestCaseId !=2)
+ { // Loading the update options for all tests, except those that
+ // don't request a position update
+ TPtrC configFileName;
+ _LIT(KUpdateOptionsFile, "pos_infos_file");
+
+ GetStringFromConfig(ConfigSection(), KUpdateOptionsFile, configFileName);
+
+ TPositionUpdateOptions updateOpts;
+
+ utils.GetConfigured_ModuleUpdateOptionsL(configFileName, ConfigSection(), updateOpts);
+ iPositioner.SetUpdateOptions(updateOpts);
+ }
+ }
+ else
+ {
+ SetTestStepResult(EFail);
+ }
+
+ return TestStepResult();
+ }
+
+/**
+ * @return - TVerdict code
+ * Override of base class pure virtual
+ * Our implementation only gets called if the base class doTestStepPreambleL() did
+ * not leave. That being the case, the current test result value will be EPass.
+ */
+TVerdict CT_LbsClientStep_IgnoreAccuracySetting::doTestStepL()
+ {
+ // Generic test step used to test the LBS SetUpdateOptions API.
+ INFO_PRINTF1(_L(">>CT_LbsClientStep_IgnoreAccuracySetting::doTestStepL()"));
+
+ if(iTestCaseId == 1 || iTestCaseId == 2)
+ { // Testing the ignore accuracy setting is as required
+ CLbsAdmin* lbsAdmin = CLbsAdmin::NewL();
+ CleanupStack::PushL(lbsAdmin);
+ CLbsAdmin::TSpecialFeature ignoreAccuracySetting;
+ TInt err = lbsAdmin->Get(KLbsSpecialFeatureIgnoreAccuracy, ignoreAccuracySetting);
+ if(err != KErrNone)
+ {
+ SetTestStepResult(EFail);
+ }
+ else
+ {
+ switch(iTestCaseId)
+ {
+ case 1: // LBS-IGNORE-ACCURACY-ENABLED-001
+ {
+ if(ignoreAccuracySetting != CLbsAdmin::ESpecialFeatureOn)
+ {
+ SetTestStepResult(EFail);
+ }
+ break;
+ }
+ case 2: // LBS-IGNORE-ACCURACY-DISABLED-001
+ {
+ if(ignoreAccuracySetting != CLbsAdmin::ESpecialFeatureOff)
+ {
+ SetTestStepResult(EFail);
+ }
+ break;
+ }
+ default:
+ {
+ SetTestStepResult(EFail);
+ }
+ }
+ }
+
+ CleanupStack::PopAndDestroy(lbsAdmin);
+ }
+ else
+ {
+ // Testing the ignore accuracy setting is absent
+ if(iTestCaseId == 3)
+ { // Testing the ignore accuracy setting is absent
+ CLbsAdmin* lbsAdmin = CLbsAdmin::NewL();
+ CleanupStack::PushL(lbsAdmin);
+ TInt err(KErrNone);
+ CLbsAdmin::TSpecialFeature ignoreAccuracySetting;
+ err = lbsAdmin->Get(KLbsSpecialFeatureIgnoreAccuracy, ignoreAccuracySetting);
+ if(err != KErrNone || ignoreAccuracySetting != CLbsAdmin::ESpecialFeatureOff)
+ {
+ SetTestStepResult(EFail);
+ }
+ CleanupStack::PopAndDestroy(lbsAdmin);
+ }
+
+ switch(iTestCaseId)
+ { // Requesting the module to delay it's response so we get a time-out
+ case 107: // LBS-MOLR-IGNORE-ACCURACY-ON-TIMEOUT-001
+ case 108: // LBS-MOLR-IGNORE-ACCURACY-ON-TIMEOUT-002
+ case 109: // LBS-MOLR-IGNORE-ACCURACY-ON-TIMEOUT-003
+ case 207: // LBS-MOLR-IGNORE-ACCURACY-OFF-TIMEOUT-001
+ case 208: // LBS-MOLR-IGNORE-ACCURACY-OFF-TIMEOUT-002
+ case 209: // LBS-MOLR-IGNORE-ACCURACY-OFF-TIMEOUT-003
+ {
+ if (iParent.iSharedData->iTestModuleInUse)
+ {
+ T_LbsUtils utils;
+ TModuleDataIn modDataIn;
+
+ modDataIn.iRequestType = TModuleDataIn::EModuleRequestTimeOut;
+ modDataIn.iTimeOut = KModuleTimeout;
+
+ utils.NotifyModuleOfConfigChangeL(modDataIn); // This will block.
+ }
+ else
+ {
+ SetTestStepResult(EFail);
+ }
+ break;
+ }
+ default:
+ {
+ break;
+ }
+ }
+
+ if (TestStepResult()==EPass)
+ {
+ T_LbsUtils utils;
+
+ // Create a posinfo and store in our shared array for later verification.
+ RPointerArray<TAny>& posInfoArr = iParent.iSharedData->iCurrentPosInfoArr;
+ // The posInfo shouldn't be put on the cleanup stack because ownership is passed to the parent
+ TPositionInfo* posInfo = new(ELeave) TPositionInfo();
+
+ utils.ResetAndDestroy_PosInfoArr(posInfoArr); // Clear previous entries before new entry is appended.
+
+ posInfoArr.Append(posInfo);
+ TInt err;
+
+ // Request a position update
+ switch(iTestCaseId)
+ {
+ case 114: // LBS-IGNORE-ACCURACY-ON-EARLY-COMPLETE-001
+ case 214: // LBS-IGNORE-ACCURACY-OFF-EARLY-COMPLETE-001
+ { // In the early complete tests we request for a position
+ // update in a different way so the client can complete
+ // the request early
+ err = DoNotifyUpdateL(*posInfo);
+ if(err != KPositionPartialUpdate)
+ {
+ SetTestStepResult(EFail);
+ break;
+ }
+
+ TRequestStatus status;
+ iPositioner.NotifyPositionUpdate(*posInfo, status);
+
+ err = iPositioner.CompleteRequest(EPositionerNotifyPositionUpdate);
+ if(err != KErrNone)
+ {
+ SetTestStepResult(EFail);
+ }
+ // this should complete with either KErrNone or KErrCancel
+ User::WaitForRequest(status);
+
+ err = status.Int();
+ break;
+ }
+ default:
+ {
+ // Get the actual position
+ err = DoNotifyUpdateL(*posInfo);
+ }
+ }
+
+ if(iTestCaseId == 151 || iTestCaseId == 153)
+ { // expect reference position in the appropiate terminal based tests
+ if(KErrNone != err)
+ {
+ SetTestStepResult(EFail);
+ }
+ else
+ {
+ // Verify reference position.
+ TPositionInfo verifyRefPosInfo;
+ verifyRefPosInfo.SetPosition(iRefPos);
+
+ if (!utils.Compare_PosInfo(verifyRefPosInfo, *posInfo))
+ {
+ if(!iParent.iSharedData->iTestModuleInUse)
+ {
+ WARN_PRINTF1(_L("WARNING: position received was not reference position"));
+ }
+ else
+ {
+ INFO_PRINTF1(_L("Failed test, reference position incorrect."));
+ SetTestStepResult(EFail);
+ }
+ }
+ }
+ err = DoNotifyUpdateL(*posInfo);
+ }
+
+ // check we receive the appropiate error code from the request we made
+ switch(iTestCaseId)
+ {
+ case 101: // LBS-MOLR-IGNORE-ACCURACY-ON-ACCURATE-001
+ case 104: // LBS-MOLR-IGNORE-ACCURACY-ON-INACCURATE-001
+ case 201: // LBS-MOLR-IGNORE-ACCURACY-OFF-ACCURATE-001
+ case 102: // LBS-MOLR-IGNORE-ACCURACY-ON-ACCURATE-002
+ case 105: // LBS-MOLR-IGNORE-ACCURACY-ON-INACCURATE-002
+ case 151: // LBS-IGNORE-ACCURACY-ON-TERMINAL-BASED-001
+ case 152: // LBS-IGNORE-ACCURACY-ON-TERMINAL-BASED-002
+ case 153: // LBS-IGNORE-ACCURACY-ON-TERMINAL-BASED-003
+ case 202: // LBS-MOLR-IGNORE-ACCURACY-OFF-ACCURATE-002
+ case 103: // LBS-MOLR-IGNORE-ACCURACY-ON-ACCURATE-003
+ case 106: // LBS-MOLR-IGNORE-ACCURACY-ON-INACCURATE-003
+ case 203: // LBS-MOLR-IGNORE-ACCURACY-OFF-ACCURATE-003
+ {
+ if (KErrNone != err)
+ {
+ INFO_PRINTF2(_L("Failed test, error = %d."), err);
+ SetTestStepResult(EFail);
+ }
+ break;
+ }
+ case 107: // LBS-MOLR-IGNORE-ACCURACY-ON-TIMEOUT-001
+ case 108: // LBS-MOLR-IGNORE-ACCURACY-ON-TIMEOUT-002
+ case 109: // LBS-MOLR-IGNORE-ACCURACY-ON-TIMEOUT-003
+ case 207: // LBS-MOLR-IGNORE-ACCURACY-OFF-TIMEOUT-001
+ case 208: // LBS-MOLR-IGNORE-ACCURACY-OFF-TIMEOUT-002
+ case 209: // LBS-MOLR-IGNORE-ACCURACY-OFF-TIMEOUT-003
+ {
+ if (KErrTimedOut != err)
+ {
+ INFO_PRINTF2(_L("Failed test, expected KErrTimedOut, got error = %d."), err);
+ SetTestStepResult(EFail);
+ }
+ break;
+ }
+ case 3: // LBS-IGNORE-ACCURACY-ABSENT-001
+ case 110: // LBS-IGNORE-ACCURACY-ON-PARTIAL-UPDATE-001
+ case 204: // LBS-MOLR-IGNORE-ACCURACY-OFF-INACCURATE-001
+ case 205: // LBS-MOLR-IGNORE-ACCURACY-OFF-INACCURATE-002
+ case 206: // LBS-MOLR-IGNORE-ACCURACY-OFF-INACCURATE-003
+ case 210: // LBS-IGNORE-ACCURACY-OFF-PARTIAL-UPDATE-001
+ {
+ if (KPositionQualityLoss != err)
+ {
+ INFO_PRINTF2(_L("Failed test, expected KPositionQualityLoss, got error = %d."), err);
+ SetTestStepResult(EFail);
+ }
+ break;
+ }
+ case 111: // LBS-IGNORE-ACCURACY-ON-PARTIAL-UPDATE-002
+ case 211: // LBS-IGNORE-ACCURACY-OFF-PARTIAL-UPDATE-002
+ {
+ if (KPositionPartialUpdate != err)
+ {
+ INFO_PRINTF2(_L("Failed test, expected KPositionPartialUpdate, got error = %d."), err);
+ SetTestStepResult(EFail);
+ }
+ break;
+ }
+ case 114: // LBS-IGNORE-ACCURACY-ON-EARLY-COMPLETE-001
+ case 214: // LBS-IGNORE-ACCURACY-OFF-EARLY-COMPLETE-001
+ {
+ if (KPositionEarlyComplete != err)
+ {
+ INFO_PRINTF2(_L("Failed test, expected KPositionEarlyComplete, got error = %d."), err);
+ SetTestStepResult(EFail);
+ }
+ break;
+ }
+ default:
+ {
+ INFO_PRINTF2(_L("Failed test, unexpected Test Case Id %d"), iTestCaseId);
+ SetTestStepResult(EFail);
+ }
+ }
+ }
+ }
+
+ INFO_PRINTF1(_L("<<CT_LbsClientStep_IgnoreAccuracySetting::doTestStepL()"));
+
+ return TestStepResult();
+ }
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/lbsclient/src/ctlbsclientstepignoreaccurracysettingtracking.cpp Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,219 @@
+// Copyright (c) 2007-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 ctlbsclientstepignoreaccurracysetting.cpp
+//
+//
+
+#include "ctlbsclientstepignoreaccurracysettingtracking.h"
+
+#include <lbs.h>
+#include <lbssatellite.h>
+
+#include "tlbsutils.h"
+#include "ctlbsasyncwaiter.h"
+
+_LIT(KUpdateArraySection, "update_array_section");
+
+/**
+ * Construction.
+ */
+CT_LbsClientStep_IgnoreAccuracySettingTracking* CT_LbsClientStep_IgnoreAccuracySettingTracking::New(CT_LbsClientServer& aParent)
+ {
+ // Note the lack of ELeave.
+ // This means that having insufficient memory will return NULL;
+ CT_LbsClientStep_IgnoreAccuracySettingTracking* testStep = new CT_LbsClientStep_IgnoreAccuracySettingTracking(aParent);
+ if (testStep)
+ {
+ TInt err = KErrNone;
+
+ TRAP(err, testStep->ConstructL());
+ if (err)
+ {
+ delete testStep;
+ testStep = NULL;
+ }
+ }
+
+ return testStep;
+ }
+
+
+CT_LbsClientStep_IgnoreAccuracySettingTracking::CT_LbsClientStep_IgnoreAccuracySettingTracking(CT_LbsClientServer& aParent)
+ : CT_LbsClientStep(aParent), iTestCaseId(0)
+ {
+ SetTestStepName(KLbsClientStep_IgnoreAccuracySettingTracking);
+ }
+
+
+void CT_LbsClientStep_IgnoreAccuracySettingTracking::ConstructL()
+ {
+ // Connect server.
+ User::LeaveIfError(iServer.Connect());
+ }
+
+
+/**
+ * Destructor
+ */
+CT_LbsClientStep_IgnoreAccuracySettingTracking::~CT_LbsClientStep_IgnoreAccuracySettingTracking()
+ {
+ for(TInt index = 0; index < iExpectedUpdateArray.Count(); ++index)
+ {
+ delete iExpectedUpdateArray[index];
+ }
+ iExpectedUpdateArray.Close();
+ iPositioner.Close();
+ iServer.Close();
+ }
+
+TVerdict CT_LbsClientStep_IgnoreAccuracySettingTracking::doTestStepPreambleL()
+ {
+ // Process some common pre setting to test steps then set SetTestStepResult to EFail or Epass.
+ INFO_PRINTF1(_L(">>CT_LbsClientStep::doTestStepPreambleL()"));
+ SetTestStepResult(EPass);
+
+ if(GetIntFromConfig(ConfigSection(), KTestCaseId, iTestCaseId))
+ {
+ switch(iTestCaseId)
+ {
+ case 112: // LBS-IGNORE-ACCURACY-ON-TRACKING-001
+ case 212: // LBS-IGNORE-ACCURACY-OFF-TRACKING-001
+ { // do nothing
+ User::LeaveIfError(iPositioner.Open(iServer));
+
+ T_LbsUtils utils;
+ TPtrC configFileName;
+ _LIT(KUpdateOptionsFile, "pos_infos_file");
+
+ GetStringFromConfig(ConfigSection(), KUpdateOptionsFile, configFileName);
+
+ TPositionUpdateOptions updateOpts;
+
+ utils.GetConfigured_ModuleUpdateOptionsL(configFileName, ConfigSection(), updateOpts);
+ iPositioner.SetUpdateOptions(updateOpts);
+
+ TPtrC updateArraySection;
+ GetStringFromConfig(ConfigSection(), KUpdateArraySection, updateArraySection);
+
+ utils.GetConfigured_PosInfosL(configFileName, updateArraySection, iExpectedUpdateArray);
+
+ break;
+ }
+ default:
+ {
+ SetTestStepResult(EFail);
+ }
+ }
+ }
+ else
+ {
+ SetTestStepResult(EFail);
+ }
+
+ return TestStepResult();
+ }
+
+/**
+ * @return - TVerdict code
+ * Override of base class pure virtual
+ * Our implementation only gets called if the base class doTestStepPreambleL() did
+ * not leave. That being the case, the current test result value will be EPass.
+ */
+TVerdict CT_LbsClientStep_IgnoreAccuracySettingTracking::doTestStepL()
+ {
+ // Generic test step used to test the LBS SetUpdateOptions API.
+ INFO_PRINTF1(_L(">>CT_LbsClientStep_IgnoreAccuracySettingTracking::doTestStepL()"));
+
+ if (TestStepResult()==EPass)
+ {
+ T_LbsUtils utils;
+ TPositionInfo* posInfo = new(ELeave) TPositionInfo();
+ CleanupStack::PushL(posInfo);
+
+ // Perfom test.
+ TInt err = KErrNone;
+ TPosition pos;
+ TInt numOfPosInfos = 5;
+
+ for(TInt updateIndex = 0 ; TestStepResult()==EPass && updateIndex < numOfPosInfos;
+ ++updateIndex)
+ {
+ // Do request to position update.
+ err = DoNotifyUpdateL(*posInfo);
+
+ switch(iTestCaseId)
+ {
+ case 212: // LBS-IGNORE-ACCURACY-OFF-TRACKING-001
+ {
+ switch(updateIndex)
+ {
+ case 0:
+ case 1:
+ case 3:
+ {
+ if(KPositionQualityLoss != err)
+ {
+ SetTestStepResult(EFail);
+ }
+ break;
+ }
+ case 2:
+ case 4:
+ {
+ if(KErrNone != err)
+ {
+ SetTestStepResult(EFail);
+ }
+ break;
+ }
+ default:
+ {
+ SetTestStepResult(EFail);
+ }
+ }
+ TPositionInfoBase* expectedPosition =
+ static_cast<TPositionInfoBase*>(iExpectedUpdateArray[updateIndex]);
+ if(!utils.Compare_PosInfo(*posInfo, *expectedPosition))
+ {
+ SetTestStepResult(EFail);
+ }
+ break;
+ }
+ case 112: // LBS-IGNORE-ACCURACY-ON-TRACKING-001
+ {
+ if(KErrNone != err)
+ {
+ SetTestStepResult(EFail);
+ }
+ TPositionInfoBase* expectedPosition =
+ static_cast<TPositionInfoBase*>(iExpectedUpdateArray[updateIndex]);
+ if(!utils.Compare_PosInfo(*posInfo, *expectedPosition))
+ {
+ SetTestStepResult(EFail);
+ }
+ break;
+ }
+ default:
+ {
+ SetTestStepResult(EFail);
+ }
+ }
+ }
+ CleanupStack::PopAndDestroy(posInfo);
+ }
+
+ INFO_PRINTF1(_L("<<CT_LbsClientStep_IgnoreAccuracySettingTracking::doTestStepL()"));
+
+ return TestStepResult();
+ }
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/lbsclient/src/ctlbsclientsteplastknownpos.cpp Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,728 @@
+// 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 ctlbsclientstep_lastknownpos.cpp
+// This is the class implementation for the Last Known Position Tests
+//
+//
+
+#include "ctlbsclientsteplastknownpos.h"
+
+#include <lbs.h>
+#include "lbsadmin.h"
+#include "lbssatellite.h"
+#include "tlbsutils.h"
+#include "ctlbsasyncwaiter.h"
+
+/**
+ * Destructor
+ */
+CT_LbsClientStep_LastKnownPos::~CT_LbsClientStep_LastKnownPos()
+ {
+ }
+
+
+/**
+ * Constructor
+ */
+CT_LbsClientStep_LastKnownPos::CT_LbsClientStep_LastKnownPos(CT_LbsClientServer& aParent) : CT_LbsClientStep(aParent)
+ {
+ SetTestStepName(KLbsClientStep_LastKnownPos);
+ }
+
+
+/**
+Static Constructor
+*/
+CT_LbsClientStep_LastKnownPos* CT_LbsClientStep_LastKnownPos::New(CT_LbsClientServer& aParent)
+ {
+ return new CT_LbsClientStep_LastKnownPos(aParent);
+ // Note the lack of ELeave.
+ // This means that having insufficient memory will return NULL;
+ }
+
+
+void CT_LbsClientStep_LastKnownPos::SwitchOnselfLocateAPIL()
+ {
+ CLbsAdmin* adminApi = CLbsAdmin::NewL();
+ CleanupStack::PushL(adminApi);
+ adminApi->Set(KLbsSettingHomeSelfLocate, CLbsAdmin::ESelfLocateOn);
+ CleanupStack::PopAndDestroy(adminApi);
+ }
+
+
+/**
+ * @return - TVerdict code
+ * Override of base class pure virtual
+ * Our implementation only gets called if the base class doTestStepPreambleL() did
+ * not leave. That being the case, the current test result value will be EPass.
+ */
+TVerdict CT_LbsClientStep_LastKnownPos::doTestStepL()
+ {
+ // Generic test step used to test the LBS Client Notify position update API.
+ INFO_PRINTF1(_L(">>CT_LbsClientStep_LastKnownPos::doTestStepL()"));
+
+ if (TestStepResult() == EPass)
+ {
+ TInt err = KErrNone;
+
+ // Wait for server to cease to be - thus ensuring cache is empty
+ //User::After(10000000); //Not needed
+
+ // Carryout unique test actions.
+ TInt testCaseId;
+ if (GetIntFromConfig(ConfigSection(), KTestCaseId, testCaseId))
+ {
+ if(testCaseId == 2)
+ {
+ //The delay below is to make sure that there is no request to server for at least 200 seconds
+ //so that it will shutdown and clear cache.
+
+ User::After(3*1000*1000);
+ }
+
+ // Connect to self locate server.
+ User::LeaveIfError(iServer.Connect());
+ CleanupClosePushL(iServer);
+
+ switch (testCaseId)
+ {
+ // Test case LBS-LastKnownPos-0001
+ case 1:
+ // Test case LBS-LastKnownPos-0101
+ case 101:
+ {
+ T_LbsUtils utils;
+ // Open positioner.
+ User::LeaveIfError(iPositioner.Open(iServer));
+ CleanupClosePushL(iPositioner);
+ if(testCaseId==101)
+ {
+ // For this test an additional reference position will be returned.
+
+ // Setup netsim.
+ User::LeaveIfError(OpenNetSim());
+
+ // Request notify for the expected reference position.
+ TPositionInfo actualRefPosInfo;
+
+ err = DoNotifyUpdateL(actualRefPosInfo);
+ if (err)
+ {
+ INFO_PRINTF2(_L("Failed test, reference position request returned err %d."), err);
+ SetTestStepResult(EFail);
+ }
+
+ // Verify reference position.
+ TPositionInfo verifyRefPosInfo;
+
+ verifyRefPosInfo.SetPosition(iRefPos);
+ if (!utils.Compare_PosInfo(verifyRefPosInfo, actualRefPosInfo))
+ {
+ INFO_PRINTF1(_L("Failed test, reference position incorrect."));
+ SetTestStepResult(EFail);
+ }
+ }
+
+
+ TPosition pos; // original position
+ TTime timeStamp; // timestamp inside original received position
+
+ // Carry out a notify update to ensure last known cache is filled.
+ TPositionInfo notifyPosInfo;
+ User::LeaveIfError(DoNotifyUpdateL(notifyPosInfo));
+
+ // get the position data:
+ notifyPosInfo.GetPosition(pos);
+
+ timeStamp = pos.Time();
+ INFO_PRINTF1(_L("Original position timeStamp: "));
+ INFO_PRINTF4(_L("%d/%d/%d"), timeStamp.DateTime().Day() + 1, timeStamp.DateTime().Month() + 1, timeStamp.DateTime().Year());
+ INFO_PRINTF5(_L("at %d :%d :%d :%d"), timeStamp.DateTime().Hour(), timeStamp.DateTime().Minute(), timeStamp.DateTime().Second(), timeStamp.DateTime().Second());
+
+ // Create a posinfo and store in our shared array for later verification.
+ RPointerArray<TAny>& posInfoArr = iParent.iSharedData->iCurrentPosInfoArr;
+ TPositionInfo* posInfo = new(ELeave) TPositionInfo();
+
+ utils.ResetAndDestroy_PosInfoArr(posInfoArr); // Clear previous entries before new entry is appended.
+
+ posInfoArr.Append(posInfo);
+
+ // Get the last known position
+ err = DoLastKnownPosL(*posInfo);
+ if (KErrNone != err)
+ {
+ SetTestStepResult(EFail);
+ }
+ else
+ {
+ TTime timeStamp_cached;
+ posInfo->GetPosition(pos);
+ timeStamp_cached = pos.Time();
+
+ timeStamp = pos.Time();
+ INFO_PRINTF1(_L("Cached position timeStamp: "));
+ INFO_PRINTF4(_L("%d/%d/%d"), timeStamp_cached.DateTime().Day() + 1, timeStamp_cached.DateTime().Month() + 1, timeStamp_cached.DateTime().Year());
+ INFO_PRINTF5(_L("at %d :%d :%d :%d"), timeStamp_cached.DateTime().Hour(), timeStamp_cached.DateTime().Minute(), timeStamp_cached.DateTime().Second(), timeStamp_cached.DateTime().Second());
+
+ // verify that the timestamp matches the original one:
+ if(timeStamp_cached != timeStamp)
+ {
+ SetTestStepResult(EFail);
+ }
+
+ }
+ CleanupStack::PopAndDestroy(&iPositioner);
+ if (testCaseId == 101)
+ {
+ CloseNetSim();
+ }
+ break;
+ }
+
+ // NEGATIVE TEST
+ // Test case LBS-LastKnownPos-0002
+ case 2:
+ {
+ // Open positioner.
+ User::LeaveIfError(iPositioner.Open(iServer));
+ CleanupClosePushL(iPositioner);
+
+ // DONT carry out a notify update to ensure last known cache is filled.
+
+ // Create a posinfo to store position info from LastKnownPosition method.
+ TPositionInfo posInfo;
+
+ // Get the last known position
+ err = DoLastKnownPosL(posInfo);
+ if (KErrUnknown != err)
+ {
+ INFO_PRINTF2(_L("Failed with error %d when expecting error KErrUnknown, indicating no position in cache"), err);
+ SetTestStepResult(EFail);
+ }
+
+ // Wait for a time period and verify that location info is not published.
+ // 10seconds
+ User::After(10000000);
+
+ // Get the last known position
+ err = DoLastKnownPosL(posInfo);
+ if (KErrUnknown != err)
+ {
+ INFO_PRINTF2(_L("Failed with error %d when expecting error KErrUnknown, indicating no position in cache"), err);
+ SetTestStepResult(EFail);
+ }
+
+ CleanupStack::PopAndDestroy(&iPositioner);
+ break;
+ }
+
+
+ // NEGATIVE TEST
+ // Test case LBS-LastKnownPos-0004
+ case 4:
+ {
+ T_LbsUtils utils;
+ TPositionModuleId networkModuleId = utils.GetNetworkModuleIdL(iServer);
+ // Open positioner.
+ User::LeaveIfError(iPositioner.Open(iServer, networkModuleId));
+ CleanupClosePushL(iPositioner);
+
+ // Setup netsim.
+ User::LeaveIfError(OpenNetSim());
+
+ // Carry out a notify update to ensure last known cache is filled.
+ TPositionInfo actualRefPosInfo;
+
+ err = DoNotifyUpdateL(actualRefPosInfo);
+
+ if (err)
+ {
+ INFO_PRINTF2(_L("Failed test, reference position request returned err %d."), err);
+ SetTestStepResult(EFail);
+ }
+
+ // Verify reference position.
+ TPositionInfo verifyRefPosInfo;
+ verifyRefPosInfo.SetPosition(iRefPos);
+ if (!utils.Compare_PosInfo(verifyRefPosInfo, actualRefPosInfo))
+ {
+ INFO_PRINTF1(_L("Failed test, reference position incorrect."));
+ SetTestStepResult(EFail);
+ }
+
+ // ** Create a position info which is not supported by the network module **
+ TPositionSatelliteInfo positionSatelliteInfo;
+
+ // Get the last known position
+ err = DoLastKnownPosL(positionSatelliteInfo);
+ if (KErrArgument != err)
+ {
+ SetTestStepResult(EFail);
+ }
+
+ CleanupStack::PopAndDestroy(&iPositioner);
+ // Close netsim.
+ CloseNetSim();
+ break;
+ }
+
+ // Test case LBS-LastKnownPos-0006
+ case 6:
+ {
+ // Open positioner.
+ User::LeaveIfError(iPositioner.Open(iServer));
+ CleanupClosePushL(iPositioner);
+
+ CLbsAdmin* adminApi = CLbsAdmin::NewL();
+ CleanupStack::PushL(adminApi);
+
+ adminApi->Set(KLbsSettingHomeSelfLocate, CLbsAdmin::ESelfLocateOff);
+
+ TPositionInfo posInfo;
+
+ // Get the last known position
+ err = DoLastKnownPosL(posInfo);
+ if (KErrAccessDenied != err)
+ {
+ SetTestStepResult(EFail);
+ }
+
+ CleanupStack::PopAndDestroy(adminApi);
+ CleanupStack::PopAndDestroy(&iPositioner);
+
+ SwitchOnselfLocateAPIL();
+
+ break;
+ }
+
+ // Test case LBS-LastKnownPos-0007
+ case 7:
+ // Test case LBS-LastKnownPos-0102
+ case 102:
+ {
+ T_LbsUtils utils;
+ // Open positioner.
+ User::LeaveIfError(iPositioner.Open(iServer));
+ CleanupClosePushL(iPositioner);
+ if(testCaseId==102)
+ {
+ // For this test an additional reference position will be returned.
+
+ // Setup netsim.
+ User::LeaveIfError(OpenNetSim());
+
+ // Request notify for the expected reference position.
+ TPositionInfo actualRefPosInfo;
+
+ err = DoNotifyUpdateL(actualRefPosInfo);
+ if (err)
+ {
+ INFO_PRINTF2(_L("Failed test, reference position request returned err %d."), err);
+ SetTestStepResult(EFail);
+ }
+
+ // Verify reference position.
+ TPositionInfo verifyRefPosInfo;
+
+ verifyRefPosInfo.SetPosition(iRefPos);
+ if (!utils.Compare_PosInfo(verifyRefPosInfo, actualRefPosInfo))
+ {
+ INFO_PRINTF1(_L("Failed test, reference position incorrect."));
+ SetTestStepResult(EFail);
+ }
+ }
+
+ // Carry out a notify update to ensure last known cache is filled.
+ TPositionInfo notifyPosInfo;
+ TInt err = DoNotifyUpdateL(notifyPosInfo);
+ User::LeaveIfError(err);
+
+ // Create a posinfo and store in our shared array for later verification.
+ RPointerArray<TAny>& posInfoArr = iParent.iSharedData->iCurrentPosInfoArr;
+ TPositionInfo* posInfo = new(ELeave) TPositionInfo();
+
+
+ utils.ResetAndDestroy_PosInfoArr(posInfoArr); // Clear previous entries before new entry is appended.
+
+ posInfoArr.Append(posInfo);
+
+ // Get the last known position
+ CT_LbsAsyncWaiter* waiter = CT_LbsAsyncWaiter::NewL();
+ CleanupStack::PushL(waiter);
+
+ User::LeaveIfError(iPositioner.SetRequestor( CRequestor::ERequestorService,
+ CRequestor::EFormatApplication,
+ _L("Tom Tom")));
+
+ iPositioner.GetLastKnownPosition(*posInfo, waiter->iStatus);
+
+ TInt errCancel = iPositioner.CancelRequest(EPositionerGetLastKnownPosition);
+
+ waiter->StartAndWait();
+
+ TInt errLkp = waiter->Result();
+
+ CleanupStack::PopAndDestroy(waiter);
+
+ // Sync Cancel() call returns either KErrNone or KErrNotFound.
+ if ( errCancel != KErrNone && errCancel != KErrNotFound )
+ {
+ INFO_PRINTF1(_L("<FONT><B>Cancel must return KErrNone or KErrNotFound</B></FONT>"));
+ SetTestStepResult(EFail);
+ }
+ // If Cancel() returns KErrNone, then the original request may complete with KErrCancel.
+ if (errCancel != KErrNone && (errLkp != KErrCancel && errLkp != KErrNone ) )
+ {
+ INFO_PRINTF1(_L("<FONT><B>Cancel must return KErrCancel or KErrNone</B></FONT>"));
+ SetTestStepResult(EFail);
+ }
+
+
+ CleanupStack::PopAndDestroy(&iPositioner);
+ if (testCaseId == 102)
+ {
+ CloseNetSim();
+ }
+ break;
+ }
+
+ // Test case LBS-LastKnownPos-0008
+ case 8:
+ {
+ // Open positioner.
+ User::LeaveIfError(iPositioner.Open(iServer));
+ CleanupClosePushL(iPositioner);
+
+ // DONT get the last known position, but DO cancel
+ err = iPositioner.CancelRequest(EPositionerNotifyPositionUpdate);
+
+ if (KErrNotFound != err)
+ {
+ //Didnt cancel or complete successfully.
+ SetTestStepResult(EFail);
+ }
+
+ CleanupStack::PopAndDestroy(&iPositioner);
+
+ break;
+ }
+
+
+ // Test case LBS-LastKnownPos-0009
+ case 9:
+ {
+ //DONT open connection to Position Server
+
+ TPositionInfo posInfo;
+
+ // Get the last known position, THIS SHOULD PANIC WITH EPositionServerBadHandle
+ TRequestStatus status;
+ iPositioner.GetLastKnownPosition(posInfo, status);
+ err = iPositioner.CancelRequest(EPositionerNotifyPositionUpdate);
+
+ if (KErrNone == err)
+ {
+ //Completed Successfully.
+ SetTestStepResult(EFail);
+ }
+
+ CleanupStack::PopAndDestroy(&iPositioner);
+
+ SwitchOnselfLocateAPIL();
+
+ break;
+ }
+
+
+ // Test case LBS-LastKnownPos-0012
+ case 12:
+ {
+ // Open positioner.
+ User::LeaveIfError(iPositioner.Open(iServer));
+ CleanupClosePushL(iPositioner);
+
+ // Carry out a notify update to ensure last known cache is filled.
+ TPositionInfo notifyPosInfo;
+ User::LeaveIfError(DoNotifyUpdateL(notifyPosInfo));
+
+ TPositionInfo posInfo;
+
+ // Get the last known position while self Locate Server is busy
+ err = DoLastKnownPosL(posInfo);
+
+ if (KErrServerBusy != err)
+ {
+ // Completed successfully.
+ INFO_PRINTF1(_L("<FONT><B>**Test should pass if GetLastKnownPosition() fails with KErrServerBusy **</B></FONT>"));
+ SetTestStepResult(EFail);
+ }
+ CleanupStack::PopAndDestroy(&iPositioner);
+ break;
+ }
+
+
+ // Test case LBS-LastKnownPos-0014
+ case 14:
+ {
+ // Testcase placeholder
+ // Request multiples LKPs from different clients concurrently
+ SetTestStepResult(EFail);
+ break;
+ }
+
+
+ // Test case LBS-LastKnownPos-0015
+ case 15:
+ // Test case LBS-LastKnownPos-0103
+ case 103:
+ {
+ T_LbsUtils utils;
+ // Open positioner.
+ User::LeaveIfError(iPositioner.Open(iServer));
+ CleanupClosePushL(iPositioner);
+ if(testCaseId==103)
+ {
+ // For this test an additional reference position will be returned.
+
+ // Setup netsim.
+ User::LeaveIfError(OpenNetSim());
+
+ // Request notify for the expected reference position.
+ TPositionInfo actualRefPosInfo;
+
+ err = DoNotifyUpdateL(actualRefPosInfo);
+ if (err)
+ {
+ INFO_PRINTF2(_L("Failed test, reference position request returned err %d."), err);
+ SetTestStepResult(EFail);
+ }
+
+ // Verify reference position.
+ TPositionInfo verifyRefPosInfo;
+
+ verifyRefPosInfo.SetPosition(iRefPos);
+ if (!utils.Compare_PosInfo(verifyRefPosInfo, actualRefPosInfo))
+ {
+ INFO_PRINTF1(_L("Failed test, reference position incorrect."));
+ SetTestStepResult(EFail);
+ }
+ }
+
+ // Carry out a notify update to ensure last known cache is filled.
+ TPositionInfo notifyPosInfo;
+ TInt err = DoNotifyUpdateL(notifyPosInfo);
+ User::LeaveIfError(err);
+
+ // Create a posinfo and store in our shared array for later verification.
+ RPointerArray<TAny>& posInfoArr = iParent.iSharedData->iCurrentPosInfoArr;
+
+
+ utils.ResetAndDestroy_PosInfoArr(posInfoArr); // Clear previous entries before new entry is appended.
+
+ CT_LbsAsyncWaiter* waiter = CT_LbsAsyncWaiter::NewL();
+ CleanupStack::PushL(waiter);
+
+ TInt numpositions = iParent.iSharedData->iVerifyPosInfoArr.Count();
+ while(numpositions--)
+ {
+ RPositioner positioner;
+ // Open positioner.
+ User::LeaveIfError(positioner.Open(iServer));
+ CleanupClosePushL(positioner);
+
+ TPositionInfo* posInfo = new(ELeave) TPositionInfo();
+ posInfoArr.Append(posInfo);
+
+ // LastKnownPosition from multiple sub sessions
+
+ User::LeaveIfError(positioner.SetRequestor( CRequestor::ERequestorService,
+ CRequestor::EFormatApplication,
+ _L("Tom Tom")));
+
+ positioner.GetLastKnownPosition(*posInfo, waiter->iStatus);
+ waiter->StartAndWait();
+ TInt res = waiter->Result();
+
+ if(KErrNone != res)
+ {
+ //One of the LKPs failed, so test fails.
+ SetTestStepResult(EFail);
+ }
+ CleanupStack::PopAndDestroy(&positioner);
+ }
+
+ CleanupStack::PopAndDestroy(waiter);
+ CleanupStack::PopAndDestroy(&iPositioner);
+ if (testCaseId == 103)
+ {
+ CloseNetSim();
+ }
+ break;
+ }
+ // Test case LBS-LastKnownPos-0016
+ case 16:
+ // Test case LBS-LastKnownPos-0104
+ case 104:
+ {
+ T_LbsUtils utils;
+ // Open positioner.
+ User::LeaveIfError(iPositioner.Open(iServer));
+ CleanupClosePushL(iPositioner);
+ if(testCaseId==104)
+ {
+ // For this test an additional reference position will be returned.
+
+ // Setup netsim.
+ User::LeaveIfError(OpenNetSim());
+
+ // Request notify for the expected reference position.
+ TPositionInfo actualRefPosInfo;
+
+ err = DoNotifyUpdateL(actualRefPosInfo);
+ if (err)
+ {
+ INFO_PRINTF2(_L("Failed test, reference position request returned err %d."), err);
+ SetTestStepResult(EFail);
+ }
+
+ // Verify reference position.
+ TPositionInfo verifyRefPosInfo;
+
+ verifyRefPosInfo.SetPosition(iRefPos);
+ if (!utils.Compare_PosInfo(verifyRefPosInfo, actualRefPosInfo))
+ {
+ INFO_PRINTF1(_L("Failed test, reference position incorrect."));
+ SetTestStepResult(EFail);
+ }
+ }
+
+ // Carry out a notify update to ensure last known cache is filled.
+ TPositionInfo notifyPosInfo;
+ User::LeaveIfError(DoNotifyUpdateL(notifyPosInfo));
+
+ // Create a posinfo and store in our shared array for later verification.
+ RPointerArray<TAny>& posInfoArr = iParent.iSharedData->iCurrentPosInfoArr;
+
+
+ utils.ResetAndDestroy_PosInfoArr(posInfoArr); // Clear previous entries before new entry is appended.
+
+ TInt numPositions = iParent.iSharedData->iVerifyPosInfoArr.Count();
+ while(numPositions--)
+ {
+ TPositionInfo* posInfo = new(ELeave) TPositionInfo();
+ posInfoArr.Append(posInfo);
+
+ err = DoLastKnownPosL(*posInfo);
+ if (KErrNone != err)
+ {
+ SetTestStepResult(EFail);
+ }
+ }
+
+ CleanupStack::PopAndDestroy(&iPositioner);
+ if (testCaseId == 104)
+ {
+ CloseNetSim();
+ }
+ break;
+ }
+ // Test case LBS-LastKnownPos-0105
+ case 105:
+ {
+ T_LbsUtils utils;
+ TPositionModuleId networkModuleId = utils.GetNetworkModuleIdL(iServer);
+ // Open positioner.
+ User::LeaveIfError(iPositioner.Open(iServer, networkModuleId));
+ CleanupClosePushL(iPositioner);
+
+ // Setup netsim.
+ User::LeaveIfError(OpenNetSim());
+
+ TPosition pos; // original position
+ TTime timeStamp; // timestamp inside original received position
+
+ // Carry out a notify update to ensure last known cache is filled.
+ TPositionInfo actualRefPosInfo;
+
+ err = DoNotifyUpdateL(actualRefPosInfo);
+
+ if (err)
+ {
+ INFO_PRINTF2(_L("Failed test, reference position request returned err %d."), err);
+ SetTestStepResult(EFail);
+ }
+
+ // get the position data:
+ actualRefPosInfo.GetPosition(pos);
+
+ timeStamp = pos.Time();
+ INFO_PRINTF1(_L("Original position timeStamp: "));
+ INFO_PRINTF4(_L("%d/%d/%d"), timeStamp.DateTime().Day() + 1, timeStamp.DateTime().Month() + 1, timeStamp.DateTime().Year());
+ INFO_PRINTF5(_L("at %d :%d :%d :%d"), timeStamp.DateTime().Hour(), timeStamp.DateTime().Minute(), timeStamp.DateTime().Second(), timeStamp.DateTime().Second());
+
+ // Create a posinfo and store in our shared array for later verification.
+ RPointerArray<TAny>& posInfoArr = iParent.iSharedData->iCurrentPosInfoArr;
+ TPositionInfo* posInfo = new(ELeave) TPositionInfo();
+
+ utils.ResetAndDestroy_PosInfoArr(posInfoArr); // Clear previous entries before new entry is appended.
+
+ posInfoArr.Append(posInfo);
+
+ // Get the last known position
+ err = DoLastKnownPosL(*posInfo);
+ if (KErrNone != err)
+ {
+ SetTestStepResult(EFail);
+ }
+ else
+ {
+ TTime timeStamp_cached;
+ posInfo->GetPosition(pos);
+ timeStamp_cached = pos.Time();
+
+ timeStamp = pos.Time();
+ INFO_PRINTF1(_L("Cached position timeStamp: "));
+ INFO_PRINTF4(_L("%d/%d/%d"), timeStamp_cached.DateTime().Day() + 1, timeStamp_cached.DateTime().Month() + 1, timeStamp_cached.DateTime().Year());
+ INFO_PRINTF5(_L("at %d :%d :%d :%d"), timeStamp_cached.DateTime().Hour(), timeStamp_cached.DateTime().Minute(), timeStamp_cached.DateTime().Second(), timeStamp_cached.DateTime().Second());
+
+ // verify that the timestamp matches the original one:
+ if(timeStamp_cached != timeStamp)
+ {
+ SetTestStepResult(EFail);
+ }
+
+ }
+
+ CleanupStack::PopAndDestroy(&iPositioner);
+ // Close netsim.
+ CloseNetSim();
+ break;
+ }
+
+ default:
+ {
+ User::Leave(KErrArgument);
+ }
+ }
+ }
+
+ // All done, clean up.
+
+ CleanupStack::PopAndDestroy(&iServer);
+ }
+
+ INFO_PRINTF1(_L("<<CT_LbsClientStep_LastKnownPos::doTestStepL()"));
+
+ return TestStepResult();
+ }
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/lbsclient/src/ctlbsclientstepmodinfo.cpp Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,377 @@
+// 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 ctlbsclientstepmodinfo.cpp
+// This is the class implementation for the Module Information Tests
+//
+//
+
+#include "ctlbsclientstepmodinfo.h"
+
+#include <lbs.h>
+
+#include "tlbsutils.h"
+
+/** "num_of_mods" = the expected number (TUint) of modules returned from RPositionServer::GetNumModules().
+*/
+_LIT(KNumOfMods, "num_of_mods");
+
+/** "default_mod_id" = the expected module id returned from RPositionServer::GetDefaultModuleId(),
+ value is decimal.
+*/
+_LIT(KDefaultModId, "default_mod_id");
+
+
+
+/**
+ * Destructor
+ */
+CT_LbsClientStep_ModInfo::~CT_LbsClientStep_ModInfo()
+ {
+ }
+
+
+/**
+ * Constructor
+ */
+CT_LbsClientStep_ModInfo::CT_LbsClientStep_ModInfo(CT_LbsClientServer& aParent) : CT_LbsClientStep(aParent)
+ {
+ SetTestStepName(KLbsClientStep_ModInfo);
+ }
+
+
+/**
+Static Constructor
+*/
+CT_LbsClientStep_ModInfo* CT_LbsClientStep_ModInfo::New(CT_LbsClientServer& aParent)
+ {
+ return new CT_LbsClientStep_ModInfo(aParent);
+ // Note the lack of ELeave.
+ // This means that having insufficient memory will return NULL;
+ }
+
+
+/**
+ * @return - TVerdict code
+ * Override of base class pure virtual
+ * Our implementation only gets called if the base class doTestStepPreambleL() did
+ * not leave. That being the case, the current test result value will be EPass.
+ */
+TVerdict CT_LbsClientStep_ModInfo::doTestStepL()
+ {
+ // Generic test step used to test the LBS Client Notify position update API.
+ INFO_PRINTF1(_L(">>CT_LbsClientStep_ModInfo::doTestStepL()"));
+
+ if (TestStepResult() == EPass)
+ {
+ TInt err = KErrNone;
+ TUint numOfMods;
+ TInt modIndex;
+ TPositionModuleId modId;
+ TPositionModuleInfo& currentModInfo = iParent.iSharedData->iCurrentModuleInfo;
+
+ // Connect to self locate server.
+ User::LeaveIfError(iServer.Connect());
+ CleanupClosePushL(iServer);
+
+ // Carryout unique test actions.
+ TInt testCaseId;
+ if (GetIntFromConfig(ConfigSection(), KTestCaseId, testCaseId))
+ {
+ switch (testCaseId)
+ {
+ // Test case LBS-ModCnt-0001
+ case 1:
+ {
+ // Find the number of modules installed.
+ TUint verifyNumOfMods;
+
+ if (GetIntFromConfig(ConfigSection(), KNumOfMods, reinterpret_cast<TInt&>(verifyNumOfMods)))
+ {
+ err = iServer.GetNumModules(numOfMods);
+ if ((KErrNone != err) || (verifyNumOfMods != numOfMods))
+ {
+ INFO_PRINTF4(_L("Incorrect err = %d, or num of modules %d should be %d"), err, numOfMods, verifyNumOfMods);
+ SetTestStepResult(EFail);
+ }
+ }
+ else
+ {
+ INFO_PRINTF1(_L("No num_of_mods variable set in .ini file"));
+ SetTestStepResult(EFail);
+ }
+ break;
+ }
+
+ // Test case LBS-ModCnt-0002
+ case 2:
+ {
+
+ // Call GetNumModules with no connection to server.
+ RPositionServer server; // Don't use iServer as it's open for every test.
+
+ server.GetNumModules(numOfMods); // No need to check err, call will panic.
+ break;
+ }
+
+ // Test case LBS-ModCnt-0003
+ // Test case LBS-ModCnt-0004
+ case 3:
+ case 4:
+ {
+ // Find the number of modules installed.
+ TUint verifyNumOfMods;
+
+ if (GetIntFromConfig(ConfigSection(), KNumOfMods, reinterpret_cast<TInt&>(verifyNumOfMods)))
+ {
+ err = iServer.GetNumModules(numOfMods);
+ if ((KErrNone != err) || (verifyNumOfMods != numOfMods))
+ {
+ INFO_PRINTF4(_L("Incorrect err = %d, or num of modules %d should be %d"), err, numOfMods, verifyNumOfMods);
+ SetTestStepResult(EFail);
+ }
+ }
+ else
+ {
+ INFO_PRINTF1(_L("No num_of_mods variable set in .ini file"));
+ SetTestStepResult(EFail);
+ }
+
+ // Setup verification data
+ const TInt KNumModules = 3;
+ _LIT(KLitModName1, "OtherModule");
+ _LIT(KLitModName2, "SIRF_Loc_AGPS_Module");
+ _LIT(KLitModName2_C, "C_Drive_SIRF_Module");
+ _LIT(KLitModName3, "TEST_Loc_AGPS_Module");
+ TPositionModuleId modId;
+ TPositionModuleInfo modInfArray[KNumModules];
+ modId.iUid = 271064389; // othermodule.ini
+ modInfArray[0].SetModuleId(modId);
+ modInfArray[0].SetModuleName(KLitModName1);
+ modInfArray[0].SetIsAvailable(ETrue);
+ modId.iUid = 271064388; // sirfdatasource.ini
+ modInfArray[1].SetModuleId(modId);
+ if (testCaseId == 3)
+ modInfArray[1].SetModuleName(KLitModName2);
+ else
+ modInfArray[1].SetModuleName(KLitModName2_C);
+ modInfArray[1].SetIsAvailable(ETrue);
+ modId.iUid = 271064388; // xtestmodule.ini
+ modInfArray[2].SetModuleId(modId);
+ modInfArray[2].SetModuleName(KLitModName3);
+ modInfArray[2].SetIsAvailable(ETrue);
+
+ if (err == KErrNone)
+ {
+ // Verify the expected modules were returned
+ for (TInt i=0; i < numOfMods; i++)
+ {
+ TPositionModuleInfo modInfo;
+ err = iServer.GetModuleInfoByIndex(i, modInfo);
+ if (err == KErrNone)
+ {
+ // Check module info is as expected
+ for (TInt j=0; j < KNumModules; j++)
+ {
+ // Check module info
+ if (!modInfArray[j].IsAvailable())
+ continue;
+ // Check ID
+ if (modInfo.ModuleId() != modInfArray[j].ModuleId())
+ continue;
+ // Check name
+ TBuf<32> modName, verifyName;
+ modInfo.GetModuleName(modName);
+ modInfArray[j].GetModuleName(verifyName);
+ if (modName.Compare(verifyName) == 0)
+ {
+ // Use the available to flag module info already
+ // seen in modInfArray.
+ modInfArray[j].SetIsAvailable(EFalse);
+ break;
+ }
+ }
+ }
+ else
+ {
+ INFO_PRINTF3(_L("Error getting module info %d (%d)"), i, err);
+ SetTestStepResult(EFail);
+ }
+ }
+
+ // Check that all modules were seen
+ for (TInt k=0; k < KNumModules; k++)
+ {
+ if (modInfArray[k].IsAvailable())
+ {
+ INFO_PRINTF2(_L("Expected module %d not found"), k);
+ SetTestStepResult(EFail);
+ }
+ }
+ }
+ break;
+ }
+
+
+ // TODO:
+ // how do we compare the mod info items, will have to read the ini file ourselfs
+ // no point in having our own ini file type like we have for posinfo
+ // have a test step does the reading of the standard modinfo ini file
+ // have a test step to install the modinfo ini file
+
+
+ // Test case LBS-ModInfo-0001
+ case 11:
+ {
+ // Get mod info, normal functional test.
+ //iServer.GetNumModules(numOfMods);
+
+ //err = iServer.GetModuleInfoByIndex(numOfMods-1, currentModInfo);
+ err = iServer.GetModuleInfoByIndex(0, currentModInfo);
+ if (KErrNone != err)
+ {
+ INFO_PRINTF2(_L("Incorrect err = %d"), err);
+ SetTestStepResult(EFail);
+ }
+ break;
+ }
+
+ // Test case LBS-ModInfo-0002
+ case 12:
+ {
+ // Get mod info using a invalid index.
+ modIndex = -1;
+
+ err = iServer.GetModuleInfoByIndex(modIndex, currentModInfo);
+ if (KErrNotFound != err)
+ {
+ INFO_PRINTF3(_L("Incorrect err = %d, should be %d"), err, KErrNotFound);
+ SetTestStepResult(EFail);
+ }
+ break;
+ }
+
+ // Test case LBS-ModInfo-0003
+ case 13:
+ {
+ // Get mod info using a invalid index.
+ User::LeaveIfError(iServer.GetNumModules(numOfMods));
+ modIndex = numOfMods + 1; // This will give us a invalid index.
+
+ err = iServer.GetModuleInfoByIndex(modIndex, currentModInfo);
+ if (KErrNotFound != err)
+ {
+ INFO_PRINTF3(_L("Incorrect err = %d, should be %d"), err, KErrNotFound);
+ SetTestStepResult(EFail);
+ }
+ break;
+ }
+
+ // Test case LBS-ModInfo-0004
+ case 14:
+ {
+ // Get mod info with no connection to the server.
+ RPositionServer server; // Don't use iServer as it's open for every test.
+
+ server.GetModuleInfoByIndex(0, currentModInfo); // No need to check err, call will panic.
+ break;
+ }
+
+ // Test case LBS-ModInfo-0005
+ case 15:
+ {
+ // Get mod info using a valid id.
+ TPositionModuleInfo modInfo;
+
+ // Determine a valid module id, use get mod by index
+ User::LeaveIfError(iServer.GetModuleInfoByIndex(0, modInfo));
+ modId = modInfo.ModuleId();
+
+ // Carry out test of a valid id
+ err = iServer.GetModuleInfoById(modId, currentModInfo);
+ if (KErrNone != err)
+ {
+ INFO_PRINTF2(_L("Incorrect err = %d"), err);
+ SetTestStepResult(EFail);
+ }
+ break;
+ }
+
+ // Test case LBS-ModInfo-0006
+ case 16:
+ {
+ // Get mod info with invalid id.
+ modId = KPositionNullModuleId;
+
+ err = iServer.GetModuleInfoById(modId, currentModInfo);
+ if (KErrNotFound != err)
+ {
+ INFO_PRINTF3(_L("Incorrect err = %d, should be %d"), err, KErrNotFound);
+ SetTestStepResult(EFail);
+ }
+ break;
+ }
+
+ // Test case LBS-ModInfo-0007
+ case 17:
+ {
+ // Get mod info with no connection to the server.
+ RPositionServer server; // Don't use iServer as it's open for every test.
+
+ server.GetModuleInfoById(KPositionNullModuleId, currentModInfo); // No need to check err, call will panic.
+ break;
+ }
+
+ // Test case LBS-ModInfo-0008
+ case 18:
+ {
+ // Get default mod id.
+ TPositionModuleId verifyModId;
+ if (GetIntFromConfig(ConfigSection(), KDefaultModId, reinterpret_cast<TInt&>(verifyModId)))
+ {
+ err = iServer.GetDefaultModuleId(modId);
+ if ((KErrNone != err) || (verifyModId != modId))
+ {
+ INFO_PRINTF4(_L("Incorrect err = %d, or default module id %d should be %d"), err, modId, verifyModId);
+ SetTestStepResult(EFail);
+ }
+ }
+
+ else
+ {
+ INFO_PRINTF1(_L("No default_mod_id variable set in .ini file"));
+ SetTestStepResult(EFail);
+ }
+ break;
+ }
+
+ // Test case LBS-ModInfo-0009
+ case 19:
+ {
+ // Get default mod id with no connection to server.
+ RPositionServer server; // Don't use iServer as it's open for every test.
+
+ server.GetDefaultModuleId(modId); // No need to check err, call will panic.
+ break;
+ }
+ }
+ }
+
+ // All done, clean up.
+ CleanupStack::PopAndDestroy(&iServer);
+ }
+
+ INFO_PRINTF1(_L("<<CT_LbsClientStep_ModInfo::doTestStepL()"));
+
+ return TestStepResult();
+ }
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/lbsclient/src/ctlbsclientstepmodselect.cpp Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,603 @@
+// 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 ctlbsclientstepmodselect.cpp
+// This is the class implementation for the Module Selection Tests
+//
+//
+
+#include "ctlbsclientstepmodselect.h"
+
+#include "tlbsutils.h"
+
+/**
+ * Destructor
+ */
+CT_LbsClientStep_ModSelect::~CT_LbsClientStep_ModSelect()
+ {
+ }
+
+
+/**
+ * Constructor
+ */
+CT_LbsClientStep_ModSelect::CT_LbsClientStep_ModSelect(CT_LbsClientServer& aParent) : CT_LbsClientStep(aParent)
+ {
+ iModuleId=TUid::Null();
+ SetTestStepName(KLbsClientStep_ModSelect);
+ }
+
+/**
+Static Constructor
+*/
+CT_LbsClientStep_ModSelect* CT_LbsClientStep_ModSelect::New(CT_LbsClientServer& aParent)
+ {
+ return new CT_LbsClientStep_ModSelect(aParent);
+ // Note the lack of ELeave.
+ // This means that having insufficient memory will return NULL;
+ }
+
+
+/**
+ * Verifies that the last position retrieved was from the a-gps module
+ */
+TBool CT_LbsClientStep_ModSelect::VerifyLastModuleIdWasAGpsL()
+ {
+ TPositionInfo* posInfo = static_cast<TPositionInfo*>(iParent.iSharedData->iCurrentPosInfoArr[iParent.iSharedData->iCurrentPosInfoArr.Count()-1]);
+ TPositionModuleId checkModId = posInfo->ModuleId();
+ TPositionModuleId verifyModId;
+
+ T_LbsUtils utils;
+
+ verifyModId = utils.GetAGpsModuleIdL(iServer);
+
+ if(checkModId == verifyModId)
+ {
+ INFO_PRINTF2(_L("Module IDs Match: Get AGPS Module Id %d"), checkModId.iUid);
+ return ETrue;
+ }
+ else
+ {
+ INFO_PRINTF3(_L("Module IDs Do Not Match: Expected %d, Receive %d"), verifyModId.iUid, checkModId.iUid);
+ return EFalse;
+ }
+ }
+
+/**
+ * Verifies that the last position retrieved was from the network module
+ */
+TBool CT_LbsClientStep_ModSelect::VerifyLastModuleIdWasNetworkL()
+ {
+ TPositionInfo* posInfo = static_cast<TPositionInfo*>(iParent.iSharedData->iCurrentPosInfoArr[iParent.iSharedData->iCurrentPosInfoArr.Count()-1]);
+ TPositionModuleId checkModId = posInfo->ModuleId();
+ TPositionModuleId verifyModId;
+
+ T_LbsUtils utils;
+ verifyModId = utils.GetNetworkModuleIdL(iServer);
+
+ if(checkModId == verifyModId)
+ {
+ INFO_PRINTF2(_L("Module IDs Match: Get Network Module Id %d"), checkModId.iUid);
+ return ETrue;
+ }
+ else
+ {
+ INFO_PRINTF3(_L("Module IDs Do Not Match: Expected %d, Receive %d"), verifyModId, checkModId);
+ return EFalse;
+ }
+
+ }
+
+TInt CT_LbsClientStep_ModSelect::Blocking_NotifyUpdateL()
+ {
+
+ TInt err;
+
+ User::LeaveIfError(iPositioner.Open(iServer));
+ INFO_PRINTF1(_L("Opened RPositioner successfully with RPositionServer"));
+ CleanupClosePushL(iPositioner);
+
+ err = Blocking_NotifyUpdateCommonL();
+
+ CleanupStack::PopAndDestroy(&iPositioner);
+
+ return err;
+ }
+
+TInt CT_LbsClientStep_ModSelect::Blocking_NotifyUpdateWithModuleIdL(TPositionModuleId aModuleId)
+ {
+ TInt err;
+
+ User::LeaveIfError(iPositioner.Open(iServer, aModuleId));
+ INFO_PRINTF1(_L("Opened RPositioner successfully with RPositionServer and TPositionModuleId"));
+ CleanupClosePushL(iPositioner);
+
+ err = Blocking_NotifyUpdateCommonL();
+
+ CleanupStack::PopAndDestroy(&iPositioner);
+
+ return err;
+ }
+
+
+/**
+ * Opens a subsession with the requested criteria and retrieves a location update
+ * which it appends to the current array of positions
+ */
+TInt CT_LbsClientStep_ModSelect::Blocking_NofifyUpdateWithCriteriaL(TPositionCriteria aCriteria)
+ {
+ TInt err;
+
+ User::LeaveIfError(iPositioner.Open(iServer, aCriteria));
+ INFO_PRINTF1(_L("Opened RPositioner successfully with RPositionServer and TPositionCriteria"));
+ CleanupClosePushL(iPositioner);
+
+ err = Blocking_NotifyUpdateCommonL();
+
+ CleanupStack::PopAndDestroy(&iPositioner);
+
+ return err;
+ }
+
+
+TInt CT_LbsClientStep_ModSelect::Blocking_NotifyUpdateCommonL()
+ {
+ TInt err = KErrNone;
+
+ // Create a posinfo and store in our shared array for later verification.
+ RPointerArray<TAny>& posInfoArr = iParent.iSharedData->iCurrentPosInfoArr;
+ TPositionInfo* posInfo = new(ELeave) TPositionInfo();
+
+ T_LbsUtils utils;
+ utils.ResetAndDestroy_PosInfoArr(posInfoArr); // Clear previous entries before new entry is appended.
+
+ posInfoArr.Append(posInfo);
+
+ err = DoNotifyUpdateL(*posInfo);
+
+ return err;
+ }
+
+/**
+ * Connect to netsim and set up reference position
+ * return KErrNone if successful
+ */
+TInt CT_LbsClientStep_ModSelect::SetupNetSimL()
+ {
+ TInt err = iNetSim.ConnectL(NULL); //connect to netsim but ingnore the callbacks
+ if (err != KErrNone)
+ {
+ INFO_PRINTF2(_L("Cannot connect to netsim, return with error %d"), err);
+ return err;
+ }
+ else
+ {
+ //set up reference position
+ RPointerArray<TAny>& srcPosInfoArr = iParent.iSharedData->iVerifyPosInfoArr;
+ TPositionInfo* srcPosInfo = reinterpret_cast<TPositionInfo*>(srcPosInfoArr[0]);
+ TPosition srcPos;
+ srcPosInfo->GetPosition(srcPos);
+
+ if (!iNetSim.SetReferenceLocation(srcPos))
+ {
+ INFO_PRINTF1(_L("Test Failed: can't set NetSim's reference location."));
+ iNetSim.Close();
+ return KErrGeneral;
+ }
+ // Set plugin to use for getting assistance data:
+ TUid pluginUid;
+ if(iParent.iSharedData->iTestModuleInUse)
+ {
+ pluginUid = TUid::Uid(KSimpleAssistanceDataProviderPluginUidValue);
+ }
+ else
+ {
+ pluginUid = TUid::Uid(KSuplAssistanceDataProviderPluginUidValue);
+ }
+ if (!iNetSim.SetAssistanceDataProvider(pluginUid))
+ {
+ INFO_PRINTF1(_L("Test Failed: Can't set NetSim's assistance data plugin uid."));
+ SetTestStepResult(EFail);
+ iNetSim.Close();
+ return KErrGeneral;
+ }
+ }
+ return KErrNone;
+ }
+
+/**
+ * do notify position update with required postion criteria and verify the position
+ * received is from expected module
+ */
+void CT_LbsClientStep_ModSelect::DoModuleSelectionL(TOpenSesstionMethod aMethod, TModuleType aModuleType)
+ {
+ TInt err = KErrNone;
+
+ //do netsim connection and configure reference position
+ err = SetupNetSimL();
+ if (err !=KErrNone)
+ {
+ SetTestStepResult(EFail);
+ return;
+ }
+
+ switch (aMethod)
+ {
+ case EWithCriteria:
+ err = Blocking_NofifyUpdateWithCriteriaL(iCriteria);
+ break;
+
+ case EWithModuleId:
+ err = Blocking_NotifyUpdateWithModuleIdL(iModuleId);
+ break;
+
+ case ENone:
+ err = Blocking_NotifyUpdateL();
+ break;
+
+ default:
+ break;
+ }
+
+
+ if(KErrNone == err)
+ {
+ // Verify that the last position was
+ // retrieved by the expected module: module ids not defined yet
+ switch (aModuleType)
+ {
+ case EAGPSModule:
+ if(!VerifyLastModuleIdWasAGpsL())
+ {
+ SetTestStepResult(EFail);
+ }
+ break;
+
+ case ENetworkModule:
+ if (!VerifyLastModuleIdWasNetworkL())
+ {
+ SetTestStepResult(EFail);
+ break;
+ }
+ break;
+
+ case ERandomModule:
+ if (!VerifyLastModuleIdWasNetworkL() && !VerifyLastModuleIdWasAGpsL())
+ {
+ SetTestStepResult(EFail);
+ }
+ break;
+
+ default:
+ break;
+ }
+
+ }
+ else
+ {
+ SetTestStepResult(EFail);
+ }
+
+ iNetSim.Close();
+ }
+
+/**
+ * @return - TVerdict code
+ * Override of base class pure virtual
+ * Our implementation only gets called if the base class doTestStepPreambleL() did
+ * not leave. That being the case, the current test result value will be EPass.
+ */
+TVerdict CT_LbsClientStep_ModSelect::doTestStepL()
+ {
+ // Generic test step used to test the LBS Client Notify position update API.
+ INFO_PRINTF1(_L(">>CT_LbsClientStep_ModSelect::doTestStepL()"));
+
+ if (TestStepResult()==EPass)
+ {
+
+ TInt err = KErrNone;
+
+ // Connect to self locate server.
+ User::LeaveIfError(iServer.Connect());
+ CleanupClosePushL(iServer);
+
+ //reset the default value
+ iCriteria.ClearCriteria();
+ iQuality = TPositionQuality();
+ iSelectOrder.ClearSelectionOrder();
+
+ TInt testCaseId;
+ if (GetIntFromConfig(ConfigSection(), KTestCaseId, testCaseId))
+ {
+ switch (testCaseId)
+ {
+ case 01: // test module selection by capabilities
+ // LBS-Capability-0001
+ {
+ iCriteria.AddRequiredCapabilities(TPositionModuleInfo::ECapabilitySatellite);
+ DoModuleSelectionL(EWithCriteria, EAGPSModule);
+ }
+ break;
+
+ case 03: // test module selection by unsupported capabilities
+ // LBS-Capability-0003
+ {
+ // Set capabilities not supported by either (gps/network) module:
+ iCriteria.AddRequiredCapabilities(TPositionModuleInfo::ECapabilityMedia);
+ err = iPositioner.Open(iServer, iCriteria);
+ if(KErrNotFound != err)
+ {
+ INFO_PRINTF2(_L("Test failed: wrong error returned %d"), err);
+ SetTestStepResult(EFail);
+ if(KErrNone == err)
+ {
+ iPositioner.Close();
+ }
+ }
+
+ iCriteria.ClearCriteria();
+ User::LeaveIfError(iPositioner.Open(iServer, iCriteria));
+ iPositioner.Close();
+ }
+ break;
+
+ case 04: //required more than one capability
+ //LBS-Capability-0004
+ {
+ iCriteria.AddRequiredCapabilities(TPositionModuleInfo::ECapabilityHorizontal);
+ iCriteria.AddRequiredCapabilities(TPositionModuleInfo::ECapabilitySatellite);
+ DoModuleSelectionL(EWithCriteria, EAGPSModule);
+ }
+ break;
+
+ case 11: // test module selection by horizontal/vertical accuracy
+ // LBS-Quality-0001
+ {
+ // set up the required accuracy
+ iQuality.SetHorizontalAccuracy(AGPS_MODINFO_HORIZONTAL_ACCURACY);
+ iQuality.SetVerticalAccuracy(AGPS_MODINFO_VERTICAL_ACCURACY);
+
+ iCriteria.SetRequiredQuality(iQuality);
+
+ DoModuleSelectionL(EWithCriteria, EAGPSModule);
+ }
+ break;
+
+ case 12: // test module selection by time to first fix
+ // LBS-Quality-0002
+ {
+ TTimeIntervalMicroSeconds timetofirstfix(NETWORK_MODINFO_TIME_TO_FIRST_FIX);
+
+ // set up the required TTFF
+ iQuality.SetTimeToFirstFix(timetofirstfix);
+
+ iCriteria.SetRequiredQuality(iQuality);
+
+ DoModuleSelectionL(EWithCriteria, ENetworkModule);
+ }
+ break;
+
+ case 13: // test module selection by power consumption
+ // LBS-Quality-0003
+ // this test case can only be run in test module
+ // in xtestmodule.ini powerconsumption need to be changed to 1
+ {
+ if (!iParent.iSharedData->iTestModuleInUse)
+ {
+ INFO_PRINTF1(_L("This test case can ONLY be run with Test A-GPS Module"));
+ User::Panic(_L("Client Module Selection"), 1);
+ }
+ iQuality.SetPowerConsumption(TPositionQuality::EPowerLow);
+ iCriteria.SetRequiredQuality(iQuality);
+
+ //because both modules have the same power consumption value
+ //agps module will be selected by default
+ DoModuleSelectionL(EWithCriteria, ENetworkModule);
+ }
+ break;
+
+ case 14: // test module selection by cost limit
+ // LBS-Quality-0004
+ {
+ iQuality.SetCostIndicator(AGPS_MODINFO_COST_INDICATOR);
+ iCriteria.SetRequiredQuality(iQuality);
+
+ DoModuleSelectionL(EWithCriteria, EAGPSModule);
+ }
+ break;
+
+ case 15: // setting a higher accuracy than all existing modules for module selection
+ // LBS-Quality-0005
+ {
+ //set an required horizontal accuracy as 1 meter
+ iQuality.SetHorizontalAccuracy(1);
+ iCriteria.SetRequiredQuality(iQuality);
+ err = iPositioner.Open(iServer, iCriteria);
+ if(KErrNotFound != err)
+ {
+ INFO_PRINTF2(_L("Test failed: wrong error returned %d"), err);
+ SetTestStepResult(EFail);
+ if(KErrNone == err)
+ {
+ iPositioner.Close();
+ }
+ }
+ }
+ break;
+
+ case 16:
+ // LBS-Quality-0006 - TTFF lower than module's and H-Acc lower (more accurate) than module's. Specified V-Acc is met by module.
+ {
+ //set required TTFF=20s, TTNF=1, H-Acc=10m, V-Acc=200m
+ iQuality.SetTimeToFirstFix(10000000);
+ iQuality.SetTimeToNextFix(1000000);
+ iQuality.SetHorizontalAccuracy(10);
+ iQuality.SetVerticalAccuracy(200);
+
+ iCriteria.SetRequiredQuality(iQuality);
+ err = iPositioner.Open(iServer, iCriteria);
+ if(KErrNotFound != err)
+ {
+ INFO_PRINTF2(_L("Test failed: wrong error returned %d"), err);
+ SetTestStepResult(EFail);
+ if(KErrNone == err)
+ {
+ iPositioner.Close();
+ }
+ }
+ }
+ break;
+
+ case 17:
+ // LBS-Quality-0007 - TTFF lower than module's and H-Acc/V-Acc lower than module's. Power and Cost match module's
+ {
+ //set required TTFF=20s, TTNF=1, H-Acc=10m, V-Acc=10m
+ iQuality.SetTimeToFirstFix(10000000);
+ iQuality.SetTimeToNextFix(1000000);
+ iQuality.SetHorizontalAccuracy(10);
+ iQuality.SetVerticalAccuracy(10);
+
+ iQuality.SetCostIndicator(TPositionQuality::ECostCharge);
+ iQuality.SetPowerConsumption(TPositionQuality::EPowerMedium);
+
+ iCriteria.SetRequiredQuality(iQuality);
+ err = iPositioner.Open(iServer, iCriteria);
+ if(KErrNotFound != err)
+ {
+ INFO_PRINTF2(_L("Test failed: wrong error returned %d"), err);
+ SetTestStepResult(EFail);
+ if(KErrNone == err)
+ {
+ iPositioner.Close();
+ }
+ }
+ }
+ break;
+
+ case 21: // Request Location update with default request ordering
+ // LBS-SelectionOrder-0001
+ {
+ DoModuleSelectionL(ENone,EAGPSModule);
+ }
+ break;
+
+ case 22: // Request location update with cost/time/accuracy/power mgmt in order of importance
+ { // LBS-SelectionOrder-0002
+ User::LeaveIfError(iSelectOrder.SetOrderCostIndicator(TPositionSelectionOrder::EOrderVeryHigh));
+ User::LeaveIfError(iSelectOrder.SetOrderTimeToFirstFix(TPositionSelectionOrder::EOrderHigh));
+ User::LeaveIfError(iSelectOrder.SetOrderHorizontalAccuracy(TPositionSelectionOrder::EOrderFairlyHigh));
+ User::LeaveIfError(iSelectOrder.SetOrderPowerConsumption(TPositionSelectionOrder::EOrderMedium));
+
+ iCriteria.SetSelectionOrder(iSelectOrder);
+
+ DoModuleSelectionL(EWithCriteria, EAGPSModule);
+ }
+ break;
+
+ // Test requires test A-GPS module to have accuracy of <100m. This must be better than Network Module.
+ case 32: // Check that we can fall back on the selection order process (stage 3) when capabilities and qualities of both modules are equal.
+ { // LBS-ModuleSelection-0002
+ iQuality.SetHorizontalAccuracy(500);
+ iCriteria.SetRequiredQuality(iQuality);
+
+ DoModuleSelectionL(EWithCriteria, EAGPSModule);
+ }
+ break;
+
+ // Test requires test A-GPS module and Network Module to have equal horizontal accuracy
+ case 33: // Check that we can ack on the Rpositioner Framework when both modules appear identical.
+ { // LBS-ModuleSelection-0003
+ if (!iParent.iSharedData->iTestModuleInUse)
+ {
+ INFO_PRINTF1(_L("This test case can ONLY be run with Test A-GPS Module"));
+ User::Panic(_L("Client Module Selection"), 1);
+ }
+ iQuality.SetHorizontalAccuracy(100);
+ iCriteria.SetRequiredQuality(iQuality);
+
+ User::LeaveIfError(iSelectOrder.SetOrderHorizontalAccuracy(TPositionSelectionOrder::EOrderVeryHigh));
+ iCriteria.SetSelectionOrder(iSelectOrder);
+
+ DoModuleSelectionL(EWithCriteria, ERandomModule);
+ }
+ break;
+
+ case 34: // Select default module on connecting to the RPositioner
+ { // LBS-ModuleSelection-0004
+ DoModuleSelectionL(EWithCriteria, EAGPSModule);
+ }
+ break;
+
+
+ case 35: // Select A-GPS module by its ID
+ { // LBS-ModuleSelection-0005
+ iModuleId.iUid = APGS_MODINFO_MODULE_ID;
+ DoModuleSelectionL(EWithModuleId, EAGPSModule);
+ }
+ break;
+
+
+ case 36: // Select Network module by its ID
+ { // LBS-ModuleSelection-0006
+ iModuleId.iUid = NETWORK_MODINFO_MODULE_ID;
+ DoModuleSelectionL(EWithModuleId, ENetworkModule);
+ }
+ break;
+
+ case 37: // Test requires test A-GPS module and Network Module to have equal power consumption
+ // when both modules match the iCriteria, check default module is used for position update
+ // LBS-ModuleSelection-0007
+ {
+ iQuality.SetPowerConsumption(TPositionQuality::EPowerLow);
+ iCriteria.SetRequiredQuality(iQuality);
+
+ User::LeaveIfError(iSelectOrder.SetOrderPowerConsumption(TPositionSelectionOrder::EOrderVeryHigh));
+ iCriteria.SetSelectionOrder(iSelectOrder);
+
+ DoModuleSelectionL(EWithCriteria, ERandomModule);
+ }
+ break;
+
+ case 38:
+ //LBS-ModuleSelection-0008
+ {
+ if (!iParent.iSharedData->iTestModuleInUse)
+ {
+ INFO_PRINTF1(_L("This test case can ONLY be run with Test A-GPS Module"));
+ User::Panic(_L("Client Module Selection"), 1);
+ }
+ iQuality.SetHorizontalAccuracy(100);
+ iCriteria.SetRequiredQuality(iQuality);
+
+ User::LeaveIfError(iSelectOrder.SetOrderHorizontalAccuracy(TPositionSelectionOrder::EOrderVeryHigh));
+ User::LeaveIfError(iSelectOrder.SetOrderPowerConsumption(TPositionSelectionOrder::EOrderVeryHigh));
+ iCriteria.SetSelectionOrder(iSelectOrder);
+
+ // Verify that the last position was retrieved by a-gps module, which has lower power consumption.
+ DoModuleSelectionL(EWithCriteria, ENetworkModule);
+ }
+ break;
+
+ default:
+ {
+ INFO_PRINTF1(_L("Invalid Test Case"));
+ User::Leave(KErrArgument);
+ }
+ }
+ }
+ CleanupStack::PopAndDestroy(&iServer);
+ } // end if TestStepResult
+ INFO_PRINTF1(_L("<<CT_LbsClientStep_ModSelect::doTestStepL()"));
+
+ return TestStepResult();
+ }
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/lbsclient/src/ctlbsclientstepmodstatus.cpp Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,567 @@
+// 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 ctlbsclientstepmodstatus.cpp
+// This is the class implementation for the Module Information Tests
+//
+//
+
+#include "ctlbsclientstepmodstatus.h"
+#include "ctlbsclientstep.h"
+
+#include <e32property.h>
+#include <lbs.h>
+
+#include "tlbsutils.h"
+#include "ctlbsasyncwaiter.h"
+
+/**
+ * Destructor
+ */
+CT_LbsClientStep_ModStat::~CT_LbsClientStep_ModStat()
+ {
+ }
+
+
+/**
+ * Constructor
+ */
+CT_LbsClientStep_ModStat::CT_LbsClientStep_ModStat(CT_LbsClientServer& aParent) : CT_LbsClientStep(aParent)
+ {
+ SetTestStepName(KLbsClientStep_ModStatus);
+ }
+
+
+/**
+Static Constructor
+*/
+CT_LbsClientStep_ModStat* CT_LbsClientStep_ModStat::New(CT_LbsClientServer& aParent)
+ {
+ return new CT_LbsClientStep_ModStat(aParent);
+ // Note the lack of ELeave.
+ // This means that having insufficient memory will return NULL;
+ }
+
+/**
+ * Sets requested event mask as specified for supplied module.
+ * Kicks test module to cause events requested then waits for event(s)
+ * Updates the supplied module status
+ * returns TRUE if everything went as expected, FALSE otherwise
+ */
+ /**
+ * Sets requested event mask as specified for supplied module.
+ * Kicks test module to cause events requested then waits for event(s)
+ * Updates the supplied module status
+ * returns TRUE if everything went as expected, FALSE otherwise
+ */
+ TBool CT_LbsClientStep_ModStat::DoRequestAndVerifyModStatusEventsL(TPositionModuleStatusEvent::TModuleEvent aReqEventsMask, TPositionModuleStatus& aModStatus, TPositionModuleId aModId = KPositionNullModuleId )
+ {
+ TBool result = TRUE;
+ TPositionModuleStatusEvent statusEvent;
+ TPositionModuleId agpsmodId;
+
+ // we're interested in the agps module id
+ T_LbsUtils utils;
+ agpsmodId = utils.GetAGpsModuleIdL(iServer);
+
+ // Set event mask to select requested status events
+ statusEvent.SetRequestedEvents(aReqEventsMask);
+
+ // verify the set worked
+ if(statusEvent.RequestedEvents() != aReqEventsMask)
+ {
+ INFO_PRINTF2(_L("Requested Events don't match. Got0x%x"), statusEvent.RequestedEvents());
+ return FALSE;
+ }
+
+ CT_LbsAsyncWaiter* waiter = CT_LbsAsyncWaiter::NewL();
+
+ // Request module status event using supplied module id
+ iServer.NotifyModuleStatusEvent(statusEvent, waiter->iStatus, aModId);
+
+ TPositionModuleStatusEvent::TModuleEvent eventsExpected = 0;
+
+ // assume we are interested in the agps module since we can't control events from network module
+ ASSERT(aModId == agpsmodId || aModId == KPositionNullModuleId);
+
+ // kick the test agps module to cause the requested status event(s)
+ TPckgBuf<TModuleDataIn> modDataInBuf;
+ TModuleDataIn& modDataIn = modDataInBuf();
+
+ modDataIn.iRequestType = TModuleDataIn::EModuleRequestEventKickOff;
+ modDataIn.iKickOffEventType = 0;
+ if(aReqEventsMask & TPositionModuleStatusEvent::EEventDeviceStatus)
+ {
+ modDataIn.iKickOffEventType |= TModuleDataIn::EKickOffEventTypeDevice;
+ eventsExpected |= TPositionModuleStatusEvent::EEventDeviceStatus;
+ }
+
+ if(aReqEventsMask & TPositionModuleStatusEvent::EEventDataQualityStatus)
+ {
+ modDataIn.iKickOffEventType |= TModuleDataIn::EKickOffEventTypeDataQuality;
+ eventsExpected |= TPositionModuleStatusEvent::EEventDataQualityStatus;
+ }
+
+ User::LeaveIfError(RProperty::Set(KUidSystemCategory, ELbsTestAGpsModuleIn, modDataInBuf));
+
+
+ // Wait for event(s)
+ while(result && eventsExpected)
+ {
+ waiter->StartAndWait();
+ User::LeaveIfError(waiter->Result());
+
+
+ TInt result = waiter->Result();
+
+ TPositionModuleStatusEvent::TModuleEvent eventsOccurred = statusEvent.OccurredEvents();
+
+ ASSERT(eventsOccurred);
+
+ if(result)
+ {
+ INFO_PRINTF2(_L("Unexpected error returned %d"), result);
+ result = FALSE;
+ }
+ // Verify correct event(s) happenned
+ else
+ {
+
+ if(eventsOccurred & ~(eventsExpected))
+ {
+ INFO_PRINTF2(_L("Unexpected event received 0x%x"), statusEvent.OccurredEvents());
+ result = FALSE;
+ }
+
+ if(statusEvent.ModuleId() == agpsmodId)
+ {
+ eventsExpected &= ~eventsOccurred;
+ }
+
+ // Request next module status event
+ if (eventsExpected)
+ {
+ iServer.NotifyModuleStatusEvent(statusEvent, waiter->iStatus/*request*/, aModId);
+ }
+ }
+ }
+
+ // TODO - appropriate to do this here?
+ // device status event happened. Read in new status (this will be verified in future test step):
+ statusEvent.GetModuleStatus(aModStatus);
+
+ delete waiter;
+
+ return result;
+ }
+
+/**
+ * Sets requested event mask as specified for agps module.
+ * Kicks test module to cause events requested then waits for event(s)
+ * Updates the supplied module status
+ * returns TRUE if everything went as expected, FALSE otherwise
+ */
+ TBool CT_LbsClientStep_ModStat::DoRequestAndVerifyAGPSModStatusEventsL(TPositionModuleStatusEvent::TModuleEvent aReqEventsMask, TPositionModuleStatus& aModStatus)
+ {
+ TPositionModuleId modId;
+
+ // we're interested in the agps module id
+ T_LbsUtils utils;
+ modId = utils.GetAGpsModuleIdL(iServer);
+
+ return DoRequestAndVerifyModStatusEventsL(aReqEventsMask, aModStatus, modId);
+ }
+
+
+/**
+ * Sets requested event mask as specified for supplied module and asks to be notified of events
+ * (note does not kick test module to cause events; use only if expect error to be returned)
+ * Waits for event and returns error
+ */
+TInt CT_LbsClientStep_ModStat::DoRequestModStatusEventsWithError(TPositionModuleStatusEvent::TModuleEvent aReqEventsMask, TPositionModuleId aModId)
+ {
+ //TRequestStatus request;
+ TPositionModuleStatusEvent statusEvent;
+
+ statusEvent.SetRequestedEvents(aReqEventsMask);
+
+ CT_LbsAsyncWaiter* waiter = CT_LbsAsyncWaiter::NewL();
+
+ iServer.NotifyModuleStatusEvent(statusEvent, waiter->iStatus, aModId);
+
+ waiter->StartAndWait();
+
+ TInt result = waiter->Result();
+
+ //User::WaitForRequest(request);
+ delete waiter;
+
+ return result;
+
+ }
+
+TBool CT_LbsClientStep_ModStat::DoVerifyModStatus(TPositionModuleStatusEvent::TModuleEvent aExpectedModStatus,TPositionModuleId aModId)
+ {
+ // Initialise current module status.
+ TPositionModuleStatus& currentModStatus = iParent.iSharedData->iCurrentModuleStatus;
+ iServer.GetModuleStatus(currentModStatus,aModId);
+
+ if(currentModStatus.DeviceStatus()!=aExpectedModStatus)
+ {
+ INFO_PRINTF3(_L("Module in Unexpected State - %d and not %d"),currentModStatus.DeviceStatus(),aExpectedModStatus);
+ SetTestStepResult(EFail);
+ return EFalse;
+ }
+ else
+ {
+ INFO_PRINTF2(_L("Module in Expected State %d"),aExpectedModStatus);
+ return ETrue;
+ }
+ }
+
+/**
+ * @return - TVerdict code
+ * Override of base class pure virtual
+ * Our implementation only gets called if the base class doTestStepPreambleL() did
+ * not leave. That being the case, the current test result value will be EPass.
+ */
+TVerdict CT_LbsClientStep_ModStat::doTestStepL()
+ {
+ // Generic test step used to test the LBS Client Notify position update API.
+ INFO_PRINTF1(_L(">>CT_LbsClientStep_ModStat::doTestStepL()"));
+
+ if (TestStepResult() == EPass)
+ {
+ TInt err = KErrNone;
+
+ // Connect to self locate server.
+ User::LeaveIfError(iServer.Connect());
+ CleanupClosePushL(iServer);
+
+ // Carryout unique test actions.
+ TInt testCaseId;
+ if (GetIntFromConfig(ConfigSection(), KTestCaseId, testCaseId))
+ {
+ switch (testCaseId)
+ {
+ // Test case LBS-ModStatus-0001 to 0004
+ case 01:
+ case 02:
+ case 03:
+ case 04:
+ {
+ TPositionModuleId testmodId;
+
+ T_LbsUtils utils;
+ testmodId = utils.GetAGpsModuleIdL(iServer);
+
+ // Get the module device status.
+ TPositionModuleStatus& modStatus = iParent.iSharedData->iCurrentModuleStatus;
+ err = iServer.GetModuleStatus(modStatus, testmodId);
+ if(KErrNone != err)
+ {
+ INFO_PRINTF2(_L("Failed with err %d"), err);
+ SetTestStepResult(EFail);
+ }
+ }
+ break;
+
+ // Test case LBS-ModStatus-0005
+ case 05:
+ {
+ TPositionModuleId badmodId;
+ T_LbsUtils utils;
+ badmodId = utils.GetBadModuleId();
+
+ // Get the module device status.
+ TPositionModuleStatus moduleStatus;
+
+ err = iServer.GetModuleStatus(moduleStatus, badmodId);
+ if(KErrNotFound != err)
+ {
+ INFO_PRINTF2(_L("Failed with err %d. Should have been KErrNotFound(-1)"), err);
+ SetTestStepResult(EFail);
+ }
+ }
+ break;
+
+ // LBS-Mod-Status-Event-0002
+ case 22:
+ {
+ TPositionModuleStatus& testmodStatus = iParent.iSharedData->iCurrentModuleStatus;
+
+ // Get device status events for any module:
+ if(!DoRequestAndVerifyModStatusEventsL(TPositionModuleStatusEvent::EEventDeviceStatus, testmodStatus))
+ {
+ SetTestStepResult(EFail);
+ }
+ }
+ break;
+
+ // LBS-Mod-Status-Event-0003
+ case 23:
+ {
+ TPositionModuleStatus& testmodStatus = iParent.iSharedData->iCurrentModuleStatus;
+
+ // Get device status events for (test) agps module
+ if(!DoRequestAndVerifyAGPSModStatusEventsL(TPositionModuleStatusEvent::EEventDeviceStatus, testmodStatus))
+ {
+ SetTestStepResult(EFail);
+ }
+
+ // Get device status events again
+ if(!DoRequestAndVerifyModStatusEventsL(TPositionModuleStatusEvent::EEventDeviceStatus, testmodStatus))
+ {
+ SetTestStepResult(EFail);
+ }
+ }
+ break;
+
+ // LBS-Mod-Status-Event-0004
+ case 24:
+ {
+ TPositionModuleStatus& testmodStatus = iParent.iSharedData->iCurrentModuleStatus;
+
+ // Get device status events
+ if(!DoRequestAndVerifyAGPSModStatusEventsL(TPositionModuleStatusEvent::EEventDeviceStatus, testmodStatus))
+ {
+ SetTestStepResult(EFail);
+ }
+ }
+ break;
+
+ // LBS-Mod-Status-Event-0005
+ case 25:
+ {
+ TPositionModuleStatus& testmodStatus = iParent.iSharedData->iCurrentModuleStatus;
+ // Get device status events
+ if(!DoRequestAndVerifyAGPSModStatusEventsL(TPositionModuleStatusEvent::EEventDataQualityStatus, testmodStatus))
+ {
+ SetTestStepResult(EFail);
+ }
+ }
+ break;
+
+ // LBS-Mod-Status-Event-0009
+ case 29:
+ {
+ TPositionModuleStatus& testmodStatus = iParent.iSharedData->iCurrentModuleStatus;
+
+ //In feature when system events support, change TPositionModuleStatusEvent::EEventAll
+ // Get device status events
+ if(!DoRequestAndVerifyAGPSModStatusEventsL(((TPositionModuleStatusEvent::EEventDeviceStatus)|(TPositionModuleStatusEvent::EEventDataQualityStatus)), testmodStatus))
+ {
+ SetTestStepResult(EFail);
+ }
+ }
+ break;
+
+ // LBS-Mod-Status-Event-0010
+ case 30:
+ {
+ TPositionModuleId modId;
+ TInt err;
+
+ // use bad module id
+ T_LbsUtils utils;
+ modId = utils.GetBadModuleId();
+
+ err = DoRequestModStatusEventsWithError(TPositionModuleStatusEvent::EEventDataQualityStatus, modId);
+ if(KErrNotFound != err)
+ {
+ SetTestStepResult(EFail);
+ }
+ }
+ break;
+
+ // LBS-Mod-Status-Event-0011
+ case 31:
+ {
+ TPositionModuleId modId;
+ TInt err;
+
+ // use agps module id
+ T_LbsUtils utils;
+ modId = utils.GetAGpsModuleIdL(iServer);
+
+ err = DoRequestModStatusEventsWithError(0, modId);
+ if(KErrArgument != err)
+ {
+ SetTestStepResult(EFail);
+ }
+ }
+ break;
+
+ // LBS-Mod-Status-Event-0012
+ case 32:
+ {
+ TPositionModuleId modId;
+ TRequestStatus request;
+ TPositionModuleStatusEvent statusEvent;
+
+ // use agps module id
+ T_LbsUtils utils;
+ modId = utils.GetAGpsModuleIdL(iServer);
+
+ statusEvent.SetRequestedEvents(TPositionModuleStatusEvent::EEventDeviceStatus);
+
+ iServer.NotifyModuleStatusEvent(statusEvent, request, modId);
+
+ TInt err = iServer.CancelRequest(EPositionServerNotifyModuleStatusEvent);
+ if(KErrNone == err)
+ {
+ User::WaitForRequest(request);
+ if(KErrCancel != request.Int())
+ {
+ INFO_PRINTF2(_L("Failed: KErrCancel not returned, Got %d"), request.Int());
+ SetTestStepResult(EFail);
+ }
+ }
+ else
+ {
+ INFO_PRINTF2(_L("Failed: CancelRequest returned error %d"), err);
+ SetTestStepResult(EFail);
+ }
+ }
+ break;
+
+ // LBS-Mod-Status-Event-0013
+ case 33:
+ {
+ TInt err = iServer.CancelRequest(EPositionServerNotifyModuleStatusEvent);
+ if(KErrNotFound != err)
+ {
+ INFO_PRINTF2(_L("Failed: CancelRequest returned error %d, expecting KErrNotFound"), err);
+ SetTestStepResult(EFail);
+ }
+ }
+ break;
+
+ // LBS-Mod-Status-Event-0014
+ case 34:
+ {
+ // close server since we don't want to be connected for this test
+ iServer.Close();
+
+ TInt err = iServer.CancelRequest(EPositionServerNotifyModuleStatusEvent);
+
+ // if we get here, something went wrong, so panic
+ SetTestStepResult(EFail);
+
+ User::Panic(KLbsClientStep_ModStatus, KErrGeneral);
+ }
+ break;
+
+ // LBS-Mod-Status-Event-0015
+ case 35:
+ {
+ TPositionModuleId modId;
+ TRequestStatus request;
+ TPositionModuleStatusEvent statusEvent;
+
+ // use agps module id
+ T_LbsUtils utils;
+ modId = utils.GetAGpsModuleIdL(iServer);
+
+ // set requested events mask
+ statusEvent.SetRequestedEvents(TPositionModuleStatusEvent::EEventDeviceStatus);
+
+ // ask to be notified of requested events
+ iServer.NotifyModuleStatusEvent(statusEvent, request, modId);
+
+ // ask to be notified of requested events a second time (panics)
+ iServer.NotifyModuleStatusEvent(statusEvent, request, modId);
+
+ // if we get here, something went wrong, so panic
+ SetTestStepResult(EFail);
+
+ User::Panic(KLbsClientStep_ModStatus, KErrGeneral);
+ }
+ break;
+ case 101:
+ {
+ // This test requires net sim to be open.
+ OpenNetSim();
+
+ // Select the network module.
+ T_LbsUtils utils;
+ TPositionModuleId modId;
+ modId = utils.GetNetworkModuleIdL(iServer);
+ User::LeaveIfError(iPositioner.Open(iServer, modId));
+ CleanupClosePushL(iPositioner);
+
+ // Initialise the position info variable.
+ TPositionInfo* posInfo = new(ELeave) TPositionInfo();
+ CleanupStack::PushL(posInfo);
+
+ // set requested events mask so we get notified on EEventDeviceStatus (any status change)
+ TPositionModuleStatusEvent statusEvent;
+ statusEvent.SetRequestedEvents(TPositionModuleStatusEvent::EEventDeviceStatus);
+ CT_LbsAsyncWaiter* waiter = CT_LbsAsyncWaiter::NewL();
+ iServer.NotifyModuleStatusEvent(statusEvent, waiter->iStatus, modId);
+
+ // Verify that the module status is ready before we make any requests.
+ DoVerifyModStatus(TPositionModuleStatus::EDeviceReady,modId);
+
+ // Request a position update, we should then see a state change to EDeviceActive
+ TRequestStatus status;
+ INFO_PRINTF1(_L("Performing NotifyPositionUpdate()"));
+ iPositioner.NotifyPositionUpdate(*posInfo,status);
+ // Use the waiter object so that we can get the device status change.
+ waiter->StartAndWait();
+ waiter->Result();
+
+ // Check that the change that happened was the correct thing.
+ TPositionModuleStatusEvent::TModuleEvent eventsExpected = TPositionModuleStatusEvent::EEventDeviceStatus;
+ TPositionModuleStatusEvent::TModuleEvent eventsOccurred = statusEvent.OccurredEvents();
+
+ if(eventsOccurred!=eventsExpected)
+ {
+ INFO_PRINTF1(_L("No Module Status Event have Occured"));
+ SetTestStepResult(EFail);
+ }
+
+
+ // Verify the device is now active
+ DoVerifyModStatus(TPositionModuleStatus::EDeviceActive,modId);
+
+ INFO_PRINTF1(_L("Position Received"));
+ User::WaitForRequest(status);
+
+ //Verify that the position is EDeviceReady again
+ DoVerifyModStatus(TPositionModuleStatus::EDeviceReady,modId);
+
+ // Tidy up everything
+ CloseNetSim();
+ delete waiter;
+ CleanupStack::PopAndDestroy(posInfo);
+ CleanupStack::PopAndDestroy(&iPositioner);
+ }
+ break;
+ default:
+ {
+ User::Panic(KLbsClientStep_ModStatus, KErrUnknown);
+ }
+ }
+
+
+ }
+
+ // All done, clean up.
+ CleanupStack::PopAndDestroy(&iServer);
+ }
+
+ INFO_PRINTF1(_L("<<CT_LbsClientStep_ModStat::doTestStepL()"));
+
+ return TestStepResult();
+ }
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/lbsclient/src/ctlbsclientstepmultireq.cpp Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,463 @@
+// 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 ctlbsclientstepmultireq.cpp
+// This is the class implementation for the Multi-Request Tests
+//
+//
+
+#include "ctlbsclientstepmultireq.h"
+
+#include <lbs.h>
+#include <lbscommon.h>
+#include <lbspositioninfo.h>
+#include <lbsipc.h>
+
+#include "tlbsutils.h"
+
+// constant definitions
+_LIT(KLbsClientStepMultiReq, "LbsClientStepMultiReq");
+
+
+/**
+ * Destructor
+ */
+CT_LbsClientStep_MultiReq::~CT_LbsClientStep_MultiReq()
+ {
+ delete iGetLastKnownPosAO;
+ delete iNotifyPosUpdateAO;
+ delete iTimer;
+ delete iTempPosInfo;
+ }
+
+
+/**
+ * Constructor
+ */
+CT_LbsClientStep_MultiReq::CT_LbsClientStep_MultiReq(CT_LbsClientServer& aParent) : CT_LbsClientStep(aParent), iState(EStateUnknown), iTempPosInfo(NULL)
+ {
+ SetTestStepName(KLbsClientStep_MultiReq);
+ }
+
+
+/**
+Static Constructor
+*/
+CT_LbsClientStep_MultiReq* CT_LbsClientStep_MultiReq::NewL(CT_LbsClientServer& aParent)
+ {
+ return new(ELeave) CT_LbsClientStep_MultiReq(aParent);
+ }
+
+
+/**
+Static Constructor
+*/
+CT_LbsClientStep_MultiReq* CT_LbsClientStep_MultiReq::New(CT_LbsClientServer& aParent)
+ {
+ return new CT_LbsClientStep_MultiReq(aParent);
+ // Note the lack of ELeave.
+ // This means that having insufficient memory will return NULL;
+ }
+
+
+/**
+ * Callback - called when NotifyPositionUpdate request completes
+ */
+void CT_LbsClientStep_MultiReq::NotifyPositionUpdateCallback(TRequestStatus& aStatus)
+/**
+ * Called when async NotifyPositionUpdate completes
+ */
+ {
+ TInt testCaseId;
+
+ if (GetIntFromConfig(ConfigSection(), KTestCaseId, testCaseId))
+ {
+ switch (testCaseId)
+ {
+ case 01: // multiple requests of different types
+ {
+ if(KErrNone == aStatus.Int())
+ {
+ switch(iState)
+ {
+ case EStateUnknown:
+ {
+ iState = EStateLastNotifyPositionUpdateComplete;
+ }
+ break;
+
+ case EStateLastKnownPositionComplete:
+ {
+ iState = EStateDone;
+ AsyncTidyUp();
+ // note: we'll now drop back into the main test step
+ }
+ break;
+
+ case EStateLastNotifyPositionUpdateComplete:
+ case EStateDone :
+ // fall through
+ default:
+ {
+ User::Panic(KLbsClientStepMultiReq, KErrUnknown);
+ }
+ break;
+ }
+ }
+ else
+ {
+ INFO_PRINTF2(_L("NotifyModuleStatusEvent completed. Status = %d"), aStatus.Int());
+ SetTestStepResult(EFail);
+ AsyncTidyUp();
+ }
+ }// end case 01
+ break;
+ case 02: //
+ {
+ switch(iState)
+ {
+ case EStateUnknown:
+ {
+ iState = EStateLastNotifyPositionUpdateComplete;
+ }
+ break;
+
+ case EStateLastKnownPositionComplete:
+ {
+ iState = EStateDone;
+ AsyncTidyUp();
+ }
+ break;
+
+ case EStateLastNotifyPositionUpdateComplete:
+ case EStateDone :
+ // fall through
+ default:
+ {
+ User::Panic(KLbsClientStepMultiReq, KErrUnknown);
+ }
+ break;
+ }
+ }
+ break;
+ default:
+ {
+ User::Panic(KLbsClientStepMultiReq, KErrUnknown);
+ }
+
+ }// end switch testCaseId
+ }// end if GetIntFromConfig
+ }
+
+
+
+/**
+ * Callback - called when GetLastKnownPosition request completes
+ */
+void CT_LbsClientStep_MultiReq::GetLastKnownPositionCallback(TRequestStatus& aStatus)
+/**
+ * Called when NotifyModuleStatusEvent completes
+ */
+ {
+ TInt testCaseId;
+
+ if (GetIntFromConfig(ConfigSection(), KTestCaseId, testCaseId))
+ {
+ switch (testCaseId)
+ {
+ case 01: // multiple requests of different types
+ {
+ if(KErrNone == aStatus.Int())
+ {
+ switch(iState)
+ {
+ case EStateUnknown:
+ {
+ iState = EStateLastKnownPositionComplete;
+ }
+ break;
+
+ case EStateLastNotifyPositionUpdateComplete:
+ {
+ iState = EStateDone;
+ AsyncTidyUp();
+ // note: we'll now drop back into the main test step
+ }
+ break;
+
+ case EStateLastKnownPositionComplete:
+ case EStateDone :
+ // fall through
+ default:
+ {
+ User::Panic(KLbsClientStepMultiReq, KErrUnknown);
+ }
+ break;
+
+ }
+ }
+ else
+ {
+ INFO_PRINTF2(_L("NotifyModuleStatusEvent completed. Status =%d"), aStatus.Int());
+ SetTestStepResult(EFail);
+ AsyncTidyUp();
+ }
+
+ }// end case 01
+ break;
+ case 02: // NotifyPositionUpdate then GetLKP, latter cancelled
+ {
+ switch(iState)
+ {
+ case EStateUnknown:
+ {
+ iState = EStateLastKnownPositionComplete;
+ TInt err = aStatus.Int();
+ switch(err)
+ {
+ case KErrNone:
+ {
+ INFO_PRINTF1(_L("MultiReq test: Last Known Position request completed successfully"));
+ }
+ break;
+ case KErrCancel:
+ {
+ INFO_PRINTF1(_L("MultiReq test: Last Known Position request completed with KErrCancel"));
+ }
+ break;
+ case KErrUnknown:
+ {
+ INFO_PRINTF1(_L("MultiReq test: Last Known Position request completed with KErrUnknown"));
+ }
+ break;
+ default:
+ {
+
+ SetTestStepResult(EFail);
+ AsyncTidyUp();
+ }
+ break;
+ }
+ }
+ break;
+
+ case EStateLastNotifyPositionUpdateComplete:
+ {
+ iState = EStateDone;
+ TInt err = aStatus.Int();
+ if(KErrNone != err)
+ {
+ SetTestStepResult(EFail);
+ }
+ AsyncTidyUp();
+ }
+ break;
+
+ case EStateLastKnownPositionComplete:
+ case EStateDone :
+ // fall through
+ default:
+ {
+ User::Panic(KLbsClientStepMultiReq, KErrUnknown);
+ }
+ }// end switch(iState)
+ }// end case 2
+ break;
+
+ default:
+ {
+ User::Panic(KLbsClientStepMultiReq, KErrUnknown);
+ }
+ break;
+ }
+ }
+ }
+
+
+/**
+ * tidy up everything
+ */
+void CT_LbsClientStep_MultiReq::AsyncTidyUp()
+ {
+ if ( iTimer->IsActive() )
+ {
+ iTimer->Cancel();
+ }
+ // Cancel any outstanding requests (to be tested):
+ if(iNotifyPosUpdateAO->IsActive())
+ {
+ iNotifyPosUpdateAO->Cancel();
+ }
+ if(iGetLastKnownPosAO->IsActive())
+ {
+ iGetLastKnownPosAO->Cancel();
+ }
+ CActiveScheduler::Stop();
+ }
+
+
+/**
+ * Callback function - called if timer fires (requests did not all complete in time)
+ */
+static TInt TimerCallback(TAny* aPointer)
+ {
+ //the timer expired and we have not got the responses to our lbs requests
+ static_cast<CT_LbsClientStep_MultiReq*>(aPointer)->INFO_PRINTF1(_L(">>TEST FAILED: timer fired"));
+ static_cast<CT_LbsClientStep_MultiReq*>(aPointer)->AsyncTidyUp();
+ static_cast<CT_LbsClientStep_MultiReq*>(aPointer)->SetTestStepResult(EFail);
+
+ return KErrNone;
+ }
+
+/**
+ * @return - TVerdict code
+ * Override of base class pure virtual
+ * Our implementation only gets called if the base class doTestStepPreambleL() did
+ * not leave. That being the case, the current test result value will be EPass.
+ */
+TVerdict CT_LbsClientStep_MultiReq::doTestStepL()
+ {
+ // Generic test step used to test the LBS Client Notify position update API.
+ INFO_PRINTF1(_L(">>CT_LbsClientStep_MultiReq::doTestStepL()"));
+
+ if (TestStepResult()==EPass)
+ {
+ // Connect to self locate server.
+ User::LeaveIfError(iServer.Connect());
+ CleanupClosePushL(iServer);
+
+ TInt testCaseId;
+ if (GetIntFromConfig(ConfigSection(), KTestCaseId, testCaseId))
+ {
+ switch (testCaseId)
+ {
+ case 01: // multiple requests of different types
+ {
+ // Open positioner.
+ User::LeaveIfError(iPositioner.Open(iServer));
+ CleanupClosePushL(iPositioner);
+
+ // Carry out a notify update to ensure last known cache is filled (note: this blocks!)
+ TPositionInfo notifyPosInfo;
+ User::LeaveIfError(DoNotifyUpdateL(notifyPosInfo));
+
+ // Create 2 posinfos and store in our shared array for later verification.
+ RPointerArray<TAny>& posInfoArr = iParent.iSharedData->iCurrentPosInfoArr;
+ TPositionInfo* posInfoLastKnown = new(ELeave) TPositionInfo();
+ TPositionInfo* posInfoNotifyUpd = new(ELeave) TPositionInfo();
+
+ T_LbsUtils utils;
+ utils.ResetAndDestroy_PosInfoArr(posInfoArr); // Clear previous entries before new entry is appended.
+
+ // these get deleted by the base class destructor
+ posInfoArr.Append(posInfoLastKnown);
+ posInfoArr.Append(posInfoNotifyUpd);
+
+ // Start GetLastKnownPosition request:
+ iGetLastKnownPosAO = CT_LbsClientGetLastKnownPosAO::NewL(*this);
+
+ iGetLastKnownPosAO->GetLastKnownPosL(iPositioner, *posInfoLastKnown);
+
+ // Start NotifyPositionUpdate request:
+ iNotifyPosUpdateAO = CT_LbsClientNotifyPosUpdAO::NewL(*this);
+
+ iNotifyPosUpdateAO->NotifyPosUpdateL(iPositioner, *posInfoNotifyUpd);
+
+ // Start a timer to make sure neither of above times out:
+ iTimer = CPeriodic::New(CActive::EPriorityStandard);
+ TCallBack callbackFunction = TCallBack(TimerCallback, this);
+ iTimer->Start( delay10Seconds, 0, callbackFunction);
+
+ // can start the scheduler now as there are async requests issued
+ CActiveScheduler::Start();
+
+ // All requests have now completed (and scheduler stopped)
+
+ CleanupStack::PopAndDestroy(&iPositioner);
+ } // end case 1
+ break;
+
+ case 02: // cancel one of two outstanding requests
+ {
+ // Open positioner.
+ User::LeaveIfError(iPositioner.Open(iServer));
+ CleanupClosePushL(iPositioner);
+
+ // Create a posinfo and store in our shared array for later verification.
+ RPointerArray<TAny>& posInfoArr = iParent.iSharedData->iCurrentPosInfoArr;
+ TPositionInfo* posInfoNotifyUpd = new(ELeave) TPositionInfo();
+
+ T_LbsUtils utils;
+ utils.ResetAndDestroy_PosInfoArr(posInfoArr); // Clear previous entries before new entry is appended.
+
+ // this gets deleted by the base class destructor:
+ posInfoArr.Append(posInfoNotifyUpd);
+
+ // Start NotifyPositionUpdate request:
+ iNotifyPosUpdateAO = CT_LbsClientNotifyPosUpdAO::NewL(*this);
+
+ iNotifyPosUpdateAO->NotifyPosUpdateL(iPositioner, *posInfoNotifyUpd);
+
+ // Start a GetLastKnownPosition:
+ // don't put in verify array as this may be cancelled:
+ iTempPosInfo = new(ELeave) TPositionInfo();
+
+ iGetLastKnownPosAO = CT_LbsClientGetLastKnownPosAO::NewL(*this);
+
+ iGetLastKnownPosAO->GetLastKnownPosL(iPositioner, *iTempPosInfo);
+
+ // cancel the last known position. Note that we do this directly, NOT by calling the AO's cancel()
+ // so that the AO's RunL(), and therefore our callback, will be called and we can check the result
+ TInt err;
+ err = iPositioner.CancelRequest(EPositionerGetLastKnownPosition);
+ if(KErrNotFound != err)
+ {
+ SetTestStepResult(EFail);
+ }
+
+ // Start a timer to make sure neither of above times out:
+ iTimer = CPeriodic::New(CActive::EPriorityStandard);
+ TCallBack callbackFunction = TCallBack(TimerCallback, this);
+
+ //
+ //
+ // NB - THIS VALUE WAS 10 SEC AND THE TIMER EXPIRED, CAUSING THE TEST
+ // TO FAIL. NEED TO FIND OUT WHY THIS VALUE IS OK BUT THAT ONE WAS NOT.
+ // PUT BACK TEMPORARILY TO GET RID OF REGRESSION FAILURE
+ //
+ iTimer->Start( 22000000, 0, callbackFunction);
+
+ // can start the scheduler now as there are async requests issued
+ CActiveScheduler::Start();
+
+ // All requests have now completed
+
+ CleanupStack::PopAndDestroy(&iPositioner);
+ }
+ break;
+
+ default:
+ {
+ User::Leave(KErrArgument);
+ }
+ }// end switch
+ }//end if GetIntFromConfig
+
+ CleanupStack::PopAndDestroy(&iServer);
+
+ } // end if TestStepResult
+
+ INFO_PRINTF1(_L("<<CT_LbsClientStep_MultiReq::doTestStepL()"));
+
+ return TestStepResult();
+ }
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/lbsclient/src/ctlbsclientstepnotifyposupdate.cpp Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,1441 @@
+// 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 ctlbsclientstep_notifyposupdate.cpp
+// This is the class implementation for the Notify Position Update Tests
+//
+//
+
+#include "ctlbsclientstepnotifyposupdate.h"
+
+#include <lbs.h>
+#include <lbssatellite.h>
+
+#include "tlbsutils.h"
+#include "ctlbsasyncwaiter.h"
+
+
+// constant definitions
+_LIT(KLbsClientStepNotifyPosUpdate, "LbsClientStepNotifyPosUpdate");
+
+//profile_id in ini file
+_LIT(KLbsProfileId, "profile_id");
+
+//max_time in ini file
+_LIT(KLbsMaxTime, "max_time");
+
+
+const TTimeIntervalMicroSeconds KModuleTimeout = 6000000;//makes test module time out(which should be more than the Maxtime in lbsprofile.ini)
+
+/**
+ * Sets a Requestor for now - TODO will be removed with new location server
+ */
+void CT_LbsClientStep_NotifyPosUpdate::TempSetRequestorL()
+ {
+ User::LeaveIfError(iPositioner.SetRequestor( CRequestor::ERequestorService,
+ CRequestor::EFormatApplication,
+ _L("Tom Tom")));
+ }
+
+
+/**
+ * Destructor
+ */
+CT_LbsClientStep_NotifyPosUpdate::~CT_LbsClientStep_NotifyPosUpdate()
+ {
+ delete iLbsAdmin;
+ }
+
+
+/**
+ * Constructor
+ */
+CT_LbsClientStep_NotifyPosUpdate::CT_LbsClientStep_NotifyPosUpdate(CT_LbsClientServer& aParent) : CT_LbsClientStep(aParent),iLbsAdmin(NULL),iRequestedAssData(FALSE), iReceivedAssData(FALSE)
+ {
+
+ SetTestStepName(KLbsClientStep_NotifyPosUpdate);
+ }
+
+
+/**
+Static Constructor
+*/
+CT_LbsClientStep_NotifyPosUpdate* CT_LbsClientStep_NotifyPosUpdate::New(CT_LbsClientServer& aParent)
+ {
+
+ // Note the lack of ELeave.
+ // This means that having insufficient memory will return NULL;
+
+ CT_LbsClientStep_NotifyPosUpdate* testStep = new CT_LbsClientStep_NotifyPosUpdate(aParent);
+ if (testStep)
+ {
+ TInt err = KErrNone;
+
+ TRAP(err, testStep->ConstructL());
+ if (err)
+ {
+ delete testStep;
+ testStep = NULL;
+ }
+ }
+ return testStep;
+ }
+
+
+void CT_LbsClientStep_NotifyPosUpdate::ConstructL()
+ {
+ // create the admin
+ iLbsAdmin = CLbsAdmin::NewL();
+
+ }
+
+//from MT_NotifyPosUpdateObserver:
+/**
+ * Callback - called when NotifyPositionUpdate request completes
+ */
+
+void CT_LbsClientStep_NotifyPosUpdate::NotifyPositionUpdateCallback(TRequestStatus& aStatus)
+ {
+ TInt err = aStatus.Int();
+ if (KErrCancel != err)
+ {
+ SetTestStepResult(EFail); // the request always gets cancelled (see test 0122)
+ }
+ CActiveScheduler::Stop();
+ }
+
+/**
+ * @return - TVerdict code
+ * Override of base class pure virtual
+ * Our implementation only gets called if the base class doTestStepPreambleL() did
+ * not leave. That being the case, the current test result value will be EPass.
+ */
+TVerdict CT_LbsClientStep_NotifyPosUpdate::doTestStepL()
+ {
+ // Generic test step used to test the LBS Client Notify position update API.
+ INFO_PRINTF1(_L(">>CT_LbsClientStep_NotifyPosUpdate::doTestStepL()"));
+
+ if (TestStepResult()==EPass)
+ {
+ TInt err = KErrNone;
+
+ // Connect to self locate server.
+ err = iServer.Connect();
+ User::LeaveIfError(err);
+ CleanupClosePushL(iServer);
+
+ // Carryout unique test actions.
+ TInt testCaseId;
+ if (GetIntFromConfig(ConfigSection(), KTestCaseId, testCaseId))
+ {
+ switch (testCaseId)
+ {
+ // Test case LBS-NotifyPosUpdate-0001
+ case 1:
+ case 29: // Test case LBS-NotifyPosUpdate-0029
+ case 30: // Test case LBS-NotifyPosUpdate-0030
+ case 101:
+ case 105:
+ case 201: // in Lbs "original" mode no ref position!
+ {
+ T_LbsUtils utils;
+
+ // Open positioner.
+ err = iPositioner.Open(iServer);
+ User::LeaveIfError(err);
+ CleanupClosePushL(iPositioner);
+
+ // For this test an additional reference position will be returned.
+ if ((testCaseId == 101) || (testCaseId == 105))
+ {
+
+ if (testCaseId == 105)
+ {
+ TModuleDataIn modDataIn; // Used to send test information to the test module.
+ modDataIn.iRequestType = TModuleDataIn::EModuleRequestTestMode;
+ modDataIn.iAssDataTestMode = TModuleDataIn::EModuleTestModeAssDataOn_EarlyPosUpdates;
+ // Inform the test module of the required test mode - will block.
+ utils.NotifyModuleOfConfigChangeL(modDataIn);
+ }
+
+ // Setup netsim.
+ User::LeaveIfError(OpenNetSim());
+
+ // Request notify for the expected reference position.
+ TPositionInfo actualRefPosInfo;
+
+ err = DoNotifyUpdateL(actualRefPosInfo);
+ if (err)
+ {
+ INFO_PRINTF2(_L("Failed test, reference position request returned err %d."), err);
+
+ SetTestStepResult(EFail);
+ }
+
+ // Verify reference position.
+ TPositionInfo verifyRefPosInfo;
+
+ verifyRefPosInfo.SetPosition(iRefPos);
+ if (!utils.Compare_PosInfo(verifyRefPosInfo, actualRefPosInfo))
+ {
+ if(!iParent.iSharedData->iTestModuleInUse)
+ {
+ WARN_PRINTF1(_L("WARNING: position received was not reference position"));
+ }
+ else
+ {
+ INFO_PRINTF1(_L("Failed test, reference position incorrect."));
+ SetTestStepResult(EFail);
+ }
+ }
+ }
+
+
+ // Create a posinfo and store in our shared array for later verification.
+ RPointerArray<TAny>& posInfoArr = iParent.iSharedData->iCurrentPosInfoArr;
+ TPositionInfo* posInfo = new(ELeave) TPositionInfo();
+
+ utils.ResetAndDestroy_PosInfoArr(posInfoArr); // Clear previous entries before new entry is appended.
+
+ posInfoArr.Append(posInfo);
+
+ // Get the actual position
+ err = DoNotifyUpdateL(*posInfo);
+ if (KErrNone != err)
+ {
+ SetTestStepResult(EFail);
+ }
+
+ // Cleanup.
+ CleanupStack::PopAndDestroy(&iPositioner);
+ if ((testCaseId == 101) || (testCaseId == 105))
+ {
+ CloseNetSim();
+ }
+
+ break;
+ }
+
+
+ // Test case LBS-NotifyPosUpdate-0003
+ case 3:
+ {
+ // Select the Network module because it does not support TPositionSatelliteInfo,
+ // then request position update and expect satellite info, which should return
+ // in KErrArgument.
+ TPositionModuleId modId;
+
+ T_LbsUtils utils;
+ modId = utils.GetNetworkModuleIdL(iServer);
+
+ // Select the network module.
+ User::LeaveIfError(iPositioner.Open(iServer, modId));
+ CleanupClosePushL(iPositioner);
+
+ // Try to get the actual position, using TPositionSatellite which is not
+ // supported by the selected module.
+ TPositionSatelliteInfo posInfo;
+
+ err = DoNotifyUpdateL(posInfo);
+ if (KErrArgument == err)
+ {
+ INFO_PRINTF2(_L("correct err %d returned"), err);
+ }
+ else
+ {
+ INFO_PRINTF2(_L("incorrect err %d returned"), err);
+ SetTestStepResult(EFail);
+ }
+
+ CleanupStack::PopAndDestroy(&iPositioner);
+ break;
+ }
+
+ // Test case LBS-NotifyPosUpdate-0005
+ case 5:
+ {
+
+ CLbsAdmin::TSelfLocateService selflocate;
+
+
+ User::LeaveIfError(iLbsAdmin->Set(KLbsSettingHomeSelfLocate, CLbsAdmin::ESelfLocateOff));
+ User::LeaveIfError(iLbsAdmin->Get(KLbsSettingHomeSelfLocate, selflocate));
+
+ if(selflocate != CLbsAdmin::ESelfLocateOff)
+ {
+ SetTestStepResult(EFail);
+ }
+ else
+ {
+ // Open positioner.
+ err = iPositioner.Open(iServer);
+ User::LeaveIfError(err);
+ CleanupClosePushL(iPositioner);
+
+ TPositionInfo notifyPosInfo;
+ err = DoNotifyUpdateL(notifyPosInfo);
+ if(KErrAccessDenied != err)
+ {
+ SetTestStepResult(EFail);
+ }
+ }
+ User::LeaveIfError(iLbsAdmin->Set(KLbsSettingHomeSelfLocate, CLbsAdmin::ESelfLocateOn));
+
+ CleanupStack::PopAndDestroy(&iPositioner);
+
+ }
+ break;
+
+ // Test case LBS-NotifyPosUpdate-0006
+ case 6:
+ {
+ // Open positioner.
+ User::LeaveIfError(iPositioner.Open(iServer));
+ CleanupClosePushL(iPositioner);
+
+ TPositionInfo posInfoNotifyUpd;
+
+ TRequestStatus status;
+ TBool cancelled;
+
+ TempSetRequestorL();
+ iPositioner.NotifyPositionUpdate(posInfoNotifyUpd, status);
+
+ TInt err = iPositioner.CancelRequest(EPositionerNotifyPositionUpdate);
+
+ if(KErrNone == err)
+ {
+ cancelled = TRUE;
+ }
+ else
+ {
+ cancelled = FALSE;
+ }
+
+ // this should complete with either KErrNone or KErrCancel
+ User::WaitForRequest(status);
+
+ err = status.Int();
+
+ if(cancelled)
+ {
+ if((KErrCancel != err) && (KErrNone != err))
+ {
+ SetTestStepResult(EFail);
+ }
+ }
+ else
+ {
+ if(KErrNone != err)
+ {
+ SetTestStepResult(EFail);
+ }
+ }
+
+ CleanupStack::PopAndDestroy(&iPositioner);
+
+ }
+ break;
+
+ // Test case LBS-NotifyPosUpdate-0007
+ case 7:
+ {
+ // Note: Not connecting to position server.
+ TPositionInfo notifyPosInfo;
+ TRequestStatus status;
+
+ // should panic with EPositionServerBadHandle
+ iPositioner.NotifyPositionUpdate(notifyPosInfo, status);
+ }
+ break;
+
+ // Test case LBS-NotifyPosUpdate-0008
+ case 8:
+ {
+ // Open positioner.
+ User::LeaveIfError(iPositioner.Open(iServer));
+ CleanupClosePushL(iPositioner);
+
+ TPositionInfo notifyPosInfo, notifyPosInfo2;
+ TRequestStatus status, status2;
+
+ TempSetRequestorL();
+ // attempt multiple NotifyPositionUpdates on same subsession:
+ iPositioner.NotifyPositionUpdate(notifyPosInfo, status);
+
+ // expected to panic with EPositionDuplicateRequest:
+ iPositioner.NotifyPositionUpdate(notifyPosInfo2, status2);
+
+ // need to block here so that loc server can run and recieve both
+ // requests - its the second request that causes the panic!
+ User::After(1);
+ // if we get here, we've failed to panic
+ SetTestStepResult(EFail);
+
+ CleanupStack::PopAndDestroy(&iPositioner);
+ }
+ break;
+
+ // Test case LBS-NotifyPosUpdate-0014 INCOMPLETE
+ case 14:
+ {
+ // Set 'autonomous' mode
+ CLbsAdmin::TGpsMode mode;
+
+ User::LeaveIfError(iLbsAdmin->Set(KLbsSettingHomeGpsMode, CLbsAdmin::EGpsAutonomous));
+ User::LeaveIfError(iLbsAdmin->Get(KLbsSettingHomeGpsMode, mode));
+
+ // TODO: figure out how to get notifications of assistance data requests (MLbsNetSimTestObserver?)
+ // If we get notification before Notify Update completes, then we fail
+
+ if(mode != CLbsAdmin::EGpsAutonomous)
+ {
+ SetTestStepResult(EFail);
+ }
+ else // Request a location update
+ {
+ // Open positioner.
+ User::LeaveIfError(iPositioner.Open(iServer));
+ CleanupClosePushL(iPositioner);
+
+ // Create a posinfos and store in our shared array for later verification.
+ RPointerArray<TAny>& posInfoArr = iParent.iSharedData->iCurrentPosInfoArr;
+
+ T_LbsUtils utils;
+ utils.ResetAndDestroy_PosInfoArr(posInfoArr); // Clear previous entries before new entry is appended.
+
+ TPositionInfo* posInfoNotifyUpd = new(ELeave) TPositionInfo();
+
+ posInfoArr.Append(posInfoNotifyUpd);
+
+ err = DoNotifyUpdateL(*posInfoNotifyUpd);
+ if (KErrNone != err)
+ {
+ SetTestStepResult(EFail);
+ }
+
+ CleanupStack::PopAndDestroy(&iPositioner);
+ }
+
+
+ }
+ break;
+
+ // Test case LBS-NotifyPosUpdate-0015 UNSUPPORTED
+ case 15:
+ {
+ // this test should not be run; lbs currently doesn't support AlwaysTerminalBased mode
+ __ASSERT_ALWAYS(FALSE, User::Panic(_L("LBS-NotifyPosUpdate-0015 should not be run"), KErrNotSupported));
+
+ // Set 'assisted-only' (EGpsAlwaysTerminalBased) mode
+ CLbsAdmin::TGpsMode mode;
+
+ User::LeaveIfError(iLbsAdmin->Set(KLbsSettingHomeGpsMode, CLbsAdmin::EGpsAlwaysTerminalBased));
+ User::LeaveIfError(iLbsAdmin->Get(KLbsSettingHomeGpsMode, mode));
+
+ // TODO: figure out how to get notifications of assistance data requests (MLbsNetSimTestObserver?)
+ // If we do not get notification before Notify Update completes, then we fail
+
+ if(mode != CLbsAdmin::EGpsAlwaysTerminalBased)
+ {
+ SetTestStepResult(EFail);
+ }
+ else // Request a location update
+ {
+ // Open positioner.
+ User::LeaveIfError(iPositioner.Open(iServer));
+ CleanupClosePushL(iPositioner);
+
+ // Create a posinfos and store in our shared array for later verification.
+ RPointerArray<TAny>& posInfoArr = iParent.iSharedData->iCurrentPosInfoArr;
+
+ T_LbsUtils utils;
+ utils.ResetAndDestroy_PosInfoArr(posInfoArr); // Clear previous entries before new entry is appended.
+
+ TPositionInfo* posInfoNotifyUpd = new(ELeave) TPositionInfo();
+
+ posInfoArr.Append(posInfoNotifyUpd);
+
+ err = DoNotifyUpdateL(*posInfoNotifyUpd); // can use this blocking version if netsim uses callbacks for assistance data notifications
+ // TODO iRequestedAssData needs to be set in assist data callback
+ if (KErrNone != err || !iRequestedAssData || !iReceivedAssData)
+ {
+ SetTestStepResult(EFail);
+ }
+
+ // verify that preferred positioning mode was used:
+ if(EPositionModeReasonNone != posInfoNotifyUpd->PositionMode())
+ {
+ SetTestStepResult(EFail);
+ }
+
+ CleanupStack::PopAndDestroy(&iPositioner);
+ }
+ }
+ break;
+
+ // Test case LBS-NotifyPosUpdate-0016 INCOMPLETE
+ case 16:
+ {
+ // Set 'assisted-if-possible' (EGpsPreferTerminalBased) mode
+ CLbsAdmin::TGpsMode mode;
+
+ User::LeaveIfError(iLbsAdmin->Set(KLbsSettingHomeGpsMode, CLbsAdmin::EGpsPreferTerminalBased));
+ User::LeaveIfError(iLbsAdmin->Get(KLbsSettingHomeGpsMode, mode));
+
+ #pragma message("TO DO: LBS-NotifyPosUpdate-0016 INCOMPLETE")
+ // figure out how to get notifications of assistance data requests (MLbsNetSimTestObserver?)
+ // If we do not get notification before Notify Update completes, then we fail
+
+ // do we need to do something to make sure that we require assistancce data (no assistance data already retrieved)?
+
+ // Configure NetSim to indciate that network is not available
+
+
+ if(mode != CLbsAdmin::EGpsPreferTerminalBased)
+ {
+ SetTestStepResult(EFail);
+ }
+ else // Request a location update
+ {
+ // Open positioner.
+ User::LeaveIfError(iPositioner.Open(iServer));
+ CleanupClosePushL(iPositioner);
+
+ // Create a posinfos and store in our shared array for later verification.
+ RPointerArray<TAny>& posInfoArr = iParent.iSharedData->iCurrentPosInfoArr;
+
+ T_LbsUtils utils;
+ utils.ResetAndDestroy_PosInfoArr(posInfoArr); // Clear previous entries before new entry is appended.
+
+ TPositionInfo* posInfoNotifyUpd = new(ELeave) TPositionInfo();
+
+ posInfoArr.Append(posInfoNotifyUpd);
+
+ err = DoNotifyUpdateL(*posInfoNotifyUpd); // can use this blocking version if netsim uses callbacks for assistance data notifications
+ if (KErrNone != err || !iRequestedAssData)
+ {
+ SetTestStepResult(EFail);
+ }
+
+ // verify that preferred positioning mode was not used:
+ if(EPositionModeReasonNetworkError != posInfoNotifyUpd->PositionMode())
+ {
+ SetTestStepResult(EFail);
+ }
+
+ CleanupStack::PopAndDestroy(&iPositioner);
+ }
+ }
+ break;
+
+ // Test case LBS-NotifyPosUpdate-0017 UNSUPPORTED
+ case 17:
+ {
+ // this test should not be run; lbs currently doesn't support AlwaysTerminalBased mode
+ __ASSERT_ALWAYS(FALSE, User::Panic(_L("LBS-NotifyPosUpdate-0017 should not be run"), KErrNotSupported));
+
+ // Set 'assisted-only' (EGpsAlwaysTerminalBased) mode
+ CLbsAdmin::TGpsMode mode;
+
+ User::LeaveIfError(iLbsAdmin->Set(KLbsSettingHomeGpsMode, CLbsAdmin::EGpsAlwaysTerminalBased));
+ User::LeaveIfError(iLbsAdmin->Get(KLbsSettingHomeGpsMode, mode));
+
+ // Configure NetSim to indciate that network is not available
+
+
+ if(mode != CLbsAdmin::EGpsAlwaysTerminalBased)
+ {
+ SetTestStepResult(EFail);
+ }
+ else // Request a location update
+ {
+ // Open positioner.
+ User::LeaveIfError(iPositioner.Open(iServer));
+ CleanupClosePushL(iPositioner);
+
+ TPositionInfo posInfoNotifyUpd;
+
+ err = DoNotifyUpdateL(posInfoNotifyUpd); // can use this blocking version if netsim uses callbacks for assistance data notifications
+ if (KErrPositionMethodFailure != err)
+ {
+ SetTestStepResult(EFail);
+ }
+
+ CleanupStack::PopAndDestroy(&iPositioner);
+ }
+ }
+ break;
+
+ // Test case LBS-NotifyPosUpdate-0018 INCOMPLETE
+ case 18:
+ {
+ #pragma message("TO DO: LBS-NotifyPosUpdate-0018 INCOMPLETE")
+ // Set 'assisted-if-possible' (EGpsPreferTerminalBased) mode
+ CLbsAdmin::TGpsMode mode;
+
+ User::LeaveIfError(iLbsAdmin->Set(KLbsSettingHomeGpsMode, CLbsAdmin::EGpsPreferTerminalBased));
+ User::LeaveIfError(iLbsAdmin->Get(KLbsSettingHomeGpsMode, mode));
+
+ // TODO: figure out how to get notifications of assistance data requests (MLbsNetSimTestObserver?)
+ // If we do not get notification before Notify Update completes, then we fail
+
+ // TODO: do we need to do something to make sure that we require assistancce data (no assistance data already retrieved)?
+
+ // TODO Configure NetSim to return bad/no assistance data
+ // this may involve writing an assistance data plugin to provide bad data!?
+
+ if(mode != CLbsAdmin::EGpsPreferTerminalBased)
+ {
+ SetTestStepResult(EFail);
+ }
+ else // Request a location update
+ {
+ // Open positioner.
+ User::LeaveIfError(iPositioner.Open(iServer));
+ CleanupClosePushL(iPositioner);
+
+ // Create a posinfos and store in our shared array for later verification.
+ RPointerArray<TAny>& posInfoArr = iParent.iSharedData->iCurrentPosInfoArr;
+
+ T_LbsUtils utils;
+ utils.ResetAndDestroy_PosInfoArr(posInfoArr); // Clear previous entries before new entry is appended.
+
+ TPositionInfo* posInfoNotifyUpd = new(ELeave) TPositionInfo();
+
+ posInfoArr.Append(posInfoNotifyUpd);
+
+ err = DoNotifyUpdateL(*posInfoNotifyUpd); // can use this blocking version if netsim uses callbacks for assistance data notifications
+ if (KErrNone != err || !iRequestedAssData)
+ {
+ SetTestStepResult(EFail);
+ }
+
+ // verify that preferred positioning mode was not used and appropriate reason given:
+ if(EPositionModeReasonDataError != posInfoNotifyUpd->PositionMode())
+ {
+ SetTestStepResult(EFail);
+ }
+
+ CleanupStack::PopAndDestroy(&iPositioner);
+ }
+ }
+ break;
+
+ // Test case LBS-NotifyPosUpdate-0019
+ case 19:
+ {
+ // Open positioner.
+ User::LeaveIfError(iPositioner.Open(iServer));
+ CleanupClosePushL(iPositioner);
+
+ // Create a posinfos and store in our shared array for later verification.
+ RPointerArray<TAny>& posInfoArr = iParent.iSharedData->iCurrentPosInfoArr;
+
+ T_LbsUtils utils;
+ utils.ResetAndDestroy_PosInfoArr(posInfoArr); // Clear previous entries before new entry is appended.
+
+ TInt numPositions = iParent.iSharedData->iVerifyPosInfoArr.Count();
+ while(numPositions--)
+ {
+ TPositionInfo* posInfoNotifyUpd = new(ELeave) TPositionInfo();
+
+ posInfoArr.Append(posInfoNotifyUpd);
+
+ User::After(500*1000); // on Winscw all the target time requests
+ // can get stamped with exactly the same
+ // time and thus all three requests may be
+ // satified from the one the bus
+ // then the test fails! This behaviour is OK but
+ // not what the test is trying to test for . Hence ensure
+ // all three target times are different by the delay
+
+ err = DoNotifyUpdateL(*posInfoNotifyUpd);
+ if (KErrNone != err)
+ {
+ SetTestStepResult(EFail);
+ }
+ }
+
+ // Cleanup.
+ CleanupStack::PopAndDestroy(&iPositioner);
+ }
+ break;
+
+ // Test case LBS-NotifyPosUpdate-0022
+ case 22:
+ {
+ TInt profileid_ini,maxtime_ini;
+ TBool profileid_exists,maxtime_exists;
+ profileid_exists = GetIntFromConfig(ConfigSection(), KLbsProfileId, profileid_ini);
+ if(!profileid_exists)
+ {
+ INFO_PRINTF1(_L("Could not get profileid from ini file"));
+ SetTestStepResult(EFail);
+ }
+
+ maxtime_exists = GetIntFromConfig(ConfigSection(), KLbsMaxTime, maxtime_ini);
+ if(!maxtime_exists)
+ {
+ INFO_PRINTF1(_L("Could not get maxtime from ini file"));
+ SetTestStepResult(EFail);
+ }
+
+ TLbsQualityProfileId profileId;
+ //Set SelfLocate quality profile & valid id(which is exist in lbsprofile.ini)
+ User::LeaveIfError(iLbsAdmin->Set(KLbsSettingQualityProfileSelfLocate, TLbsQualityProfileId(profileid_ini)));
+ // Verify that the setting is what we expect
+ User::LeaveIfError(iLbsAdmin->Get(KLbsSettingQualityProfileSelfLocate, profileId));
+ if(profileId != TLbsQualityProfileId(profileid_ini))
+ {
+ SetTestStepResult(EFail);
+ }
+ else // Request a location update
+ {
+ // Open positioner.
+ User::LeaveIfError(iPositioner.Open(iServer));
+ CleanupClosePushL(iPositioner);
+
+ // Create a posinfos and store in our shared array for later verification.
+ RPointerArray<TAny>& posInfoArr = iParent.iSharedData->iCurrentPosInfoArr;
+
+ T_LbsUtils utils;
+ utils.ResetAndDestroy_PosInfoArr(posInfoArr); // Clear previous entries before new entry is appended.
+
+ TPositionInfo* posInfoNotifyUpd = new(ELeave) TPositionInfo();
+ posInfoArr.Append(posInfoNotifyUpd);
+
+ TTime timeRequested,timeReceived;
+
+ // Position requested at
+ timeRequested.UniversalTime();
+
+ //Do request position update
+ err = DoNotifyUpdateL(*posInfoNotifyUpd);
+ if ((KErrNone != err) && (KPositionQualityLoss != err))
+ {
+ INFO_PRINTF2(_L("NotifyUpdate failed with %d "), err);
+ SetTestStepResult(EFail);
+ }
+ //Need to verify MaxTime
+ else
+ {
+ // Check we dont have a final network postion
+ if (posInfoNotifyUpd->PositionMode() & TPositionModuleInfo::ETechnologyNetwork)
+ {
+ INFO_PRINTF1(_L("Failed: Recieved a final network postion"));
+ SetTestStepResult(EFail);
+ }
+
+ TPosition pos;
+ posInfoNotifyUpd->GetPosition(pos);
+ //Position received at
+ timeReceived = pos.Time();
+
+ //Timedifference between position actually received and position actually requested
+ TInt64 timediff;
+ timediff = timeReceived.Int64() - timeRequested.Int64();
+ //compare timediff with maxtime
+ if(timediff > maxtime_ini)
+ {
+ INFO_PRINTF1(_L("Failed: Position received outside time range"));
+ SetTestStepResult(EFail);
+ }
+
+ }
+
+ CleanupStack::PopAndDestroy(&iPositioner);
+ }
+ }
+ break;
+
+ // Test case LBS-NotifyPosUpdate-0024
+ case 24:
+ // Test case LBS-NotifyPosUpdate-0025
+ case 25:
+ {
+ TInt profileid_ini;
+ TBool profileid_exists;
+ profileid_exists = GetIntFromConfig(ConfigSection(), KLbsProfileId, profileid_ini);
+ if(!profileid_exists)
+ {
+ INFO_PRINTF1(_L("Could not get profileid from section"));
+ SetTestStepResult(EFail);
+ }
+
+ TLbsQualityProfileId profileId;
+ //Set SelfLocate quality profile & valid id(which is exist in lbsprofile.ini)
+ User::LeaveIfError(iLbsAdmin->Set(KLbsSettingQualityProfileSelfLocate, TLbsQualityProfileId(profileid_ini)));
+ // Verify that the setting is what we expect
+ User::LeaveIfError(iLbsAdmin->Get(KLbsSettingQualityProfileSelfLocate, profileId));
+ if(profileId != TLbsQualityProfileId(profileid_ini))
+ {
+ SetTestStepResult(EFail);
+ }
+ else // Request a location update
+ {
+ if(testCaseId==24)
+ {
+ //makes test module timeout
+ if (iParent.iSharedData->iTestModuleInUse)
+ {
+ T_LbsUtils utils;
+ TModuleDataIn modDataIn;
+
+ modDataIn.iRequestType = TModuleDataIn::EModuleRequestTimeOut;
+ modDataIn.iTimeOut = KModuleTimeout;
+
+ utils.NotifyModuleOfConfigChangeL(modDataIn); // This will block.
+ }
+ }
+ // Open positioner.
+ User::LeaveIfError(iPositioner.Open(iServer));
+ CleanupClosePushL(iPositioner);
+
+ TPositionInfo posInfoNotifyUpd;
+ //Do request to position update
+ err = DoNotifyUpdateL(posInfoNotifyUpd);
+ //Position received at
+
+ if (testCaseId == 24)
+ {
+ if (err != KErrTimedOut)
+ {
+ INFO_PRINTF1(_L("<FONT><B>position update not failed with error -33</B></FONT>"));
+ SetTestStepResult(EFail);
+ }
+
+ }
+ else
+ {
+ if (err != KPositionQualityLoss)
+ SetTestStepResult(EFail);
+ }
+
+ CleanupStack::PopAndDestroy(&iPositioner);
+ }
+ }
+ break;
+
+ // Test case LBS-NotifyPosUpdate-0027
+ case 27:
+ // Test case LBS-NotifyPosUpdate-0028
+ case 28:
+ {
+ TInt profileid_ini;
+ TBool profileid_exists;
+ TPositionUpdateOptions options;
+ T_LbsUtils utils;
+
+ profileid_exists = GetIntFromConfig(ConfigSection(), KLbsProfileId, profileid_ini);
+ if(!profileid_exists)
+ {
+ INFO_PRINTF1(_L("Could not get profileid from ini file"));
+ SetTestStepResult(EFail);
+ }
+
+ //Set SelfLocate quality profile & valid id(which is exist in lbsprofile.ini)
+ User::LeaveIfError(iLbsAdmin->Set(KLbsSettingQualityProfileSelfLocate, TLbsQualityProfileId(profileid_ini)));
+
+ if(testCaseId==28)
+ {
+ //makes test module timeout
+ const TTimeIntervalMicroSeconds KModuleTimeout = 60000000; // 1 minute
+ if (iParent.iSharedData->iTestModuleInUse)
+ {
+ T_LbsUtils utils;
+ TModuleDataIn modDataIn;
+
+ modDataIn.iRequestType = TModuleDataIn::EModuleRequestTimeOut;
+ modDataIn.iTimeOut = KModuleTimeout;
+
+ utils.NotifyModuleOfConfigChangeL(modDataIn); // This will block.
+ }
+ }
+ // Open positioner.
+ User::LeaveIfError(iPositioner.Open(iServer));
+ CleanupClosePushL(iPositioner);
+
+ // Create a posinfos and store in our shared array for later verification.
+ RPointerArray<TAny>& posInfoArr = iParent.iSharedData->iCurrentPosInfoArr;
+ utils.ResetAndDestroy_PosInfoArr(posInfoArr); // Clear previous entries before new entry is appended.
+
+ TPositionInfo* posInfoUpd = new(ELeave) TPositionInfo();
+ posInfoArr.Append(posInfoUpd);
+
+
+ options.SetUpdateInterval(0);
+ const TTimeIntervalMicroSeconds KMaxFix = 30000000; // 30s
+ options.SetUpdateTimeOut(KMaxFix);
+ iPositioner.SetUpdateOptions(options);
+
+ err = DoNotifyUpdateL(*posInfoUpd);
+
+ if (testCaseId == 27)
+ {
+ if (err != KPositionQualityLoss)
+ SetTestStepResult(EFail);
+ }
+ else
+ {
+ if (err != KErrTimedOut)
+ SetTestStepResult(EFail);
+ }
+ // Cleanup.
+ CleanupStack::PopAndDestroy(&iPositioner);
+ }
+ break;
+
+ case 26:
+ {
+ //Set up a 15 second interval between updates, with a 5 second timeout
+ TPositionUpdateOptions posUpdateOpts(15000000, 5000000, 0, EFalse);
+
+ // Open positioner.
+ err = iPositioner.Open(iServer);
+ User::LeaveIfError(err);
+ if(err != KErrNone)
+ {
+ INFO_PRINTF1(_L("** SubSession Failed to open **"));
+ SetTestStepResult(EFail);
+ }
+ CleanupClosePushL(iPositioner);
+
+ TPositionInfo* posInfo = new(ELeave) TPositionInfo();
+ CleanupStack::PushL(posInfo);
+
+ iPositioner.SetUpdateOptions(posUpdateOpts);
+ User::LeaveIfError(iPositioner.SetRequestor( CRequestor::ERequestorService,
+ CRequestor::EFormatApplication,
+ _L("Tom Tom")));
+ TRequestStatus status;
+
+ //Ask for a position update (should get this one)
+ iPositioner.NotifyPositionUpdate(*posInfo,status);
+
+ User::WaitForRequest(status);
+ if(status != KErrNone)
+ {
+ INFO_PRINTF2(_L("Failed test, expected KErrNone, request finished with err %d."), status.Int());
+ SetTestStepResult(EFail);
+ }
+
+const TTimeIntervalMicroSeconds KModuleTimeout = 60000000; // 1 minute
+const TTimeIntervalMicroSeconds KModuleNoTimeout = 0;
+ // Set a delay in the test AGPS manager big enough to guarantee
+ // we won't get a response to the next one
+ if (iParent.iSharedData->iTestModuleInUse)
+ {
+ T_LbsUtils utils;
+ TModuleDataIn modDataIn;
+
+ modDataIn.iRequestType = TModuleDataIn::EModuleRequestTimeOut;
+ modDataIn.iTimeOut = KModuleTimeout;
+
+ utils.NotifyModuleOfConfigChangeL(modDataIn); // This will block.
+ }
+
+ // Try again. Shouldn't get a response this time as it times out.
+ iPositioner.NotifyPositionUpdate(*posInfo,status);
+
+ User::WaitForRequest(status);
+ if(status != KErrTimedOut)
+ {
+ INFO_PRINTF2(_L("Failed test, expected KErrTimedOut, request finished with err %d."), status.Int());
+ SetTestStepResult(EFail);
+ }
+
+ // Get rid of the AGPS manager delay.
+ if (iParent.iSharedData->iTestModuleInUse)
+ {
+ T_LbsUtils utils;
+ TModuleDataIn modDataIn;
+
+ modDataIn.iRequestType = TModuleDataIn::EModuleRequestTimeOut;
+ modDataIn.iTimeOut = KModuleNoTimeout;
+
+ utils.NotifyModuleOfConfigChangeL(modDataIn); // This will block.
+ }
+
+ //Ask for a position update (should get this one again)
+ iPositioner.NotifyPositionUpdate(*posInfo,status);
+
+ User::WaitForRequest(status);
+ if(status != KErrNone)
+ {
+ INFO_PRINTF2(_L("Failed test, expected KErrNone, request finished with err %d."), status.Int());
+ SetTestStepResult(EFail);
+ }
+
+ iPositioner.Close();
+
+ CleanupStack::PopAndDestroy(posInfo);
+ CleanupStack::PopAndDestroy(&iPositioner);
+ } // case 26
+ break;
+ // Test case LBS-NotifyPosUpdate-0122
+ case 122:
+ {
+ const TLbsQualityProfileId KLbsTest0122QualityProfileId = 5;
+ TLbsQualityProfileId profileId122(KLbsTest0122QualityProfileId);
+ TLbsQualityProfileId oldProfileId(9);
+ iLbsAdmin->Get(KLbsSettingQualityProfileSelfLocate, oldProfileId);
+
+ iLbsAdmin->Set(KLbsSettingQualityProfileSelfLocate, profileId122);
+
+ iLbsAdmin->Get(KLbsSettingQualityProfileSelfLocate, profileId122);
+ if (profileId122 != KLbsTest0122QualityProfileId)
+ {
+ INFO_PRINTF2(_L("Fail test: profile should be 5 but its %d."), profileId122);
+ SetTestStepResult(EFail);
+ }
+
+ // the profile.ini file contains a MaxTime= 2147483647
+ CT_LbsClientNotifyPosUpdAO* notifyPosUpdateAO;
+ // Open positioner.
+ User::LeaveIfError(iPositioner.Open(iServer));
+ CleanupClosePushL(iPositioner);
+
+ // Create a posinfo and store in our shared array for later verification.
+ RPointerArray<TAny>& posInfoArr = iParent.iSharedData->iCurrentPosInfoArr;
+ TPositionInfo* posInfoNotifyUpd = new(ELeave) TPositionInfo();
+
+ T_LbsUtils utils;
+ utils.ResetAndDestroy_PosInfoArr(posInfoArr); // Clear previous entries before new entry is appended.
+
+ // this gets deleted by the base class destructor:
+ posInfoArr.Append(posInfoNotifyUpd);
+
+ TModuleDataIn modDataIn;
+
+ modDataIn.iRequestType = TModuleDataIn::EModuleRequestTimeOut;
+ modDataIn.iTimeOut = KModuleTimeout;
+
+ utils.NotifyModuleOfConfigChangeL(modDataIn); // This will block.
+
+ // Start NotifyPositionUpdate request:
+ notifyPosUpdateAO = CT_LbsClientNotifyPosUpdAO::NewL(*this);
+
+ notifyPosUpdateAO->NotifyPosUpdateL(iPositioner, *posInfoNotifyUpd);
+ // User::After(3*1000*1000);
+
+
+ TInt err;
+ err = iPositioner.CancelRequest(EPositionerNotifyPositionUpdate);
+ if(KErrNone != err)
+ {
+ SetTestStepResult(EFail);
+ }
+
+ // can start the scheduler now as there are async requests issued
+ CActiveScheduler::Start();
+
+ CleanupStack::PopAndDestroy(&iPositioner);
+
+ iLbsAdmin->Set(KLbsSettingQualityProfileSelfLocate, oldProfileId);
+
+
+ }
+ break;
+
+ // Test that the final network position is not passed on to the client if they
+ // switch to autonomous mode mid-way through a session.
+ case 1001:
+ {
+ // Set preferred TB mode
+ // Set 'assisted-if-possible' (EGpsPreferTerminalBased) mode
+ CLbsAdmin::TGpsMode mode;
+
+ User::LeaveIfError(iLbsAdmin->Set(KLbsSettingHomeGpsMode, CLbsAdmin::EGpsPreferTerminalBased));
+ User::LeaveIfError(iLbsAdmin->Get(KLbsSettingHomeGpsMode, mode));
+
+ if(mode != CLbsAdmin::EGpsPreferTerminalBased)
+ {
+ SetTestStepResult(EFail);
+ }
+ else // Request a location update
+ {
+
+ // Open positioner.
+ User::LeaveIfError(iPositioner.Open(iServer));
+
+ const TTimeIntervalMicroSeconds KMicroSecondsValue(60*1000*1000);
+ TPositionUpdateOptions posOption;
+ posOption.SetUpdateTimeOut(KMicroSecondsValue);
+ User::LeaveIfError(iPositioner.SetUpdateOptions(posOption));
+
+ CleanupClosePushL(iPositioner);
+
+ // Create a posinfos and store in our shared array for later verification.
+ RPointerArray<TAny>& posInfoArr = iParent.iSharedData->iCurrentPosInfoArr;
+
+ T_LbsUtils utils;
+ utils.ResetAndDestroy_PosInfoArr(posInfoArr); // Clear previous entries before new entry is appended.
+
+ // Setup netsim.
+ User::LeaveIfError(OpenNetSim());
+ TLbsNetPosRequestQuality quality;
+ quality.SetMinHorizontalAccuracy(200);
+ quality.SetMinVerticalAccuracy(20000);
+ iNetSim.SetQuality(quality);
+
+ TPositionInfo* posInfoNotifyUpd = new(ELeave) TPositionInfo();
+
+ posInfoArr.Append(posInfoNotifyUpd);
+
+ // Send the first NPUD & block on response
+ err = DoNotifyUpdateL(*posInfoNotifyUpd);
+ if (KErrNone != err)
+ {
+ SetTestStepResult(EFail);
+ }
+
+ // Set autonomous mode
+ CLbsAdmin::TGpsMode mode;
+
+ User::LeaveIfError(iLbsAdmin->Set(KLbsSettingHomeGpsMode, CLbsAdmin::EGpsAutonomous));
+ User::LeaveIfError(iLbsAdmin->Get(KLbsSettingHomeGpsMode, mode));
+
+ if(mode != CLbsAdmin::EGpsAutonomous)
+ {
+ SetTestStepResult(EFail);
+ }
+ else // Request a location update
+ {
+ //TPositionModuleInfo::TTechnologyType techType;
+
+ // Send the second NPUD & block on response
+ err = DoNotifyUpdateL(*posInfoNotifyUpd);
+
+ // This should not give a final network position response
+ //techType = posInfoNotifyUpd->PositionMode();
+
+ if(err != KPositionQualityLoss)
+ {
+ SetTestStepResult(EFail);
+ }
+ }
+
+ CleanupStack::PopAndDestroy(&iPositioner);
+ CloseNetSim();
+ }
+
+ break;
+ }
+
+ // Test that the final network position is not passed on to the client if they
+ // switch to autonomous mode mid-way through a session.
+ case 1002:
+ {
+ // Set preferred TB mode
+ // Set 'assisted-if-possible' (EGpsPreferTerminalBased) mode
+ CLbsAdmin::TGpsMode mode;
+
+ User::LeaveIfError(iLbsAdmin->Set(KLbsSettingHomeGpsMode, CLbsAdmin::EGpsPreferTerminalBased));
+ User::LeaveIfError(iLbsAdmin->Get(KLbsSettingHomeGpsMode, mode));
+
+ if(mode != CLbsAdmin::EGpsPreferTerminalBased)
+ {
+ SetTestStepResult(EFail);
+ }
+ else // Request a location update
+ {
+
+ // Open positioner.
+ User::LeaveIfError(iPositioner.Open(iServer));
+
+ const TTimeIntervalMicroSeconds KMicroSecondsValue(60*1000*1000);
+ TPositionUpdateOptions posOption;
+ posOption.SetUpdateTimeOut(KMicroSecondsValue);
+ User::LeaveIfError(iPositioner.SetUpdateOptions(posOption));
+
+ CleanupClosePushL(iPositioner);
+
+ // Create a posinfos and store in our shared array for later verification.
+ RPointerArray<TAny>& posInfoArr = iParent.iSharedData->iCurrentPosInfoArr;
+
+ T_LbsUtils utils;
+ utils.ResetAndDestroy_PosInfoArr(posInfoArr); // Clear previous entries before new entry is appended.
+
+ // Setup netsim.
+ User::LeaveIfError(OpenNetSim());
+ TLbsNetPosRequestQuality quality;
+ quality.SetMinHorizontalAccuracy(200);
+ quality.SetMinVerticalAccuracy(20000);
+ iNetSim.SetQuality(quality);
+
+ TPositionInfo* posInfoNotifyUpd = new(ELeave) TPositionInfo();
+
+ posInfoArr.Append(posInfoNotifyUpd);
+
+ // Send the first NPUD & block on response
+ err = DoNotifyUpdateL(*posInfoNotifyUpd);
+ if (KErrNone != err)
+ {
+ SetTestStepResult(EFail);
+ }
+
+ TPositionModuleInfo::TTechnologyType techType;
+
+ // Wait for 10 seconds to allow the FNP to come in then send the next NPUD
+ User::After(10*1000*1000);
+
+ // Send the second NPUD & block on response
+ err = DoNotifyUpdateL(*posInfoNotifyUpd);
+
+ // This should give a final network position response
+ techType = posInfoNotifyUpd->PositionMode();
+
+ if(techType != (TPositionModuleInfo::ETechnologyNetwork |
+ TPositionModuleInfo::ETechnologyAssisted))
+ {
+ INFO_PRINTF1(_L("Failed test, did not get a final network position."));
+ SetTestStepResult(EFail);
+ }
+
+ CleanupStack::PopAndDestroy(&iPositioner);
+ CloseNetSim();
+ }
+
+ break;
+ }
+
+ //Tests within SetUpdateOptions test to ensure that the correct Location Position
+ // is retured from the cache on a second NPUD (with correct MaxAge set). This test
+ // tests to make sure that if the last position to arrive was a reference position
+ // that the reference position is returned
+ case 1003:
+ {
+ //Setup in the TB mode
+ CLbsAdmin::TGpsMode mode;
+
+ User::LeaveIfError(iLbsAdmin->Set(KLbsSettingHomeGpsMode, CLbsAdmin::EGpsPreferTerminalBased));
+ User::LeaveIfError(iLbsAdmin->Get(KLbsSettingHomeGpsMode, mode));
+
+ if(mode != CLbsAdmin::EGpsPreferTerminalBased)
+ {
+ SetTestStepResult(EFail);
+ }
+ else // Request a location update
+ {
+
+ // Open positioner.
+ User::LeaveIfError(iPositioner.Open(iServer));
+ CleanupClosePushL(iPositioner);
+
+ //Setup netsim
+ User::LeaveIfError(OpenNetSim());
+ TLbsNetPosRequestQuality quality;
+ quality.SetMinHorizontalAccuracy(200);
+ quality.SetMinVerticalAccuracy(20000);
+ iNetSim.SetQuality(quality);
+
+ //xx
+ // Set the reference position, which also be used for any required verification.
+ TPosition refPos;
+
+ #define REFPOS_LAT 1
+ #define REFPOS_LONG 1
+ #define REFPOS_ALT 1
+ #define REFPOS_HORZ_ACCURACY 1
+ #define REFPOS_VERT_ACCURACY 1
+
+ refPos.SetCoordinate(REFPOS_LAT, REFPOS_LONG, REFPOS_ALT);
+ refPos.SetAccuracy(REFPOS_HORZ_ACCURACY, REFPOS_VERT_ACCURACY);
+ refPos.SetCurrentTime();
+ iNetSim.SetReferenceLocation(refPos);
+ User::After(500*1000);
+ //xx;
+ //Do first NPUD, this should get a reference position on the reference cache
+ TPositionInfo posInfo;
+ TPositionInfo posInfob;
+
+ // Send the first NPUD & block on response
+ err = DoNotifyUpdateL(posInfo);
+ if (KErrNone != err)
+ {
+ SetTestStepResult(EFail);
+ }
+
+ //Change the update options to set the MaxUpdateAge
+ TPositionUpdateOptions posOpts;
+ posOpts.SetMaxUpdateAge(1*1000000);
+
+ iPositioner.SetUpdateOptions(posOpts);
+
+ //Do the second NPUD, which should return a position from the cache
+ // At this point in time the AGPS module will not yet have produced a position
+ err = DoNotifyUpdateL(posInfob);
+ if (KErrNone != err)
+ {
+ SetTestStepResult(EFail);
+ }
+
+ //Check to see if the returned position is a reference position
+ TPositionModuleInfo::TTechnologyType techType;
+ techType = posInfob.PositionMode();
+
+ if(techType != TPositionModuleInfo::ETechnologyNetwork)
+ {
+ INFO_PRINTF1(_L("Failed test, did not get a Network Reference Position."));
+ SetTestStepResult(EFail);
+ }
+
+ //Since the second position is taken from the cache, check to see the two positions match
+ T_LbsUtils utils;
+ if(!utils.Compare_PosInfo(posInfo, posInfob))
+ {
+ INFO_PRINTF1(_L("Failed test, the two positions are not the same!"));
+ SetTestStepResult(EFail);
+ }
+
+ CleanupStack::PopAndDestroy(&iPositioner);
+ CloseNetSim();
+ }
+
+ break;
+ }
+ case 1004:
+ {
+ TTimeIntervalMicroSeconds iTimeOut;
+ TTime iStartTime;
+ TPositionSatelliteInfo iPos, iPos2;
+ TBool iEOP;
+ // Open positioner.
+ User::LeaveIfError(iPositioner.Open(iServer));
+ CleanupClosePushL(iPositioner);
+
+ TPositionUpdateOptions updateOptions;
+ iTimeOut = 2000000; // Two second timeout.
+
+ const TTimeIntervalMicroSeconds KTimeOut(iTimeOut);
+ updateOptions.SetUpdateTimeOut(KTimeOut);
+ updateOptions.SetAcceptPartialUpdates(ETrue);
+ iPositioner.SetUpdateOptions(updateOptions);
+
+ // Store initial time
+ iStartTime.UniversalTime();
+
+ TInt err = DoNotifyUpdateL(iPos);
+ if (KErrNone != err)
+ {
+ SetTestStepResult(EFail);
+ }
+
+ TTimeIntervalMicroSeconds timeLeft,maxUpdate;
+ TTime cTime;
+ //TPositionSatelliteInfo pos = iPos;
+
+ cTime.UniversalTime();
+ iEOP = EFalse;
+ while (!iEOP)
+ {
+ cTime.UniversalTime();
+ // Requesting another update must be the first thing done in RunL
+ timeLeft = (iTimeOut.Int64() - cTime.MicroSecondsFrom(iStartTime).Int64());
+ maxUpdate = 100000;
+
+ if (timeLeft <= 0)
+ {
+ iEOP = ETrue;
+ timeLeft = 1; // Use a very small value for the last update
+ }
+ else
+ {
+ const TTimeIntervalMicroSeconds KTimeOut(timeLeft);
+ TPositionUpdateOptions posOpts;
+ posOpts.SetUpdateTimeOut(KTimeOut);
+ posOpts.SetMaxUpdateAge(maxUpdate);
+ posOpts.SetAcceptPartialUpdates(ETrue);
+ iPositioner.SetUpdateOptions(posOpts);
+
+ err = DoNotifyUpdateL(iPos);
+ if (KErrNone != err)
+ {
+ SetTestStepResult(EFail);
+ }
+ else
+ {
+ // We have a valid position, test passed
+ SetTestStepResult(EPass);
+ iEOP = ETrue;
+ }
+ }
+ } // end while
+ CleanupStack::PopAndDestroy(&iPositioner);
+ break;
+ }
+
+ // Test case LBS-NotifyPosUpdate-0106 for demonstration of INC117582
+ case 106:
+ {
+
+ TPositionModuleId id;
+ iServer.GetDefaultModuleId(id);
+
+
+ RPositioner positioner1;
+ err = positioner1.Open(iServer, id);
+ User::LeaveIfError(err);
+
+ RPositioner positioner2;
+ err = positioner2.Open(iServer, id);
+ User::LeaveIfError(err);
+
+ RPositioner positioner3;
+ err = positioner3.Open(iServer, id);
+ User::LeaveIfError(err);
+
+ RPositioner positioner4;
+ err = positioner4.Open(iServer, id);
+ User::LeaveIfError(err);
+
+ RPositioner positioner5;
+ err = positioner5.Open(iServer, id);
+ User::LeaveIfError(err);
+
+ RPositioner positioner6;
+ err = positioner6.Open(iServer, id);
+ User::LeaveIfError(err);
+
+ RPositioner positioner7;
+ err = positioner7.Open(iServer, id);
+ User::LeaveIfError(err);
+
+
+ positioner1.Close();
+ positioner2.Close();
+ positioner3.Close();
+ positioner6.Close();
+ positioner7.Close(); // leaving 4 and 5 still open
+
+ User::After(2000000); //allow time for close to work through the locserver
+
+
+ break;
+ }
+
+ default:
+ User::Panic(KLbsClientStepNotifyPosUpdate, KErrUnknown);
+
+ }
+ }
+
+ // All done, clean up.
+ CleanupStack::PopAndDestroy(&iServer);
+ }
+
+ INFO_PRINTF1(_L("<<CT_LbsClientStep_NotifyPosUpdate::doTestStepL()"));
+
+ return TestStepResult();
+ }
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/lbsclient/src/ctlbsclientstepopenclose.cpp Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,273 @@
+// 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 ctlbsclientstep_openclose.cpp
+// This is the class implementation for the Server Open Close Tests
+//
+//
+
+#include "ctlbsclientstepopenclose.h"
+
+#include <lbs.h>
+
+
+/**
+ * Destructor
+ */
+CT_LbsClientStep_OpenClose::~CT_LbsClientStep_OpenClose()
+ {
+ }
+
+
+/**
+ * Constructor
+ */
+CT_LbsClientStep_OpenClose::CT_LbsClientStep_OpenClose(CT_LbsClientServer& aParent) : CT_LbsClientStep(aParent)
+ {
+ SetTestStepName(KLbsClientStep_OpenClose);
+ }
+
+
+/**
+Static Constructor
+*/
+CT_LbsClientStep_OpenClose* CT_LbsClientStep_OpenClose::New(CT_LbsClientServer& aParent)
+ {
+ return new CT_LbsClientStep_OpenClose(aParent);
+ // Note the lack of ELeave.
+ // This means that having insufficient memory will return NULL;
+ }
+
+/**
+ * @return - TVerdict code
+ * Override of base class pure virtual
+ * Our implementation only gets called if the base class doTestStepPreambleL() did
+ * not leave. That being the case, the current test result value will be EPass.
+ */
+TVerdict CT_LbsClientStep_OpenClose::doTestStepL()
+ {
+ // Generic test step used to test the LBS Client server open and close APIs.
+ INFO_PRINTF1(_L(">>CT_LbsClientStep_OpenClose::doTestStepL()"));
+
+ if (TestStepResult() == EPass)
+ {
+
+ TUint howManyModules = 0;
+ TPositionModuleInfo myModuleInfo;
+ TInt err = KErrNone;
+ TPositionCriteria criteria;
+
+
+ // Carryout common test action.
+ err = iServer.Connect(); // Function under test.
+ if (KErrNone == err)
+ {
+ INFO_PRINTF1(_L("server opened"));
+
+
+ // Carryout unquie test actions.
+ TInt testCaseId;
+ if (GetIntFromConfig(ConfigSection(), KTestCaseId, testCaseId))
+ {
+ switch (testCaseId)
+ {
+ // Test case LBS-OpenClose-0001
+ case 1:
+ {
+ TPositionModuleId serverDefaultModuleId;
+ User::LeaveIfError(iServer.GetDefaultModuleId(serverDefaultModuleId));
+ err = iPositioner.Open(iServer, serverDefaultModuleId);
+ if(err != KErrNone)
+ {
+ INFO_PRINTF1(_L("** SubSession Failed to open **"));
+ SetTestStepResult(EFail);
+ }
+ }
+ break;
+
+ // Test case LBS-OpenClose-0002
+ case 2:
+ {
+ User::LeaveIfError(iServer.GetNumModules(howManyModules));
+ User::LeaveIfError(iServer.GetModuleInfoByIndex(howManyModules-1, myModuleInfo));
+ err = iPositioner.Open(iServer, myModuleInfo.ModuleId());
+ if(err != KErrNone)
+ {
+ INFO_PRINTF1(_L("** SubSession Failed to open **"));
+ SetTestStepResult(EFail);
+ }
+ }
+ break;
+
+ // Test case LBS-OpenClose-0003
+ case 3:
+ {
+ // PassInNullUID
+ err = iPositioner.Open(iServer, KPositionNullModuleId );
+ if (KErrNotFound == err)
+ {
+ INFO_PRINTF1(_L("** SubSession failed to open: Negative Test Successful **"));
+ }
+ else
+ {
+ INFO_PRINTF1(_L("** SubSession Opened, test failed **"));
+ SetTestStepResult(EFail);
+ }
+ }
+ break;
+
+ // Test case LBS-OpenCloseExtend-0001
+ case 11:
+ {
+ criteria.AddRequiredCapabilities(TPositionModuleInfo::ECapabilitySatellite);
+ err = iPositioner.Open(iServer, criteria);
+ if(err != KErrNone)
+ {
+ INFO_PRINTF1(_L("** SubSession Failed to open **"));
+ SetTestStepResult(EFail);
+ }
+ }
+ break;
+
+ // Test case LBS-OpenCloseExtend-0002
+ case 12:
+ {
+ // Set capabilities not supported by the module:
+ criteria.AddRequiredCapabilities(TPositionModuleInfo::ECapabilityAddress);
+ err = iPositioner.Open(iServer, criteria);
+ if (KErrNotFound == err)
+ {
+ INFO_PRINTF1(_L("** SubSession failed to open: Negative Test Successful **"));
+ }
+ else
+ {
+ INFO_PRINTF1(_L("** SubSession Opened, test failed **"));
+ SetTestStepResult(EFail);
+ }
+ }
+ break;
+
+ // Test case LBS-OpenCloseMultiple-0001
+ case 20:
+ {
+ User::LeaveIfError(iPositioner.Open(iServer));
+ RPositioner positioner2;
+ err = positioner2.Open(iServer);
+ if(err != KErrNone)
+ {
+ INFO_PRINTF1(_L("** SubSession Failed to open **"));
+ SetTestStepResult(EFail);
+ }
+ positioner2.Close();
+ }
+ break;
+
+ // Test case LBS-ReOpen-0001
+ case 30:
+ {
+ User::LeaveIfError(iPositioner.Open(iServer));
+ User::LeaveIfError(iPositioner.Open(iServer));
+ }
+ break;
+ // Test case LBS-OpenClose-0041
+ case 41:
+ {
+ err = iServer.CancelRequest(EPositionerNotifyPositionUpdate);
+ if(err != KErrNotFound)
+ {
+ INFO_PRINTF2(_L("** Failed to return KErrnotFound, instead returned %d**"),err);
+ SetTestStepResult(EFail);
+ }
+ }
+ break;
+
+ // Test case LBS-OpenClose-0042
+ case 42:
+ {
+ err = iPositioner.Open(iServer);
+ if(err != KErrNone)
+ {
+ INFO_PRINTF1(_L("** SubSession Failed to open **"));
+ SetTestStepResult(EFail);
+ }
+
+ err = 0; // reset Err
+
+ err = iPositioner.CancelRequest(EPositionerNotifyPositionUpdate);
+ if(err != KErrNotFound)
+ {
+ INFO_PRINTF2(_L("** Failed to return KErrnotFound, instead returned %d**"),err);
+ SetTestStepResult(EFail);
+ }
+ }
+ break;
+
+ // Test case LBS-OpenClose-0043
+ case 43:
+ {
+ err = iPositioner.Open(iServer);
+ if(err != KErrNone)
+ {
+ INFO_PRINTF1(_L("** SubSession Failed to open **"));
+ SetTestStepResult(EFail);
+ }
+
+ err = 0; // reset Err
+
+ err = iPositioner.CancelRequest(EPositionerGetLastKnownPosition);
+ if(err != KErrNotFound)
+ {
+ INFO_PRINTF2(_L("** Failed to return KErrnotFound, instead returned %d**"),err);
+ SetTestStepResult(EFail);
+ }
+ }
+ break;
+
+ // Test case LBS-OpenClose-0044
+ case 44:
+ {
+ err = iServer.CancelRequest(EPositionServerNotifyModuleStatusEvent);
+ if(err != KErrNotFound)
+ {
+ INFO_PRINTF2(_L("** Failed to return KErrnotFound, instead returned %d**"),err);
+ SetTestStepResult(EFail);
+ }
+ }
+ break;
+
+ default:
+ User::Leave(KErrArgument);
+ break;
+ }
+
+ iPositioner.Close();
+ iServer.Close();
+ }
+ else
+ {
+ INFO_PRINTF1(_L("Bad Ini file"));
+ SetTestStepResult(EFail);
+ }
+ }
+ else
+ {
+ INFO_PRINTF1(_L("SubSession failed to open"));
+ SetTestStepResult(EFail);
+ }
+
+ }
+
+ INFO_PRINTF1(_L("<<CT_LbsClientStep_OpenClose::doTestStepL()"));
+
+ return TestStepResult();
+ }
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/lbsclient/src/ctlbsclientsteppartialupdate.cpp Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,990 @@
+// 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 ctlbsclientsteppartialupdate.cpp
+// This is the class implementation for the UpdateOptions Tests
+//
+//
+
+#include "ctlbsclientsteppartialupdate.h"
+
+#include <lbs.h>
+#include <lbssatellite.h>
+
+#include "tlbsutils.h"
+#include "ctlbsasyncwaiter.h"
+
+#define EXPECTED_GPS_ACCURACY_HORIZONTAL 20
+#define EXPECTED_GPS_ACCURACY_VERTICAL 20
+
+#define KLbsKeepAlivePeriod 10000
+
+#define REFPOS_LAT 2
+#define REFPOS_LONG 3
+#define REFPOS_ALT 10
+#define REFPOS_HORZ_ACCURACY 100
+#define REFPOS_VERT_ACCURACY 100
+
+#define REFPOS_HORZ_ACCURACY_BETTER 5
+#define REFPOS_VERT_ACCURACY_BETTER 5
+
+
+const TInt KTestAssistanceDataProviderPluginUidValue = 0x10281D77;
+const TInt KRealAssistanceDataProviderPluginUidValue = 0x1028225B;
+
+
+/**
+ * Destructor
+ */
+CT_LbsClientStep_PartialUpdate::~CT_LbsClientStep_PartialUpdate()
+ {
+ delete iDoPosUpdatePtr;
+ }
+
+
+/**
+ * Constructor
+ */
+CT_LbsClientStep_PartialUpdate::CT_LbsClientStep_PartialUpdate(CT_LbsClientServer& aParent) : CT_LbsNetSimStep(), iParent(aParent)
+ {
+ SetTestStepName(KLbsClientStep_PartialUpdate);
+ }
+
+
+/**
+Static Constructor
+*/
+CT_LbsClientStep_PartialUpdate* CT_LbsClientStep_PartialUpdate::New(CT_LbsClientServer& aParent)
+ {
+ // Note the lack of ELeave.
+ // This means that having insufficient memory will return NULL;
+ CT_LbsClientStep_PartialUpdate* testStep = new CT_LbsClientStep_PartialUpdate(aParent);
+ if (testStep)
+ {
+ TInt err = KErrNone;
+
+ TRAP(err, testStep->ConstructL());
+ if (err)
+ {
+ delete testStep;
+ testStep = NULL;
+ }
+ }
+ return testStep;
+ }
+
+void CT_LbsClientStep_PartialUpdate::ConstructL()
+ {
+ // Create the base class objects.
+ CT_LbsNetSimStep::ConstructL();
+
+ // and the active object wrapper for the notify position update.
+ iDoPosUpdatePtr = CT_LbsDoPosUpdate::NewL(this, TPositionModuleInfo::ETechnologyTerminal);
+
+ }
+
+
+/**
+ * @return - TVerdict code
+ * Override of base class pure virtual
+ * Our implementation only gets called if the base class doTestStepPreambleL() did
+ * not leave. That being the case, the current test result value will be EPass.
+ */
+TVerdict CT_LbsClientStep_PartialUpdate::doTestStepL()
+ {
+ // Generic test step used to test the LBS SetUpdateOptions API.
+ INFO_PRINTF1(_L(">>CT_LbsClientStep_PartialUpdate::doTestStepL()"));
+
+ if (TestStepResult()==EPass)
+ {
+ TInt err = KErrNone;
+ iPosUpdateStatus = EPositionUpdateStart;
+
+ //Configure partial Updates
+ TPositionUpdateOptions optsA;
+ optsA.SetAcceptPartialUpdates(ETrue);
+
+ if(!optsA.AcceptPartialUpdates())
+ {
+ INFO_PRINTF1(_L("Partial Updates not set."));
+ SetTestStepResult(EFail);
+ }
+
+ err = iDoPosUpdatePtr->SetOptions(optsA);
+ User::LeaveIfError(err);
+
+ CLbsAdmin* lbsAdminApi = CLbsAdmin::NewL();
+ CleanupStack::PushL(lbsAdminApi);
+
+ // Carryout unique test actions.
+ if (GetIntFromConfig(ConfigSection(), KTestCaseId, iTestCaseId))
+ {
+ switch (iTestCaseId)
+ {
+ // Test case LBS-Partial-Update-Options-0001
+ case 1:
+ {
+ CLbsAdmin::TGpsMode gpsMode = CLbsAdmin::EGpsAutonomous;
+ lbsAdminApi->Set(KLbsSettingHomeGpsMode,gpsMode);
+
+ //Configure Partial Update to EFalse
+ TPositionUpdateOptions updOpts;
+ updOpts.SetUpdateTimeOut(10*1000000);
+ updOpts.SetAcceptPartialUpdates(EFalse);
+ if(EFalse != updOpts.AcceptPartialUpdates())
+ {
+ INFO_PRINTF1(_L("Partial Updates not set."));
+ SetTestStepResult(EFail);
+ }
+
+ err = iDoPosUpdatePtr->SetOptions(updOpts);
+ User::LeaveIfError(err);
+
+ break;
+ }
+
+ // Test case LBS-Partial-Update-Options-0002
+ case 2:
+ case 3:
+ case 4:
+ case 5:
+ case 6:
+ case 7:
+ {
+ CLbsAdmin::TGpsMode gpsMode = CLbsAdmin::EGpsAutonomous;
+ lbsAdminApi->Set(KLbsSettingHomeGpsMode,gpsMode);
+
+ break;
+ }
+
+ case 21:
+ case 22:
+ case 24:
+ case 25:
+ case 26:
+ {
+ CLbsAdmin::TGpsMode gpsMode = CLbsAdmin::EGpsPreferTerminalBased;
+ lbsAdminApi->Set(KLbsSettingHomeGpsMode,gpsMode);
+
+ break;
+ }
+
+ case 23:
+ {
+ CLbsAdmin::TGpsMode gpsMode = CLbsAdmin::EGpsPreferTerminalBased;
+ lbsAdminApi->Set(KLbsSettingHomeGpsMode,gpsMode);
+
+ //Configure Partial Update to EFalse
+ TPositionUpdateOptions updOpts;
+ updOpts.SetAcceptPartialUpdates(EFalse);
+ if(EFalse != updOpts.AcceptPartialUpdates())
+ {
+ INFO_PRINTF1(_L("Partial Updates not set."));
+ SetTestStepResult(EFail);
+ }
+
+ err = iDoPosUpdatePtr->SetOptions(updOpts);
+ User::LeaveIfError(err);
+
+ break;
+ }
+
+ case 27:
+ case 28:
+ {
+ //Tracking
+ CLbsAdmin::TGpsMode gpsMode;
+ if(iTestCaseId == 27)
+ {
+ gpsMode = CLbsAdmin::EGpsAutonomous;
+ }
+ else
+ {
+ gpsMode = CLbsAdmin::EGpsPreferTerminalBased;
+ }
+
+ lbsAdminApi->Set(KLbsSettingHomeGpsMode,gpsMode);
+
+ TPositionUpdateOptions updOpts;
+ updOpts.SetUpdateInterval(10*1000000); //Set Update Interval to 10 secs
+ updOpts.SetAcceptPartialUpdates(ETrue);
+
+ err = iDoPosUpdatePtr->SetOptions(updOpts);
+ User::LeaveIfError(err);
+
+ break;
+ }
+
+ default:
+ User::Panic(KLbsClientStep_PartialUpdate, KErrUnknown);
+
+ }
+ }
+
+ User::LeaveIfError(OpenNetSim());
+
+ // Kick off the test abort and keep alive timers.
+ TTimeIntervalMicroSeconds32 keepAliveInterval(KLbsKeepAlivePeriod);
+ iKeepAliveTimer->SetTimer(keepAliveInterval);
+
+ // Kick off test.
+ CActiveScheduler::Start();
+
+ // Verify location data.
+ VerifyPosInfos();
+
+ //Reset Test module timeout
+ TModuleDataIn modDataIn;
+ modDataIn.iRequestType = TModuleDataIn::EModuleRequestTimeOut;
+ modDataIn.iTimeOut = 0;
+
+ T_LbsUtils utils;
+ utils.NotifyModuleOfConfigChangeL(modDataIn);
+
+ // Clean up.
+ CloseNetSim();
+
+ CleanupStack::PopAndDestroy(lbsAdminApi);
+ }
+
+ INFO_PRINTF1(_L("<<CT_LbsClientStep_PartialUpdate::doTestStepL()"));
+
+ return TestStepResult();
+ }
+
+
+void CT_LbsClientStep_PartialUpdate::Connected()
+ {
+ // Call base implementation.
+ //CT_LbsNetSimStep::Connected();
+
+ // Create a posinfo and store in our shared array for later verification.
+ T_LbsUtils utils;
+ RPointerArray<TAny>& posInfoArr = iParent.iSharedData->iCurrentPosInfoArr;
+ utils.ResetAndDestroy_PosInfoArr(posInfoArr); // Clear previous entries before new entry is appended.
+
+ iPosInfoPtr1 = new(ELeave) TPositionInfo();
+ posInfoArr.Append(iPosInfoPtr1);
+ iPosInfoPtr2 = new(ELeave) TPositionInfo();
+ posInfoArr.Append(iPosInfoPtr2);
+
+ //For test case 22, Set Reference Position better than required position
+ if(iTestCaseId == 22)
+ {
+ // Set the reference position, which also be used for any required verification.
+ iRefPos.SetCoordinate(REFPOS_LAT, REFPOS_LONG, REFPOS_ALT);
+ iRefPos.SetAccuracy(REFPOS_HORZ_ACCURACY_BETTER, REFPOS_VERT_ACCURACY_BETTER);
+ iRefPos.SetCurrentTime();
+
+ if (!iNetSim.SetReferenceLocation(iRefPos))
+ {
+ INFO_PRINTF1(_L("Failed test, can't set NetSim's reference location."));
+ SetTestStepResult(EFail);
+ }
+ }
+
+ // Kick off pos update.
+ iDoPosUpdatePtr->StartL(*iPosInfoPtr1);
+ }
+
+
+void CT_LbsClientStep_PartialUpdate::MT_LbsDoPosUpdateCallback(TRequestStatus& aStatus)
+ {
+ INFO_PRINTF1(_L("Got - Client Notify Update Complete - Callback Event."));
+
+ T_LbsUtils utils;
+ TInt err = aStatus.Int();
+
+ switch(iTestCaseId)
+ {
+ case 1:
+ {
+ if (KPositionQualityLoss != err)
+ {
+ SetTestStepResult(EFail);
+ }
+
+ iState = EWaiting;
+ break;
+ }
+
+ case 2:
+ case 3:
+ {
+ if (KPositionPartialUpdate != err)
+ {
+ SetTestStepResult(EFail);
+ }
+
+ if(iPosUpdateStatus != EPositionUpdateComplete)
+ {
+ // Kick off pos update.
+ iDoPosUpdatePtr->StartL(*iPosInfoPtr2);
+ iPosUpdateStatus = EPositionUpdateComplete;
+ }
+ else
+ iState = EWaiting;
+
+ break;
+ }
+
+ case 4:
+ {
+ if (KErrNone != err)
+ {
+ SetTestStepResult(EFail);
+ }
+
+ if(iPosUpdateStatus != EPositionUpdateComplete)
+ {
+ // Kick off pos update.
+ iDoPosUpdatePtr->StartL(*iPosInfoPtr2);
+ iPosUpdateStatus = EPositionUpdateComplete;
+ }
+ else
+ iState = EWaiting;
+
+ break;
+ }
+
+ case 5:
+ case 6:
+
+ case 21:
+ case 22:
+ {
+ if(iPosUpdateStatus != EPositionUpdateComplete)
+ {
+ if(iTestCaseId == 5 || iTestCaseId == 21)
+ {
+ if (KPositionPartialUpdate != err)
+ {
+ SetTestStepResult(EFail);
+ }
+ }
+ else
+ {
+ if (KErrNone != err)
+ {
+ SetTestStepResult(EFail);
+ }
+ }
+ }
+ else
+ {
+ if (KPositionEarlyComplete != err)
+ {
+ SetTestStepResult(EFail);
+ }
+ }
+
+ if(iPosUpdateStatus != EPositionUpdateComplete)
+ {
+ TModuleDataIn modDataIn; // Used to send test information to the test module.
+ modDataIn.iRequestType = TModuleDataIn::EModuleRequestTimeOut;
+ modDataIn.iTimeOut = 5*1000000;
+
+ // Send timeout value to test module - will block.
+ utils.NotifyModuleOfConfigChangeL(modDataIn);
+
+ // Kick off pos update.
+ iDoPosUpdatePtr->StartL(*iPosInfoPtr2);
+
+ err = iDoPosUpdatePtr->CompleteRequest(EPositionerNotifyPositionUpdate);
+ if (err != KErrNone)
+ {
+ SetTestStepResult(EFail);
+ }
+
+ iPosUpdateStatus = EPositionUpdateComplete;
+
+ }
+ else
+ {
+ //if(iTestCaseId == 5 || iTestCaseId == 6)
+ {
+ iState = EWaiting;
+ }
+ }
+
+ break;
+ }
+
+ case 7:
+ {
+ if(iPosUpdateStatus != EPositionUpdateComplete)
+ {
+ if (KPositionPartialUpdate != err)
+ {
+ SetTestStepResult(EFail);
+ }
+
+ // Kick off pos update.
+ iDoPosUpdatePtr->StartL(*iPosInfoPtr2);
+ iPosUpdateStatus = EPositionUpdateComplete;
+ }
+ else
+ {
+ if (KErrNone != err)
+ {
+ SetTestStepResult(EFail);
+ }
+
+ err = iDoPosUpdatePtr->CompleteRequest(EPositionerNotifyPositionUpdate);
+ if (err != KErrNotFound)
+ {
+ SetTestStepResult(EFail);
+ }
+ iState = EWaiting;
+ }
+
+ break;
+ }
+
+ case 23:
+ {
+ if (KErrNone != err)
+ {
+ SetTestStepResult(EFail);
+ }
+
+ break;
+ }
+
+ case 24:
+ case 27:
+ {
+ if(iPosUpdateStatus != EPositionUpdateComplete)
+ {
+ if (KPositionPartialUpdate != err)
+ {
+ SetTestStepResult(EFail);
+ }
+
+ if(iPosUpdateStatus == EPositionUpdateStart)
+ {
+ iDoPosUpdatePtr->StartL(*iPosInfoPtr2);
+ iPosUpdateStatus = EPositionUpdateContinue;
+ }
+ else
+ {
+ TModuleDataIn modDataIn; // Used to send test information to the test module.
+ modDataIn.iRequestType = TModuleDataIn::EModuleRequestTimeOut;
+ modDataIn.iTimeOut = 5*1000000;
+
+ // Send timeout value to test module - will block.
+ utils.NotifyModuleOfConfigChangeL(modDataIn);
+
+ RPointerArray<TAny>& posInfoArr = iParent.iSharedData->iCurrentPosInfoArr;
+ TPositionInfo* posInfoPtr3;
+ posInfoPtr3 = new(ELeave) TPositionInfo();
+ posInfoArr.Append(posInfoPtr3);
+
+ // Kick off pos update.
+ iDoPosUpdatePtr->StartL(*posInfoPtr3);
+
+ err = iDoPosUpdatePtr->CompleteRequest(EPositionerNotifyPositionUpdate);
+ if (err != KErrNone)
+ {
+ SetTestStepResult(EFail);
+ }
+
+ iPosUpdateStatus = EPositionUpdateComplete;
+ }
+ }
+ else
+ {
+ if (KPositionEarlyComplete != err)
+ {
+ SetTestStepResult(EFail);
+ }
+
+ //if (iTestCaseId == 27)
+ // {
+ iState = EWaiting;
+ // }
+ }
+
+ break;
+ }
+
+ case 25:
+ case 26:
+ {
+ if(iPosUpdateStatus != EPositionUpdateComplete)
+ {
+ if (KPositionPartialUpdate != err)
+ {
+ SetTestStepResult(EFail);
+ }
+
+ if(iPosUpdateStatus == EPositionUpdateStart)
+ {
+ iDoPosUpdatePtr->StartL(*iPosInfoPtr2);
+ iPosUpdateStatus = EPositionUpdateContinue;
+ }
+ else
+ {
+ RPointerArray<TAny>& posInfoArr = iParent.iSharedData->iCurrentPosInfoArr;
+ TPositionInfo* posInfoPtr3;
+ posInfoPtr3 = new(ELeave) TPositionInfo();
+ posInfoArr.Append(posInfoPtr3);
+
+ // Kick off pos update.
+ iDoPosUpdatePtr->StartL(*posInfoPtr3);
+
+ iPosUpdateStatus = EPositionUpdateComplete;
+ }
+ }
+ else
+ {
+ if (KPositionPartialUpdate != err && KPositionQualityLoss != err)
+ {
+ _LIT(KUnexpectedErrorWhilePartialUpdate, "Unexpected error returned: %d");
+ INFO_PRINTF2(KUnexpectedErrorWhilePartialUpdate, err);
+ SetTestStepResult(EFail);
+ }
+
+ err = iDoPosUpdatePtr->CompleteRequest(EPositionerNotifyPositionUpdate);
+ if (err != KErrNotFound)
+ {
+ SetTestStepResult(EFail);
+ }
+
+ iState =EWaiting;
+
+ TPositionInfo* curPosInfo = reinterpret_cast<TPositionInfo*>(iParent.iSharedData->iCurrentPosInfoArr[0]);
+ TPositionInfo* curPosInfo2 = reinterpret_cast<TPositionInfo*>(iParent.iSharedData->iCurrentPosInfoArr[1]);
+ TPositionInfo* curPosInfo3 = reinterpret_cast<TPositionInfo*>(iParent.iSharedData->iCurrentPosInfoArr[2]);
+ }
+
+ break;
+ }
+
+ case 28:
+ {
+ if(iPosUpdateStatus != EPositionUpdateComplete)
+ {
+ if (KPositionPartialUpdate != err)
+ {
+ SetTestStepResult(EFail);
+ }
+
+ if(iPosUpdateStatus == EPositionUpdateStart)
+ {
+ iDoPosUpdatePtr->StartL(*iPosInfoPtr2);
+ iPosUpdateStatus = EPositionUpdateContinue;
+ }
+ else
+ {
+ TModuleDataIn modDataIn; // Used to send test information to the test module.
+ modDataIn.iRequestType = TModuleDataIn::EModuleRequestTimeOut;
+ modDataIn.iTimeOut = 5*1000000;
+
+ // Send timeout value to test module - will block.
+ utils.NotifyModuleOfConfigChangeL(modDataIn);
+
+ RPointerArray<TAny>& posInfoArr = iParent.iSharedData->iCurrentPosInfoArr;
+ TPositionInfo* posInfoPtr3;
+ posInfoPtr3 = new(ELeave) TPositionInfo();
+ posInfoArr.Append(posInfoPtr3);
+
+ // Kick off pos update.
+ iDoPosUpdatePtr->StartL(*posInfoPtr3);
+
+ err = iDoPosUpdatePtr->CompleteRequest(EPositionerNotifyPositionUpdate);
+ if (err != KErrNone)
+ {
+ SetTestStepResult(EFail);
+ }
+
+ iPosUpdateStatus = EPositionUpdateComplete;
+ }
+ }
+ else
+ {
+ if (KPositionEarlyComplete != err)
+ {
+ SetTestStepResult(EFail);
+ }
+
+ iState = EWaiting;
+ }
+
+ break;
+ }
+
+ default:
+ break;
+ }
+ }
+
+void CT_LbsClientStep_PartialUpdate::VerifyPosInfos()
+ {
+ T_LbsUtils utils;
+ T_LbsUtils::TComparisonAccuracyType accType;
+
+ if(iParent.iSharedData->iTestModuleInUse)
+ {
+ accType = T_LbsUtils::EExactAccuracy;
+ }
+ else
+ {
+ accType = T_LbsUtils::ERoughAccuracy;
+ }
+
+ switch(iTestCaseId)
+ {
+ case 5:
+ case 6:
+ {
+ //Verify Position returned - It should be the position returned earlier
+ TPositionInfo* curPosInfoPtr1 = reinterpret_cast<TPositionInfo*>(iParent.iSharedData->iCurrentPosInfoArr[0]);
+ TPositionInfo* curPosInfoPtr2 = reinterpret_cast<TPositionInfo*>(iParent.iSharedData->iCurrentPosInfoArr[1]);
+ TPositionInfo* verPosInfoPtr = reinterpret_cast<TPositionInfo*>(iParent.iSharedData->iVerifyPosInfoArr[0]);
+
+ if (!utils.Compare_PosInfo(*curPosInfoPtr1, *verPosInfoPtr, accType))
+ {
+ INFO_PRINTF1(_L("Failed test, position incorrect."));
+ SetTestStepResult(EFail);
+ }
+
+ if (!utils.Compare_PosInfo(*curPosInfoPtr2, *verPosInfoPtr, accType))
+ {
+ INFO_PRINTF1(_L("Failed test, position incorrect."));
+ SetTestStepResult(EFail);
+ }
+
+ break;
+ }
+
+ case 7:
+ {
+ //Verify Position returned - It should be the position returned earlier
+ TPositionInfo* curPosInfoPtr1 = reinterpret_cast<TPositionInfo*>(iParent.iSharedData->iCurrentPosInfoArr[0]);
+ TPositionInfo* curPosInfoPtr2 = reinterpret_cast<TPositionInfo*>(iParent.iSharedData->iCurrentPosInfoArr[1]);
+
+ TPositionInfo* verPosInfoPtr1 = reinterpret_cast<TPositionInfo*>(iParent.iSharedData->iVerifyPosInfoArr[0]);
+ TPositionInfo* verPosInfoPtr2 = reinterpret_cast<TPositionInfo*>(iParent.iSharedData->iVerifyPosInfoArr[1]);
+
+ if (!utils.Compare_PosInfo(*curPosInfoPtr1, *verPosInfoPtr1, accType))
+ {
+ INFO_PRINTF1(_L("Failed test, position incorrect."));
+ SetTestStepResult(EFail);
+ }
+
+ if (!utils.Compare_PosInfo(*curPosInfoPtr2, *verPosInfoPtr2, accType))
+ {
+ INFO_PRINTF1(_L("Failed test, position incorrect."));
+ SetTestStepResult(EFail);
+ }
+
+ break;
+ }
+
+ case 21:
+ case 22:
+ {
+ //Verify Position returned - It should be the position returned earlier
+ TPositionInfo* curPosInfoPtr1 = reinterpret_cast<TPositionInfo*>(iParent.iSharedData->iCurrentPosInfoArr[0]);
+ TPositionInfo* curPosInfoPtr2 = reinterpret_cast<TPositionInfo*>(iParent.iSharedData->iCurrentPosInfoArr[1]);
+
+ TPositionInfo refPosInfo;
+ refPosInfo.SetPosition(iRefPos);
+
+ if (!utils.Compare_PosInfo(*curPosInfoPtr1, refPosInfo, accType))
+ {
+ INFO_PRINTF1(_L("Failed test, position incorrect."));
+ SetTestStepResult(EFail);
+ }
+
+ if (!utils.Compare_PosInfo(*curPosInfoPtr2, refPosInfo, accType))
+ {
+ INFO_PRINTF1(_L("Failed test, position incorrect."));
+ SetTestStepResult(EFail);
+ }
+
+ break;
+ }
+
+ case 23:
+ {
+ //Verify Position returned - It should be the position returned earlier
+ TPositionInfo* curPosInfoPtr = reinterpret_cast<TPositionInfo*>(iParent.iSharedData->iCurrentPosInfoArr[0]);
+
+ TPositionInfo refPosInfo;
+ refPosInfo.SetPosition(iRefPos);
+
+ if (!utils.Compare_PosInfo(*curPosInfoPtr, refPosInfo, accType))
+ {
+ INFO_PRINTF1(_L("Failed test, position incorrect."));
+ SetTestStepResult(EFail);
+ }
+
+ break;
+ }
+
+ case 24:
+ case 25:
+ case 26:
+ case 28:
+ {
+ //Verify Position returned - It should be the position returned earlier
+ TPositionInfo* curPosInfoPtr1 = reinterpret_cast<TPositionInfo*>(iParent.iSharedData->iCurrentPosInfoArr[0]);
+ TPositionInfo* curPosInfoPtr2 = reinterpret_cast<TPositionInfo*>(iParent.iSharedData->iCurrentPosInfoArr[1]);
+ TPositionInfo* curPosInfoPtr3 = reinterpret_cast<TPositionInfo*>(iParent.iSharedData->iCurrentPosInfoArr[2]);
+
+ TPositionInfo* verPosInfoPtr1 = reinterpret_cast<TPositionInfo*>(iParent.iSharedData->iVerifyPosInfoArr[0]);
+ TPositionInfo* verPosInfoPtr2 = reinterpret_cast<TPositionInfo*>(iParent.iSharedData->iVerifyPosInfoArr[1]);
+
+ TPositionInfo refPosInfo;
+ refPosInfo.SetPosition(iRefPos);
+
+ if (!utils.Compare_PosInfo(*curPosInfoPtr1, refPosInfo, accType))
+ {
+ INFO_PRINTF1(_L("Failed test, position incorrect."));
+ SetTestStepResult(EFail);
+ }
+
+ if (!utils.Compare_PosInfo(*curPosInfoPtr2, *verPosInfoPtr1, accType))
+ {
+ INFO_PRINTF1(_L("Failed test, position incorrect."));
+ SetTestStepResult(EFail);
+ }
+
+ //if(iTestCaseId == 26 || iTestCaseId == 25)
+ // {
+ // if (!utils.Compare_PosInfo(*curPosInfoPtr3, *verPosInfoPtr2, accType))
+ // {
+ // INFO_PRINTF1(_L("Failed test, position incorrect."));
+ // SetTestStepResult(EFail);
+ // }
+ // }
+ //else
+ // {
+ if (!utils.Compare_PosInfo(*curPosInfoPtr3, *verPosInfoPtr1, accType))
+ {
+ INFO_PRINTF1(_L("Failed test, position incorrect."));
+ SetTestStepResult(EFail);
+ }
+ // }
+
+ break;
+ }
+
+ case 27:
+ {
+ //Verify Position returned - It should be the position returned earlier
+ TPositionInfo* curPosInfoPtr1 = reinterpret_cast<TPositionInfo*>(iParent.iSharedData->iCurrentPosInfoArr[0]);
+ TPositionInfo* curPosInfoPtr2 = reinterpret_cast<TPositionInfo*>(iParent.iSharedData->iCurrentPosInfoArr[1]);
+ TPositionInfo* curPosInfoPtr3 = reinterpret_cast<TPositionInfo*>(iParent.iSharedData->iCurrentPosInfoArr[2]);
+
+ TPositionInfo* verPosInfoPtr1 = reinterpret_cast<TPositionInfo*>(iParent.iSharedData->iVerifyPosInfoArr[0]);
+ TPositionInfo* verPosInfoPtr2 = reinterpret_cast<TPositionInfo*>(iParent.iSharedData->iVerifyPosInfoArr[1]);
+
+ if (!utils.Compare_PosInfo(*curPosInfoPtr1, *verPosInfoPtr1, accType))
+ {
+ INFO_PRINTF1(_L("Failed test, position incorrect."));
+ SetTestStepResult(EFail);
+ }
+
+ if (!utils.Compare_PosInfo(*curPosInfoPtr2, *verPosInfoPtr2, accType))
+ {
+ INFO_PRINTF1(_L("Failed test, position incorrect."));
+ SetTestStepResult(EFail);
+ }
+
+ if (!utils.Compare_PosInfo(*curPosInfoPtr3, *verPosInfoPtr2, accType))
+ {
+ INFO_PRINTF1(_L("Failed test, position incorrect."));
+ SetTestStepResult(EFail);
+ }
+
+ break;
+ }
+
+ default:
+ break;
+ }
+ }
+
+
+void CT_LbsClientStep_PartialUpdate::NotifyRegisterLcsMoLr(const TDesC& aData)
+ {
+ (void)aData;
+ }
+
+void CT_LbsClientStep_PartialUpdate::NotifyMeasurementControlLocation(const TPositionInfo& aPosition, const RLbsAssistanceDataBuilderSet& aData, const TLbsNetPosRequestQuality& aQuality)
+ {
+ (void)aPosition;
+ (void)aData;
+ (void)aQuality;
+
+ }
+
+void CT_LbsClientStep_PartialUpdate::NotifyMeasurementReportLocation(const TPositionInfo& aPosition)
+ {
+
+ T_LbsUtils utils;
+ T_LbsUtils::TComparisonAccuracyType accType;
+ if(iParent.iSharedData->iTestModuleInUse)
+ {
+ accType = T_LbsUtils::EExactAccuracy;
+ }
+ else
+ {
+ accType = T_LbsUtils::ERoughAccuracy;
+ }
+
+ switch(iTestCaseId)
+ {
+ case 21:
+ case 22:
+ {
+ TPositionInfo refPosInfo;
+ refPosInfo.SetPosition(iRefPos);
+ if (!utils.Compare_PosInfo(refPosInfo, aPosition, accType))
+ {
+ INFO_PRINTF1(_L("Failed test, position incorrect."));
+ SetTestStepResult(EFail);
+ }
+
+ break;
+ }
+
+ case 24:
+ case 25:
+ case 28:
+ {
+ TPositionInfo* verPosInfoPtr = reinterpret_cast<TPositionInfo*>(iParent.iSharedData->iVerifyPosInfoArr[0]);
+
+ if (!utils.Compare_PosInfo(*verPosInfoPtr, aPosition, accType))
+ {
+ INFO_PRINTF1(_L("Failed test, position incorrect."));
+ SetTestStepResult(EFail);
+ }
+
+ break;
+ }
+
+ /*case 25:
+ {
+ TPositionInfo* verPosInfoPtr = reinterpret_cast<TPositionInfo*>(iParent.iSharedData->iVerifyPosInfoArr[1]);
+
+ if (!utils.Compare_PosInfo(*verPosInfoPtr, aPosition, accType))
+ {
+ INFO_PRINTF1(_L("Failed test, position incorrect."));
+ SetTestStepResult(EFail);
+ }
+
+ break;
+ }*/
+
+ case 26:
+ {
+ //INFO_PRINTF1(_L("Position should not be sent to Network"));
+ //SetTestStepResult(EFail);
+
+ break;
+ }
+
+ default:
+ break;
+
+ }
+ }
+
+void CT_LbsClientStep_PartialUpdate::NotifyFacilityLcsMoLrResult(TInt aReason, const TPositionInfo& aPosition)
+ {
+ (void)aReason;
+ (void)aPosition;
+ }
+
+void CT_LbsClientStep_PartialUpdate::NotifyReleaseLcsMoLr(TInt aReason)
+ {
+ (void)aReason;
+ if(iTestCaseId == 23)
+ {
+ iState = EWaiting;
+ }
+ }
+
+
+TInt CT_LbsClientStep_PartialUpdate::OpenNetSim()
+ {
+ TInt err = KErrNone;
+
+ //Connect to NetSim
+ err = iNetSim.ConnectL(this);
+ if (err)
+ {
+ SetTestStepResult(EFail);
+ return KErrGeneral;
+ }
+
+ // Set the reference position, which also be used for any required verification.
+ iRefPos.SetCoordinate(REFPOS_LAT, REFPOS_LONG, REFPOS_ALT);
+ iRefPos.SetAccuracy(REFPOS_HORZ_ACCURACY, REFPOS_VERT_ACCURACY);
+ iRefPos.SetCurrentTime();
+
+ if (!iNetSim.SetReferenceLocation(iRefPos))
+ {
+ INFO_PRINTF1(_L("Failed test, can't set NetSim's reference location."));
+ SetTestStepResult(EFail);
+ iNetSim.Close();
+ return KErrGeneral;
+ }
+
+ //Set the position quality required by the network.
+ TTimeIntervalMicroSeconds maxFixTime(60 * 1000000);
+
+ TLbsNetPosRequestQuality netPosQuality;
+ netPosQuality.SetMaxFixTime(maxFixTime);
+ netPosQuality.SetMinHorizontalAccuracy(iRefPos.HorizontalAccuracy());
+ netPosQuality.SetMinVerticalAccuracy(iRefPos.VerticalAccuracy());
+
+ if (!iNetSim.SetQuality(netPosQuality))
+ {
+ INFO_PRINTF1(_L("Failed test, can't set NetSim's quality."));
+ SetTestStepResult(EFail);
+ iNetSim.Close();
+ return KErrGeneral;
+ }
+
+ TUid pluginUid;
+ if(iParent.iSharedData->iTestModuleInUse)
+ {
+ // Set plugin to use.
+ pluginUid = TUid::Uid(KTestAssistanceDataProviderPluginUidValue);
+ }
+ else
+ {
+ // Real AGPS Uid
+ pluginUid = TUid::Uid(KRealAssistanceDataProviderPluginUidValue);
+ }
+
+ if (!iNetSim.SetAssistanceDataProvider(pluginUid))
+ {
+ INFO_PRINTF1(_L("Failed test, can't set NetSim's assistance data plugin uid."));
+ SetTestStepResult(EFail);
+ iNetSim.Close();
+ return KErrGeneral;
+ }
+
+ return KErrNone;
+ }
+
+void CT_LbsClientStep_PartialUpdate::CloseNetSim()
+ {
+ iNetSim.Close();
+ }
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/lbsclient/src/ctlbsclientstepsrvconnectclose.cpp Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,230 @@
+// 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 ctlbsclientstep_srvconnectclose.cpp
+// This is the class implementation for the Server Connect Close Tests
+//
+//
+
+#include "ctlbsclientstepsrvconnectclose.h"
+
+#include <lbs.h>
+
+/**
+ * Destructor
+ */
+CT_LbsClientStep_SrvConnectClose::~CT_LbsClientStep_SrvConnectClose()
+ {
+ }
+
+
+/**
+ * Constructor
+ */
+CT_LbsClientStep_SrvConnectClose::CT_LbsClientStep_SrvConnectClose(CT_LbsClientServer& aParent) : CT_LbsClientStep(aParent)
+ {
+ SetTestStepName(KLbsClientStep_SrvConnectClose);
+ }
+
+
+/**
+Static Constructor
+*/
+CT_LbsClientStep_SrvConnectClose* CT_LbsClientStep_SrvConnectClose::New(CT_LbsClientServer& aParent)
+ {
+ return new CT_LbsClientStep_SrvConnectClose(aParent);
+ // Note the lack of ELeave.
+ // This means that having insufficient memory will return NULL;
+ }
+
+
+
+/**
+ * @return - TVerdict code
+ * Override of base class pure virtual
+ * Our implementation only gets called if the base class doTestStepPreambleL() did
+ * not leave. That being the case, the current test result value will be EPass.
+ */
+TVerdict CT_LbsClientStep_SrvConnectClose::doTestStepL()
+ {
+ // Generic test step used to test the LBS Client server open and close APIs.
+ INFO_PRINTF1(_L(">>CT_LbsClientStep_SrvConnectClose::doTestStepL()"));
+
+ if (TestStepResult() == EPass)
+ {
+ // Carryout common test action.
+ TInt err = KErrNone;
+ err = iServer.Connect(); // Function under test.
+ CleanupClosePushL(iServer);
+
+ if (KErrNone == err)
+ {
+ INFO_PRINTF1(_L("server opened"));
+
+ // Carryout unique test actions.
+ TInt testCaseId;
+ if (GetIntFromConfig(ConfigSection(), KTestCaseId, testCaseId))
+ {
+ switch (testCaseId)
+ {
+ // Test case LBS-ConnectClose-0001
+ case 1:
+ // Only requires create, connect and close for RPositionServer object
+ // Connect and close occur outside the switch.
+ break;
+
+ // Test case LBS-ConnectClose-0002
+ case 2:
+ {
+ OpenNetSim();
+ RPositioner positioner;
+ User::LeaveIfError(positioner.Open(iServer));
+ TPositionInfo posInfo;
+ TRequestStatus status;
+
+ TPositionUpdateOptions optsA;
+ TTimeIntervalMicroSeconds interval = 60 * 1000000; // 1 minute interval
+ // note: do 2 NPUDs because the first may complete before we close
+ optsA.SetUpdateInterval(interval);
+ positioner.NotifyPositionUpdate(posInfo, status);
+ User::WaitForRequest(status);
+
+ // this will not complete quickly, so we'll def have an outstanding request when we close
+ positioner.NotifyPositionUpdate(posInfo, status);
+ positioner.Close();
+ CloseNetSim();
+ }
+ break;
+
+ // Test case LBS-ConnectClose-0003
+ case 3:
+ {
+ // Will panic, not interested in any return err.
+ iServer.Connect();
+ }
+ break;
+
+ // Test case LBS-ConnectClose-0004
+ case 4:
+ {
+ RPositionServer server2;
+
+ err = server2.Connect();
+ if(err != KErrNone)
+ {
+ INFO_PRINTF1(_L("<FONT><B>Server2 connect() didn't return KErrNone</B></FONT>"));
+ SetTestStepResult(EFail);
+ }
+
+ else
+ {
+ server2.Close();
+ }
+ }
+ break;
+ //Test case LBS-ConnectClose-0005
+ case 5:
+ {
+ // look in the kernels process list for the server
+ _LIT(KLocServerName, "*locserver*"); // NB you MUST use this server name for the location server.
+ // see KPositionServerName in the location server code (server side)
+ TFindThread serverSearcher(KLocServerName);
+ TFileName matchingFileName;
+ TInt matchCount = 0;
+ while(serverSearcher.Next(matchingFileName) == KErrNone)
+ {
+ // we have a match, there should only be one
+ matchCount++;
+ }
+ // start checking
+ if(matchCount!=1)
+ {
+ /* fail the test - we somehow have more than one location server running.
+ May have been one left over from a previous test */
+ INFO_PRINTF1(_L("somehow have more than one location server running"));
+ SetTestStepResult(EFail);
+ }
+ RThread iserverThread;
+ TInt err;
+ err=iserverThread.Open(matchingFileName);
+ User::LeaveIfError(err);
+ TThreadId iserverThreadId = iserverThread.Id();
+ // log the thread ID
+ // we now try and explicitly start a 2nd copy of the position server.
+ //We expect not to get a 2nd copy, but to //connect to the existing copy.
+ // create an connect to the lcoation server
+ RPositionServer server2;
+ User::LeaveIfError(server2.Connect());
+ CleanupClosePushL(server2);
+ // search again
+ serverSearcher.Find(KLocServerName);
+ matchCount = 0;
+ while(serverSearcher.Next(matchingFileName) == KErrNone)
+ {
+ // we have a match, there should only be one
+ matchCount++;
+ }
+ // sanity check
+ if(matchCount!=1)
+ {
+ /*SDA 3_50 Failure here
+ fail the test - we have two servers.*/
+ INFO_PRINTF1(_L("we have two servers"));
+ SetTestStepResult(EFail);
+
+ }
+ else
+ {
+ // we have one server so check the thread its match
+ RThread server2Thread;
+ err=server2Thread.Open(matchingFileName);
+ User::LeaveIfError(err);
+ TThreadId server2ThreadId = server2Thread.Id();
+
+ if(iserverThreadId != server2ThreadId)
+ {
+ /*different thread ids - somehow
+ fail the test here */
+ INFO_PRINTF1(_L("Different thread ids "));
+ SetTestStepResult(EFail);
+ }
+ }
+ CleanupStack::PopAndDestroy(&server2);
+ }
+ break;
+ default:
+ User::Leave(KErrArgument);
+ break;
+
+ }
+ }
+ else
+ {
+ INFO_PRINTF1(_L("<FONT><B>Failed to read from ini file correctly</B></FONT>"));
+ SetTestStepResult(EFail);
+ }
+ }
+ else
+ {
+ INFO_PRINTF1(_L("<FONT><B>server failed to open</B></FONT>"));
+ SetTestStepResult(EFail);
+ }
+
+ // Carryout final common test action.
+ CleanupStack::PopAndDestroy(&iServer);
+ }
+
+ INFO_PRINTF1(_L("<<CT_LbsClientStep_SrvConnectClose::doTestStepL()"));
+
+ return TestStepResult();
+ }
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/lbsclient/src/ctlbsclientstepsrvversion.cpp Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,127 @@
+// 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 ctlbsclientstepsrvversion.cpp
+// This is the class implementation for the Server Version Tests
+//
+//
+
+#include "ctlbsclientstepsrvversion.h"
+
+#include <lbs.h>
+
+
+_LIT(Ksrvvermajor, "srv_ver_major");
+_LIT(Ksrvverminor, "srv_ver_minor");
+_LIT(Ksrvverbuild, "srv_ver_build");
+
+
+/**
+ * Destructor
+ */
+CT_LbsClientStep_SrvVersion::~CT_LbsClientStep_SrvVersion()
+ {
+ }
+
+
+/**
+ * Constructor
+ */
+CT_LbsClientStep_SrvVersion::CT_LbsClientStep_SrvVersion(CT_LbsClientServer& aParent) : CT_LbsClientStep(aParent)
+ {
+ SetTestStepName(KLbsClientStep_SrvVersion);
+ }
+
+
+/**
+Static Constructor
+*/
+CT_LbsClientStep_SrvVersion* CT_LbsClientStep_SrvVersion::New(CT_LbsClientServer& aParent)
+ {
+ return new CT_LbsClientStep_SrvVersion(aParent);
+ // Note the lack of ELeave.
+ // This means that having insufficient memory will return NULL;
+ }
+
+
+
+/**
+ * @return - TVerdict code
+ * Override of base class pure virtual
+ * Our implementation only gets called if the base class doTestStepPreambleL() did
+ * not leave. That being the case, the current test result value will be EPass.
+ */
+TVerdict CT_LbsClientStep_SrvVersion::doTestStepL()
+ {
+ // Generic test step used to test the LBS Client server open and close APIs.
+ INFO_PRINTF1(_L(">>CT_LbsClientStep_SrvVersion::doTestStepL()"));
+
+ if (TestStepResult() == EPass)
+ {
+ RPositionServer server;
+ TInt err = KErrNone;
+
+ // Carryout common test action.
+ err = server.Connect();
+ if (KErrNone == err)
+ {
+ INFO_PRINTF1(_L("server opened"));
+
+ // Carryout unique test actions.
+ // Test case LBS-APIVersion-0001
+
+ TVersion serverversion;
+ serverversion = server.Version();
+ TInt MajorVersionNumber = 0;
+ TInt MinorVersionNumber = 0;
+ TInt BuildVersionNumber = 0;
+ if(!(GetIntFromConfig(ConfigSection(), Ksrvvermajor, MajorVersionNumber) &&
+ GetIntFromConfig(ConfigSection(), Ksrvverminor, MinorVersionNumber) &&
+ GetIntFromConfig(ConfigSection(), Ksrvverbuild, BuildVersionNumber)))
+ {
+ INFO_PRINTF1(_L("Bad ini file Build info."));
+ User::Leave(KErrArgument);
+ }
+
+ //Check expected Version matches tested version
+ if (MajorVersionNumber == static_cast<TInt>(serverversion.iMajor) &&
+ MinorVersionNumber == static_cast<TInt>(serverversion.iMinor) &&
+ BuildVersionNumber == static_cast<TInt>(serverversion.iBuild))
+ {
+ INFO_PRINTF1(_L("Expected Version Matches"));
+ }
+ else
+ {
+ INFO_PRINTF1(_L("Expected Version Differs"));
+ SetTestStepResult(EFail);
+ }
+
+ }
+ else
+ {
+ INFO_PRINTF1(_L("server failed to open"));
+ SetTestStepResult(EFail);
+ }
+
+
+ // Carryout final common test action.
+ if (KErrNone == err)
+ {
+ server.Close();
+ }
+ }
+
+ INFO_PRINTF1(_L("<<CT_LbsClientStep_SrvVersion::doTestStepL()"));
+
+ return TestStepResult();
+ }
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/lbsclient/src/ctlbsclientsteptracking.cpp Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,668 @@
+// Copyright (c) 2007-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 ctlbsclientstep_tracking.cpp
+// This is the class implementation for the Tracking Tests
+//
+//
+
+#include "ctlbsclientsteptracking.h"
+
+#include <lbs.h>
+#include <lbssatellite.h>
+
+#include "tlbsutils.h"
+#include "ctlbsasyncwaiter.h"
+
+
+/**
+ * Construction.
+ */
+CT_LbsClientStep_Tracking* CT_LbsClientStep_Tracking::New(CT_LbsClientServer& aParent)
+ {
+ // Note the lack of ELeave.
+ // This means that having insufficient memory will return NULL;
+ CT_LbsClientStep_Tracking* testStep = new CT_LbsClientStep_Tracking(aParent);
+ if (testStep)
+ {
+ TInt err = KErrNone;
+
+ TRAP(err, testStep->ConstructL());
+ if (err)
+ {
+ delete testStep;
+ testStep = NULL;
+ }
+ }
+
+ return testStep;
+ }
+
+
+CT_LbsClientStep_Tracking::CT_LbsClientStep_Tracking(CT_LbsClientServer& aParent) : CT_LbsClientStep(aParent),
+ iVerifyInterval(ETrue), iExpectedErr(KErrNone), iUpdateIndex(0)
+ {
+ SetTestStepName(KLbsClientStep_Tracking);
+ }
+
+
+void CT_LbsClientStep_Tracking::ConstructL()
+ {
+ // Setup netsim.
+ User::LeaveIfError(OpenNetSim());
+
+ // Connect server.
+ User::LeaveIfError(iServer.Connect());
+
+ // Open positioner.
+ User::LeaveIfError(iPositioner.Open(iServer));
+ }
+
+
+/**
+ * Destructor
+ */
+CT_LbsClientStep_Tracking::~CT_LbsClientStep_Tracking()
+ {
+ iPositioner.Close();
+ iServer.Close();
+ CloseNetSim();
+ }
+
+
+const TTimeIntervalMicroSeconds KTimestampMargin = 500000; //+/-0.5s
+
+TBool CT_LbsClientStep_Tracking::VerifyFirstPosTime(const TTime& aTimeRequested, const TPositionInfo& aPosInfo, const TPositionUpdateOptions& aUpdateOpts)
+ {
+ TTime timeReceived, timeStamp;
+ TPosition pos;
+
+ TInt64 maxtime;
+ maxtime = aUpdateOpts.UpdateTimeOut().Int64();
+ if(!maxtime)
+ {
+ #pragma message("TO DO: CT_LbsClientStep_Tracking::VerifyFirstPosTime - Update when moduleinfo supported")
+ const TTimeIntervalMicroSeconds ttff = 90*1000000; // TO DO - this should be retrieved from the module info (currently hardcoded in locserver too)
+ maxtime = ttff.Int64();
+ }
+
+ // get current time
+ timeReceived.UniversalTime();
+
+ // get the position data:
+ aPosInfo.GetPosition(pos);
+
+ INFO_PRINTF1(_L("First position received at: "));
+ INFO_PRINTF4(_L("%d/%d/%d"), timeReceived.DateTime().Day() + 1, timeReceived.DateTime().Month() + 1, timeReceived.DateTime().Year());
+ INFO_PRINTF5(_L("at %d :%d :%d :%d"), timeReceived.DateTime().Hour(), timeReceived.DateTime().Minute(), timeReceived.DateTime().Second(), timeReceived.DateTime().MicroSecond());
+
+ timeStamp = pos.Time();
+ INFO_PRINTF1(_L("First position timeStamp: "));
+ INFO_PRINTF4(_L("%d/%d/%d"), timeStamp.DateTime().Day() + 1, timeStamp.DateTime().Month() + 1, timeStamp.DateTime().Year());
+ INFO_PRINTF5(_L("at %d :%d :%d :%d"), timeStamp.DateTime().Hour(), timeStamp.DateTime().Minute(), timeStamp.DateTime().Second(), timeStamp.DateTime().MicroSecond());
+
+ TInt64 timediff;
+ timediff = timeReceived.Int64() - aTimeRequested.Int64();
+
+ // *first* position received can arrive 'immediately' and up to timeout, or maxtimetofirstfix if timeout not specified
+ if(timediff > maxtime)
+ {
+ INFO_PRINTF1(_L("Failed: First Position received outside time range"));
+ return FALSE;
+ }
+ else
+ {
+ return TRUE;
+ }
+ }
+
+
+/**
+ aPosCount - which position in a set of periodic positions this is (first position = 0)
+ */
+TBool CT_LbsClientStep_Tracking::VerifyPosTime(const TTime& aTimeFirstPosStamped, const TPositionUpdateOptions& aUpdateOpts, TPositionInfo& aPosInfo, TInt aPosCount)
+ {
+ TTime timeReceived, timeStamp;
+ TPosition pos;
+ TInt64 interval = aUpdateOpts.UpdateInterval().Int64();
+ TTimeIntervalMicroSeconds timeout;
+ timeout = aUpdateOpts.UpdateTimeOut().Int64();
+
+ // should call different function for first position:
+ __ASSERT_ALWAYS(aPosCount > 0, User::Panic(_L("Update options test"), KErrArgument));
+
+ // get current time
+ timeReceived.UniversalTime();
+
+ // get the position data:
+ aPosInfo.GetPosition(pos);
+
+ INFO_PRINTF1(_L("Position received at: "));
+ INFO_PRINTF4(_L("%d/%d/%d"), timeReceived.DateTime().Day() + 1, timeReceived.DateTime().Month() + 1, timeReceived.DateTime().Year());
+ INFO_PRINTF5(_L("at %d :%d :%d :%d"), timeReceived.DateTime().Hour(), timeReceived.DateTime().Minute(), timeReceived.DateTime().Second(), timeReceived.DateTime().MicroSecond());
+
+ timeStamp = pos.Time();
+ INFO_PRINTF1(_L("Position timeStamp: "));
+ INFO_PRINTF4(_L("%d/%d/%d"), timeStamp.DateTime().Day() + 1, timeStamp.DateTime().Month() + 1, timeStamp.DateTime().Year());
+ INFO_PRINTF5(_L("at %d :%d :%d :%d"), timeStamp.DateTime().Hour(), timeStamp.DateTime().Minute(), timeStamp.DateTime().Second(), timeStamp.DateTime().MicroSecond());
+
+ TTime windowstart = aTimeFirstPosStamped + static_cast<TTimeIntervalMicroSeconds>(aPosCount * interval) - KTimestampMargin;
+ TTime windowend = windowstart + timeout + KTimestampMargin;
+
+ INFO_PRINTF1(_L("valid window start: "));
+ INFO_PRINTF4(_L("%d/%d/%d"), windowstart.DateTime().Day() + 1, windowstart.DateTime().Month() + 1, windowstart.DateTime().Year());
+ INFO_PRINTF5(_L("at %d :%d :%d :%d"), windowstart.DateTime().Hour(), windowstart.DateTime().Minute(), windowstart.DateTime().Second(), windowstart.DateTime().MicroSecond());
+
+ if(timeStamp < windowstart && timeReceived < windowstart)
+ {
+ INFO_PRINTF1(_L("Failed: Position received outside time range"));
+ return FALSE;
+ }
+ if(timeout.Int64() && (timeStamp > windowend || timeReceived > windowend))
+ {
+ INFO_PRINTF1(_L("valid window end: "));
+ INFO_PRINTF4(_L("%d/%d/%d"), windowend.DateTime().Day() + 1, windowend.DateTime().Month() + 1, windowend.DateTime().Year());
+ INFO_PRINTF5(_L("at %d :%d :%d :%d"), windowend.DateTime().Hour(), windowend.DateTime().Minute(), windowend.DateTime().Second(), windowend.DateTime().MicroSecond());
+
+ return FALSE;
+ }
+ else
+ {
+ return TRUE;
+ }
+ }
+
+
+/**
+ * @return - TVerdict code
+ * Override of base class pure virtual
+ * Our implementation only gets called if the base class doTestStepPreambleL() did
+ * not leave. That being the case, the current test result value will be EPass.
+ */
+TVerdict CT_LbsClientStep_Tracking::doTestStepL()
+ {
+ // Generic test step used to test the LBS SetUpdateOptions API.
+ INFO_PRINTF1(_L(">>CT_LbsClientStep_Tracking::doTestStepL()"));
+
+ if (TestStepResult()==EPass)
+ {
+ // Determine the test case id.
+ TInt testCaseId;
+ if (GetIntFromConfig(ConfigSection(), KTestCaseId, testCaseId))
+ {
+ // Set the update options.
+ T_LbsUtils utils;
+ TPtrC configFileName;
+ _LIT(KUpdateOptionsFile, "agps_module_update_file");
+
+ GetStringFromConfig(ConfigSection(), KUpdateOptionsFile, configFileName);
+
+ utils.GetConfigured_ModuleUpdateOptionsL(configFileName, ConfigSection(), iUpdateOpts);
+ iPositioner.SetUpdateOptions(iUpdateOpts);
+
+ // count the number of updates from the .ini file
+ RPointerArray<TLbsModuleUpdateItem> posInfoArray;
+ utils.GetConfigured_UpdateArrayL(configFileName, ConfigSection(), posInfoArray);
+ TInt numOfPosInfos = posInfoArray.Count();
+ posInfoArray.ResetAndDestroy();
+
+ // Perfom test.
+ TInt err = KErrNone;
+ TPosition pos;
+ TTime timeFirstStamped;
+ TTime timeRequested;
+ iUpdateWindowIndex = 0;
+ if(testCaseId == 8)
+ {
+ iCheckIfSameAsPreviousPosition = ETrue;
+ }
+ else
+ {
+ iCheckIfSameAsPreviousPosition = EFalse;
+ }
+
+
+ for (iUpdateIndex = 0 ; iUpdateIndex < numOfPosInfos; iUpdateIndex++)
+ {
+ // Get and log current time.
+ timeRequested.UniversalTime();
+ INFO_PRINTF1(_L("Position requested at: "));
+ INFO_PRINTF4(_L("%d/%d/%d"), timeRequested.DateTime().Day() + 1, timeRequested.DateTime().Month() + 1, timeRequested.DateTime().Year());
+ INFO_PRINTF5(_L("at %d :%d :%d :%d"), timeRequested.DateTime().Hour(), timeRequested.DateTime().Minute(), timeRequested.DateTime().Second(), timeRequested.DateTime().MicroSecond());
+
+ // Do request to position update.
+ err = DoNotifyUpdateL(iPosInfo);
+
+ iPosInfo.GetPosition(pos);
+
+ // First update, ref pos, KErrNone.
+ if (iUpdateIndex == 0)
+ {
+ // Verify time taken for first update.
+ timeFirstStamped = pos.Time(); // Need to remember the time we received this update.
+ if(!VerifyFirstPosTime(timeRequested, iPosInfo, iUpdateOpts))
+ {
+ SetTestStepResult(EFail);
+ }
+
+ // Verify reference position.
+ TPositionInfo verifyRefPosInfo;
+
+ verifyRefPosInfo.SetPosition(iRefPos);
+ if (!utils.Compare_PosInfo(verifyRefPosInfo, iPosInfo))
+ {
+ INFO_PRINTF1(_L("Failed test, reference position incorrect."));
+ SetTestStepResult(EFail);
+ }
+
+ // Expected error.
+ iExpectedErr = KErrNone;
+
+ // Expect to verify interval time, for other updates.
+ iVerifyInterval = ETrue;
+ iPreviousPos = iPosInfo;
+ }
+
+ // Remaining updates.
+ else
+ {
+ // Increment the expected time interval 'window' the update is expected to arrive in
+ iUpdateWindowIndex++;
+
+ // Determine expected err, and any special test actions.
+ switch (iUpdateIndex)
+ {
+ // Second update, gps accurate, KErrNone, after n * intervals.
+ case 1:
+ {
+ iExpectedErr = KErrNone;
+
+ if(testCaseId == 7)
+ {
+ DoInterval_TestCaseId_07();
+ }
+ else if(testCaseId == 8)
+ {
+ DoInterval_TestCaseId_08();
+ }
+ else
+ {
+ // Got the first accurate gps update, switch on partial updates.
+ iUpdateOpts.SetAcceptPartialUpdates(ETrue);
+ iPositioner.SetUpdateOptions(iUpdateOpts);
+ }
+
+ break;
+ }
+
+ // Remaining updates as per test case.
+ default:
+ {
+ switch (testCaseId)
+ {
+ // Test case LBS-Tracking-001
+ case 1:
+ {
+ DoInterval_TestCaseId_01();
+
+ break;
+ }
+
+ // Test case LBS-Tracking-002
+ case 2:
+ {
+ DoInterval_TestCaseId_02();
+
+ break;
+ }
+
+ // Test case LBS-Tracking-003
+ case 3:
+ {
+ DoInterval_TestCaseId_03();
+
+ break;
+ }
+
+ // Test case LBS-Tracking-004
+ case 4:
+ {
+ DoInterval_TestCaseId_04();
+
+ break;
+ }
+
+ // Test case LBS-Tracking-005
+ case 5:
+ {
+ DoInterval_TestCaseId_05();
+
+ break;
+ }
+
+ // Test case LBS-Tracking-006
+ case 6:
+ {
+ DoInterval_TestCaseId_06();
+
+ break;
+ }
+
+ // Test case LBS-Tracking-007
+ case 7:
+ {
+ DoInterval_TestCaseId_07();
+
+ break;
+ }
+
+ // Test case LBS-Tracking-008
+ case 8:
+ {
+ DoInterval_TestCaseId_08();
+
+ break;
+ }
+ }
+ }
+ break;
+ }
+
+ // Verify correct interval for update, if required.
+ if (iVerifyInterval)
+ {
+ if(!VerifyPosTime(timeFirstStamped, iUpdateOpts, iPosInfo, iUpdateWindowIndex))
+ {
+ INFO_PRINTF1(_L("Failed: Position received outside time range"));
+ SetTestStepResult(EFail);
+ }
+ }
+
+ if(iCheckIfSameAsPreviousPosition)
+ {
+ if(iSameAsPreviousPos && !utils.Compare_PosInfo(iPreviousPos, iPosInfo))
+ {
+ INFO_PRINTF1(_L("Failed test, position different from previous, when it should be same."));
+ SetTestStepResult(EFail);
+ }
+ if(!iSameAsPreviousPos && utils.Compare_PosInfo(iPreviousPos, iPosInfo))
+ {
+ INFO_PRINTF1(_L("Failed test, position same as previous, when it should be different."));
+ SetTestStepResult(EFail);
+ }
+ }
+ iPreviousPos = iPosInfo;
+ }
+
+ // Verify err.
+ if (err != iExpectedErr)
+ {
+ SetTestStepResult(EFail);
+ }
+ }
+
+ }
+
+ }
+
+ INFO_PRINTF1(_L("<<CT_LbsClientStep_Tracking::doTestStepL()"));
+
+ return TestStepResult();
+ }
+
+
+// Test 1 - expected updates
+//
+// Ref pos, KErrNone, before interval
+// Gps pos (accurate), KErrNone, after n * intervals
+// Gps pos (accurate), KErrNone, after interval
+// Gps pos (partial), KPositionPartialUpdate, after interval
+//
+void CT_LbsClientStep_Tracking::DoInterval_TestCaseId_01()
+{
+
+ switch (iUpdateIndex)
+ {
+ case 2: // Third update, gps accurate, KErrNone.
+ {
+ iExpectedErr = KErrNone;
+
+ break;
+ }
+
+ case 3: // Last update, gps inaccurate, KPositionPartialUpdate.
+ {
+ iExpectedErr = KPositionPartialUpdate;
+
+ break;
+ }
+ }
+ }
+
+
+// Test 2 - expected updates
+//
+// Ref pos, KErrNone, before interval
+// Gps pos (accurate), KErrNone, after n * intervals
+// Gps pos (accurate), KErrNone, after interval
+// Gps pos (accurate), KErrNone, after interval
+//
+void CT_LbsClientStep_Tracking::DoInterval_TestCaseId_02()
+{
+
+ switch (iUpdateIndex)
+ {
+ case 2: // Third update, gps accurate, KErrNone.
+ case 3: // Last update, gps accurate, KErrNone.
+ {
+ iExpectedErr = KErrNone;
+
+ break;
+ }
+ }
+ }
+
+
+// Test 3 - expected updates
+//
+// Ref pos, KErrNone, before interval
+// Gps pos (accurate), KErrNone, after n * intervals
+// Gps pos (NAN), KPositionPartialUpdate, after interval
+// Gps pos (NAN), KPositionPartialUpdate, after interval
+//
+void CT_LbsClientStep_Tracking::DoInterval_TestCaseId_03()
+{
+
+ switch (iUpdateIndex)
+ {
+ case 2: // Third update, gps NAN, KPositionPartialUpdate.
+ case 3: // Last update, gps NAN, KPositionPartialUpdate.
+ {
+ iExpectedErr = KPositionPartialUpdate;
+
+ break;
+ }
+ }
+ }
+
+
+// Test 4 - expected updates
+//
+// Ref pos, KErrNone, before interval
+// Gps pos (accurate), KErrNone, after n * intervals
+// Gps pos (inaccurate), KPositionPartialUpdate, after interval
+// Gps pos (inaccurate), KPositionPartialUpdate, after interval
+//
+void CT_LbsClientStep_Tracking::DoInterval_TestCaseId_04()
+{
+
+ switch (iUpdateIndex)
+ {
+ case 2: // Third update, gps accurate, KPositionPartialUpdate.
+ case 3: // Last update, gps inaccurate, KPositionPartialUpdate.
+ {
+ iExpectedErr = KPositionPartialUpdate;
+
+ break;
+ }
+ }
+ }
+
+
+// Test 5 - expected updates
+//
+// Ref pos, KErrNone, before interval
+// Gps pos (accurate), KErrNone, after n * intervals
+// Gps pos (accurate), KErrNonee, after interval
+// Gps pos (not delivered), KErrTimedOut, after interval
+//
+void CT_LbsClientStep_Tracking::DoInterval_TestCaseId_05()
+{
+
+ switch (iUpdateIndex)
+ {
+ case 2: // Third update, gps accurate, KErrNone.
+ {
+ iExpectedErr = KErrNone;
+
+ // Send timeout to the A-GPS hybrid module - we expect further updates to timeout.
+ TTimeIntervalMicroSeconds timeOutVal(40000000);
+
+ ConfigureModuleTimeOut(timeOutVal);
+
+ break;
+ }
+
+ case 3: // Last update, gps inaccurate, KPositionPartialUpdate.
+ {
+ iExpectedErr = KErrTimedOut;
+ iVerifyInterval = EFalse;
+
+ // Reset the timeout in the A-GPS module.
+ TTimeIntervalMicroSeconds timeOutVal(0);
+ ConfigureModuleTimeOut(timeOutVal);
+ break;
+ }
+ }
+ }
+
+// Test 6 - expected updates
+//
+// Ref pos, KErrNone, before interval
+// Gps pos (accurate), KErrNone, after n * intervals
+// Gps pos (inaccurate), KPositionPartialUpdate, after interval
+// Gps pos (NAN), KPositionQualityLoss, before interval (because of futile udpate)
+// Gps pos (inaccurate), KPositionPartialUpdate, after interval
+//
+void CT_LbsClientStep_Tracking::DoInterval_TestCaseId_06()
+{
+
+ switch (iUpdateIndex)
+ {
+ case 2: // Third update, gps inaccurate, KPositionPartialUpdate.
+ {
+ iExpectedErr = KPositionPartialUpdate;
+ break;
+ }
+
+ case 3: // Fourth update, gps NAN, KPositionQualityLoss.
+ {
+ iExpectedErr = KPositionQualityLoss;
+
+ // This update should have happened before the next expected
+ // interval window (because it's a futile update from the
+ // GPS module), so it will be in the previous 'window'
+ iUpdateWindowIndex--;
+ break;
+ }
+
+ case 4: // Last update, gps inaccurate, KPositionPartialUpdate.
+ {
+ iExpectedErr = KPositionPartialUpdate;
+ break;
+ }
+ }
+ }
+
+// Test 7 - expected updates
+//
+// Ref pos, KErrNone, before interval
+// Gps pos (accurate), KErrNone, after n * intervals
+// Gps pos (inaccurate), KPositionQualityLoss, after timeout
+//
+void CT_LbsClientStep_Tracking::DoInterval_TestCaseId_07()
+ {
+ switch (iUpdateIndex)
+ {
+ case 1:
+ {
+ iExpectedErr = KErrNone;
+ break;
+ }
+ case 2:
+ {
+ iVerifyInterval = EFalse;
+ iExpectedErr = KPositionQualityLoss;
+ break;
+ }
+ }
+ }
+
+void CT_LbsClientStep_Tracking::DoInterval_TestCaseId_08()
+ {
+ iExpectedErr = KErrNone;
+ switch (iUpdateIndex)
+ {
+ case 1:
+ case 3:
+ {
+ iSameAsPreviousPos = EFalse;
+ break;
+ }
+ case 2:
+ {
+ iSameAsPreviousPos = ETrue;
+ break;
+ }
+ }
+ }
+
+// A-GPS hybrid module configuration function.
+void CT_LbsClientStep_Tracking::ConfigureModuleTimeOut(TTimeIntervalMicroSeconds& aTimeOut)
+ {
+ CT_LbsAGpsHandler* modHandler;
+ modHandler = CT_LbsAGpsHandler::NewL(this);
+
+ // Send timeout request.
+ modHandler->SendRequestTimeOutMsg(aTimeOut);
+
+ // Wait for response from module.
+ CActiveScheduler::Start();
+
+ delete modHandler;
+ }
+
+
+// Response back from A-GPS hybrid module to notify the test it has got the timeout request.
+void CT_LbsClientStep_Tracking::ProcessAGpsResponseMessage(const TT_LbsAGpsResponseMsg::TModuleResponseType aResponse)
+ {
+ if (TT_LbsAGpsResponseMsg::EModuleResponseOk != aResponse)
+ {
+ // fail test could not config module!
+ INFO_PRINTF2(_L("Unable to configure hybrid module, err %d."), aResponse);
+ SetTestStepResult(EFail);
+ }
+
+ // Return back to test.
+ CActiveScheduler::Stop();
+ }
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/lbsclient/src/ctlbsclientstepupdateoptions.cpp Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,1274 @@
+// 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 ctlbsclientstep_UpdateOptions.cpp
+// This is the class implementation for the UpdateOptions Tests
+//
+//
+
+#include "ctlbsclientstepupdateoptions.h"
+
+#include <lbs.h>
+#include <lbssatellite.h>
+
+#include "tlbsutils.h"
+#include "ctlbsasyncwaiter.h"
+
+#define EXPECTED_GPS_ACCURACY_HORIZONTAL 100
+#define EXPECTED_GPS_ACCURACY_VERTICAL 100
+
+const TTimeIntervalMicroSeconds KTimestampMargin = 500000; //+/-0.5s
+
+/**
+
+ */
+TBool CT_LbsClientStep_UpdateOptions::VerifyFirstPosTime(const TTime& aTimeRequested, const TPositionInfo& aPosInfo, const TPositionUpdateOptions& aUpdateOpts)
+ {
+ TTime timeReceived, timeStamp;
+ TPosition pos;
+
+ TInt64 maxtime;
+ maxtime = aUpdateOpts.UpdateTimeOut().Int64();
+ if(!maxtime)
+ {
+ #pragma message("TO DO: CT_LbsClientStep_UpdateOptions::VerifyFirstPosTime - Update when moduleinfo supported")
+ const TTimeIntervalMicroSeconds ttff = 90*1000000; // TO DO - this should be retrieved from the module info (currently hardcoded in locserver too)
+ maxtime = ttff.Int64();
+ }
+
+ // get current time
+ timeReceived.UniversalTime();
+
+ // get the position data:
+ aPosInfo.GetPosition(pos);
+
+ INFO_PRINTF1(_L("First position received at: "));
+ INFO_PRINTF4(_L("%d/%d/%d"), timeReceived.DateTime().Day() + 1, timeReceived.DateTime().Month() + 1, timeReceived.DateTime().Year());
+ INFO_PRINTF5(_L("at %d :%d :%d :%d"), timeReceived.DateTime().Hour(), timeReceived.DateTime().Minute(), timeReceived.DateTime().Second(), timeReceived.DateTime().MicroSecond());
+
+ timeStamp = pos.Time();
+ INFO_PRINTF1(_L("First position timeStamp: "));
+ INFO_PRINTF4(_L("%d/%d/%d"), timeStamp.DateTime().Day() + 1, timeStamp.DateTime().Month() + 1, timeStamp.DateTime().Year());
+ INFO_PRINTF5(_L("at %d :%d :%d :%d"), timeStamp.DateTime().Hour(), timeStamp.DateTime().Minute(), timeStamp.DateTime().Second(), timeStamp.DateTime().MicroSecond());
+
+ TInt64 timediff;
+ timediff = timeReceived.Int64() - aTimeRequested.Int64();
+
+ // *first* position received can arrive 'immediately' and up to timeout, or maxtimetofirstfix if timeout not specified
+ if(timediff > maxtime)
+ {
+ INFO_PRINTF1(_L("Failed: First Position received outside time range"));
+ return FALSE;
+ }
+ else
+ {
+ return TRUE;
+ }
+
+ }
+
+
+/**
+ aPosCount - which position in a set of periodic positions this is (first position = 0)
+ */
+TBool CT_LbsClientStep_UpdateOptions::VerifyPosTime(const TTime& aTimeFirstPosStamped, const TPositionUpdateOptions& aUpdateOpts, TPositionInfo& aPosInfo, TInt aPosCount)
+ {
+ TTime timeReceived, timeStamp;
+ TPosition pos;
+ TInt64 interval = aUpdateOpts.UpdateInterval().Int64();
+ TTimeIntervalMicroSeconds timeout;
+ timeout = aUpdateOpts.UpdateTimeOut().Int64();
+
+ // should call different function for first position:
+ __ASSERT_ALWAYS(aPosCount > 0, User::Panic(_L("Update options test"), KErrArgument));
+
+ // get current time
+ timeReceived.UniversalTime();
+
+ // get the position data:
+ aPosInfo.GetPosition(pos);
+
+ INFO_PRINTF1(_L("Position received at: "));
+ INFO_PRINTF4(_L("%d/%d/%d"), timeReceived.DateTime().Day() + 1, timeReceived.DateTime().Month() + 1, timeReceived.DateTime().Year());
+ INFO_PRINTF5(_L("at %d :%d :%d :%d"), timeReceived.DateTime().Hour(), timeReceived.DateTime().Minute(), timeReceived.DateTime().Second(), timeReceived.DateTime().MicroSecond());
+
+ timeStamp = pos.Time();
+ INFO_PRINTF1(_L("Position timeStamp: "));
+ INFO_PRINTF4(_L("%d/%d/%d"), timeStamp.DateTime().Day() + 1, timeStamp.DateTime().Month() + 1, timeStamp.DateTime().Year());
+ INFO_PRINTF5(_L("at %d :%d :%d :%d"), timeStamp.DateTime().Hour(), timeStamp.DateTime().Minute(), timeStamp.DateTime().Second(), timeStamp.DateTime().MicroSecond());
+
+ TTime windowstart = aTimeFirstPosStamped + static_cast<TTimeIntervalMicroSeconds>(aPosCount * interval) - KTimestampMargin;
+ TTime windowend = windowstart + timeout + KTimestampMargin;
+
+ INFO_PRINTF1(_L("valid window start: "));
+ INFO_PRINTF4(_L("%d/%d/%d"), windowstart.DateTime().Day() + 1, windowstart.DateTime().Month() + 1, windowstart.DateTime().Year());
+ INFO_PRINTF5(_L("at %d :%d :%d :%d"), windowstart.DateTime().Hour(), windowstart.DateTime().Minute(), windowstart.DateTime().Second(), windowstart.DateTime().MicroSecond());
+
+ if(timeStamp < windowstart)
+ {
+ INFO_PRINTF1(_L("Failed: Position received outside time range"));
+ return FALSE;
+ }
+ if(timeout.Int64() && (timeStamp > windowend))
+ {
+ INFO_PRINTF1(_L("valid window end: "));
+ INFO_PRINTF4(_L("%d/%d/%d"), windowend.DateTime().Day() + 1, windowend.DateTime().Month() + 1, windowend.DateTime().Year());
+ INFO_PRINTF5(_L("at %d :%d :%d :%d"), windowend.DateTime().Hour(), windowend.DateTime().Minute(), windowend.DateTime().Second(), windowend.DateTime().MicroSecond());
+
+ return FALSE;
+ }
+ else
+ {
+ return TRUE;
+ }
+ }
+
+
+
+
+// constant definitions
+_LIT(KLbsClientStepUpdateOptions, "LbsClientStepUpdateOptions");
+
+/**
+ * Sets a Requestor for now - TO DO will be removed with new location server?
+ */
+void CT_LbsClientStep_UpdateOptions::TempSetRequestorL()
+ {
+ User::LeaveIfError(iPositioner.SetRequestor( CRequestor::ERequestorService,
+ CRequestor::EFormatApplication,
+ _L("Tom Tom")));
+ }
+
+
+/**
+ * Destructor
+ */
+CT_LbsClientStep_UpdateOptions::~CT_LbsClientStep_UpdateOptions()
+ {
+ delete iLbsAdmin;
+ }
+
+
+/**
+ * Constructor
+ */
+CT_LbsClientStep_UpdateOptions::CT_LbsClientStep_UpdateOptions(CT_LbsClientServer& aParent) : CT_LbsClientStep(aParent), iLbsAdmin(NULL), iRequestedAssData(FALSE), iReceivedAssData(FALSE)
+ {
+ SetTestStepName(KLbsClientStep_UpdateOptions);
+ }
+
+
+/**
+Static Constructor
+*/
+CT_LbsClientStep_UpdateOptions* CT_LbsClientStep_UpdateOptions::New(CT_LbsClientServer& aParent)
+ {
+ return new CT_LbsClientStep_UpdateOptions(aParent);
+ // Note the lack of ELeave.
+ // This means that having insufficient memory will return NULL;
+ }
+
+
+/**
+Compare UpdateOptions
+*/
+TBool CT_LbsClientStep_UpdateOptions::CompareUpdateOptions(TPositionUpdateOptions aPosA, TPositionUpdateOptions aPosB)
+ {
+ TBool isEqual = ETrue;
+
+ if(aPosA.AcceptPartialUpdates() != aPosB.AcceptPartialUpdates())
+ {
+ return EFalse;
+ }
+
+ if(aPosA.MaxUpdateAge() != aPosB.MaxUpdateAge())
+ {
+ return EFalse;
+ }
+
+ if(aPosA.PositionClassSize() != aPosB.PositionClassSize())
+ {
+ return EFalse;
+ }
+
+ if(aPosA.PositionClassType() != aPosB.PositionClassType())
+ {
+ return EFalse;
+ }
+
+ if(aPosA.UpdateInterval() != aPosB.UpdateInterval())
+ {
+ return EFalse;
+ }
+
+ if(aPosA.UpdateTimeOut() != aPosB.UpdateTimeOut())
+ {
+ return EFalse;
+ }
+
+ return isEqual;
+
+ }
+
+/**
+ * @return - TVerdict code
+ * Override of base class pure virtual
+ * Our implementation only gets called if the base class doTestStepPreambleL() did
+ * not leave. That being the case, the current test result value will be EPass.
+ */
+TVerdict CT_LbsClientStep_UpdateOptions::doTestStepL()
+ {
+ // Generic test step used to test the LBS SetUpdateOptions API.
+ INFO_PRINTF1(_L(">>CT_LbsClientStep_UpdateOptions::doTestStepL()"));
+
+ if (TestStepResult()==EPass)
+ {
+ TInt err = KErrNone;
+
+ // Connect to self locate server.
+ User::LeaveIfError(iServer.Connect());
+ CleanupClosePushL(iServer);
+
+ // Carryout unique test actions.
+ TInt testCaseId;
+ if (GetIntFromConfig(ConfigSection(), KTestCaseId, testCaseId))
+ {
+ switch (testCaseId)
+ {
+ // Test case LBS-UpdateOptions-001
+ case 1:
+ {
+ // Open positioner.
+ User::LeaveIfError(iPositioner.Open(iServer));
+ CleanupClosePushL(iPositioner);
+ TPositionUpdateOptions optsA;
+
+ TPositionUpdateOptions optsB;
+ iPositioner.SetUpdateOptions(optsA);
+ iPositioner.GetUpdateOptions(optsB);
+ if (!CompareUpdateOptions(optsA, optsB))
+ {
+ SetTestStepResult(EFail);
+ }
+
+ CleanupStack::PopAndDestroy(&iPositioner);
+
+ break;
+ }
+
+ // Test case LBS-UpdateOptions-002
+ case 2:
+ {
+ // Open positioner.
+ User::LeaveIfError(iPositioner.Open(iServer));
+ CleanupClosePushL(iPositioner);
+ //(aInterval, aTimeOut, aMaxAge, TBool aAcceptPartialUpdates=EFalse)
+ TPositionUpdateOptions optsA(-1, 0, 0, EFalse);
+
+ CleanupStack::PopAndDestroy(&iPositioner);
+
+ break;
+ }
+
+ // Test case LBS-UpdateOptions-003
+ case 3:
+ {
+ // Open positioner.
+ User::LeaveIfError(iPositioner.Open(iServer));
+ CleanupClosePushL(iPositioner);
+
+ TPositionUpdateOptions optsA(0, -1, 0, EFalse);
+
+ CleanupStack::PopAndDestroy(&iPositioner);
+
+ break;
+ }
+
+ // Test case LBS-UpdateOptions-004
+ case 4:
+ {
+ // Open positioner.
+ User::LeaveIfError(iPositioner.Open(iServer));
+ CleanupClosePushL(iPositioner);
+
+ TPositionUpdateOptions optsA(0, 0, -1, EFalse);
+
+ CleanupStack::PopAndDestroy(&iPositioner);
+
+ break;
+ }
+
+
+ // Test case LBS-UpdateOptions-005
+ case 5:
+ {
+ // Open positioner.
+ User::LeaveIfError(iPositioner.Open(iServer));
+ CleanupClosePushL(iPositioner);
+
+ TPositionUpdateOptions& updateOpts = iParent.iSharedData->iVerifyUpdateOpts;
+ iPositioner.SetUpdateOptions(updateOpts);
+
+ // Create a posinfo and store in our shared array for later verification.
+ RPointerArray<TAny>& posInfoArr = iParent.iSharedData->iCurrentPosInfoArr;
+ TPositionInfo* posInfo = new(ELeave) TPositionInfo();
+
+ T_LbsUtils utils;
+ utils.ResetAndDestroy_PosInfoArr(posInfoArr); // Clear previous entries before new entry is appended.
+
+ posInfoArr.Append(posInfo);
+
+ TTime timeRequested;
+ timeRequested.UniversalTime();
+ INFO_PRINTF1(_L("Position requested at: "));
+ INFO_PRINTF4(_L("%d/%d/%d"), timeRequested.DateTime().Day() + 1, timeRequested.DateTime().Month() + 1, timeRequested.DateTime().Year());
+ INFO_PRINTF5(_L("at %d :%d :%d :%d"), timeRequested.DateTime().Hour(), timeRequested.DateTime().Minute(), timeRequested.DateTime().Second(), timeRequested.DateTime().MicroSecond());
+
+
+ // Get the actual position
+ err = DoNotifyUpdateL(*posInfo);
+ if (KErrNone != err || !VerifyFirstPosTime(timeRequested, *posInfo, updateOpts))
+ {
+ SetTestStepResult(EFail);
+ }
+ CleanupStack::PopAndDestroy(&iPositioner);
+
+ break;
+ }
+
+
+ // Test case LBS-UpdateOptions-006
+ case 6:
+ {
+ // Open positioner.
+ User::LeaveIfError(iPositioner.Open(iServer));
+ CleanupClosePushL(iPositioner);
+
+ RPointerArray<TAny>& posInfoArr = iParent.iSharedData->iCurrentPosInfoArr;
+ T_LbsUtils utils;
+ utils.ResetAndDestroy_PosInfoArr(posInfoArr); // Clear previous entries before new entry is appended.
+
+ // Create a posinfo and store in our shared array for later verification.
+ TPositionInfo* posInfo = new(ELeave) TPositionInfo();
+ posInfoArr.Append(posInfo);
+
+ TRequestStatus status;
+
+ TPositionUpdateOptions tempOpts;
+ // set a fairly long interval (1 minute) to ensure the 2nd request doesn't complete too quicky:
+ tempOpts.SetUpdateInterval(60*1000000);
+ tempOpts.SetUpdateTimeOut(300*1000000);
+ iPositioner.SetUpdateOptions(tempOpts);
+ iPositioner.GetUpdateOptions(tempOpts);
+
+ TempSetRequestorL();
+
+ TTime timeRequested;
+ TTime timeFirstStamped;
+
+ INFO_PRINTF2(_L("Requesting position (current interval set to %d): "),tempOpts.UpdateInterval().Int64() );
+ timeRequested.UniversalTime();
+ err = DoNotifyUpdateL(*posInfo);
+ if (KErrNone != err)
+ {
+ INFO_PRINTF2(_L("Failed: Position Update failed with %d"), err);
+ SetTestStepResult(EFail);
+ }
+ else
+ {
+ TPosition pos;
+ posInfo->GetPosition(pos);
+
+ // need to remember the time we received this one:
+ timeFirstStamped = pos.Time();
+ if(!VerifyFirstPosTime(timeRequested, *posInfo, tempOpts))
+ {
+ SetTestStepResult(EFail);
+ }
+ }
+
+ // Create another posinfo and store in our shared array for later verification.
+ posInfo = new(ELeave) TPositionInfo();
+ posInfoArr.Append(posInfo);
+
+ INFO_PRINTF2(_L("Requesting position (current interval set to %d): "), tempOpts.UpdateInterval().Int64());
+
+ // this should complete after original interval (1 min), despite setting a new interval while it's outstanding:
+ iPositioner.NotifyPositionUpdate(*posInfo, status);
+
+ // set configured update options while update still outstanding:
+ TPositionUpdateOptions& updateOpts = iParent.iSharedData->iVerifyUpdateOpts;
+ iPositioner.SetUpdateOptions(updateOpts);
+ iPositioner.GetUpdateOptions(updateOpts);
+
+ INFO_PRINTF2(_L("Interval now set to %d microseconds"), updateOpts.UpdateInterval().Int64());
+
+ User::WaitForRequest(status);
+
+ // verify time for 'outstanding when interval changed' position
+ if(!VerifyPosTime(timeFirstStamped, tempOpts, *posInfo, 1))
+ {
+ INFO_PRINTF1(_L("CT_LbsClientStep_UpdateOptions::doTestStepL() Failed: Time received outside valid range"));
+ SetTestStepResult(EFail);
+ }
+ else
+ {
+ TInt numOfPosInfos = iParent.iSharedData->iVerifyPosInfoArr.Count() - 2; // -2 because first 2 positions used above
+ for(TInt i = 0 ; i < numOfPosInfos ; i++)
+ {
+ // get current time
+ timeRequested.UniversalTime();
+ INFO_PRINTF1(_L("Position requested at: "));
+ INFO_PRINTF4(_L("%d/%d/%d"), timeRequested.DateTime().Day() + 1, timeRequested.DateTime().Month() + 1, timeRequested.DateTime().Year());
+ INFO_PRINTF5(_L("at %d :%d :%d :%d"), timeRequested.DateTime().Hour(), timeRequested.DateTime().Minute(), timeRequested.DateTime().Second(), timeRequested.DateTime().MicroSecond());
+
+ //Do request to position update
+ posInfo = new(ELeave) TPositionInfo();
+ posInfoArr.Append(posInfo);
+
+ err = DoNotifyUpdateL(*posInfo);
+ if (KErrNone != err)
+ {
+ INFO_PRINTF2(_L("Failed: Position Update failed with %d"), err);
+ SetTestStepResult(EFail);
+ }
+ else
+ {
+ if(i > 0)
+ {
+ if(!VerifyPosTime(timeFirstStamped, updateOpts, *posInfo, i))
+ {
+ INFO_PRINTF1(_L("Failed: Position received outside time range"));
+ SetTestStepResult(EFail);
+ }
+ }
+ else // first position
+ {
+ TPosition pos;
+
+ posInfo->GetPosition(pos);
+
+ // need to remember the time we received this one:
+ timeFirstStamped = pos.Time();
+ if(!VerifyFirstPosTime(timeRequested, *posInfo, updateOpts))
+ {
+ SetTestStepResult(EFail);
+ }
+ }
+ }
+ }
+ }
+
+ CleanupStack::PopAndDestroy(&iPositioner);
+
+ break;
+ }
+
+
+ // Test case LBS-UpdateOptions-007
+ case 7:
+ case 107:
+ {
+ // Open positioner.
+ User::LeaveIfError(iPositioner.Open(iServer));
+ CleanupClosePushL(iPositioner);
+
+
+ // For this test an additional reference position will be returned.
+ if (testCaseId == 107)
+ {
+ // Setup netsim.
+ User::LeaveIfError(OpenNetSim());
+
+ // Request notify for the expected reference position.
+ TPositionInfo actualRefPosInfo;
+
+ err = DoNotifyUpdateL(actualRefPosInfo);
+ if (err)
+ {
+ INFO_PRINTF2(_L("Failed test, reference position request returned err %d."), err);
+
+ SetTestStepResult(EFail);
+ }
+
+ // Verify reference position.
+ T_LbsUtils utils;
+ TPositionInfo verifyRefPosInfo;
+
+ verifyRefPosInfo.SetPosition(iRefPos);
+ if (!utils.Compare_PosInfo(verifyRefPosInfo, actualRefPosInfo))
+ {
+ INFO_PRINTF1(_L("Failed test, reference position incorrect."));
+ SetTestStepResult(EFail);
+ }
+ }
+
+
+ TPositionUpdateOptions& updateOpts = iParent.iSharedData->iVerifyUpdateOpts;
+
+ iPositioner.SetUpdateOptions(updateOpts);
+
+ // verify that the set worked:
+ ASSERT(updateOpts.UpdateInterval() == iParent.iSharedData->iVerifyUpdateOpts.UpdateInterval());
+
+ // Create a posinfo and store in our shared array for later verification.
+ RPointerArray<TAny>& posInfoArr = iParent.iSharedData->iCurrentPosInfoArr;
+ T_LbsUtils utils;
+ utils.ResetAndDestroy_PosInfoArr(posInfoArr); // Clear previous entries before new entry is appended.
+
+ TPositionInfo* posInfo;
+ TTime timeRequested;
+
+ iPositioner.GetUpdateOptions(updateOpts);
+
+ TInt numOfPosInfos = iParent.iSharedData->iVerifyPosInfoArr.Count();
+ TTime timeFirstStamped;
+ for(TInt i = 0 ; i < numOfPosInfos ; i++)
+ {
+ // get current time
+ timeRequested.UniversalTime();
+ INFO_PRINTF1(_L("Position requested at: "));
+ INFO_PRINTF4(_L("%d/%d/%d"), timeRequested.DateTime().Day() + 1, timeRequested.DateTime().Month() + 1, timeRequested.DateTime().Year());
+ INFO_PRINTF5(_L("at %d :%d :%d :%d"), timeRequested.DateTime().Hour(), timeRequested.DateTime().Minute(), timeRequested.DateTime().Second(), timeRequested.DateTime().MicroSecond());
+
+ //Do request to position update
+ posInfo = new(ELeave) TPositionInfo();
+ posInfoArr.Append(posInfo);
+
+ err = DoNotifyUpdateL(*posInfo);
+ if (KErrNone != err)
+ {
+ INFO_PRINTF2(_L("NotifyUpdate failed with %d "), err);
+ SetTestStepResult(EFail);
+ }
+ else
+ {
+ if(i > 0)
+ {
+ if(!VerifyPosTime(timeFirstStamped, updateOpts, *posInfo, i))
+ {
+ INFO_PRINTF1(_L("Failed: Position received outside time range"));
+ SetTestStepResult(EFail);
+ }
+ }
+ else // first position
+ {
+ TPosition pos;
+
+ posInfo->GetPosition(pos);
+
+ // need to remember the time we received this one:
+ timeFirstStamped = pos.Time();
+ if(!VerifyFirstPosTime(timeRequested, *posInfo, updateOpts))
+ {
+ SetTestStepResult(EFail);
+ }
+ }
+ }
+ }
+
+ // Clean up.
+ CleanupStack::PopAndDestroy(&iPositioner);
+ if (testCaseId == 107)
+ {
+ CloseNetSim();
+ }
+
+ break;
+ }
+
+ // Test case LBS-UpdateOptions-008
+ case 8:
+ {
+ // Open positioner.
+ User::LeaveIfError(iPositioner.Open(iServer));
+ CleanupClosePushL(iPositioner);
+
+ //2 second interval
+ TPositionUpdateOptions optsA(2000000, 0, 0, EFalse);
+ optsA.SetUpdateInterval(-1);
+
+ CleanupStack::PopAndDestroy(&iPositioner);
+
+ break;
+ }
+
+ // Test case LBS-UpdateOptions-009
+ case 9:
+ {
+ // Open positioner.
+ User::LeaveIfError(iPositioner.Open(iServer));
+ CleanupClosePushL(iPositioner);
+
+
+ //10 second interval
+ TPositionUpdateOptions posUpdateOptsA(10000000, 0, 0, EFalse);
+ TPositionUpdateOptions posUpdateOptsB;
+ iPositioner.SetUpdateOptions(posUpdateOptsA);
+ iPositioner.GetUpdateOptions(posUpdateOptsB);
+
+ if(!CompareUpdateOptions(posUpdateOptsA, posUpdateOptsB))
+ {
+ INFO_PRINTF1(_L("SetUpdate and GetUpdate comparison didn't match"));
+ SetTestStepResult(EFail);
+ }
+
+ //5 second timeout
+ posUpdateOptsA.SetUpdateTimeOut(5000000);
+ iPositioner.SetUpdateOptions(posUpdateOptsA);
+ iPositioner.GetUpdateOptions(posUpdateOptsB);
+
+ if(!CompareUpdateOptions(posUpdateOptsA, posUpdateOptsB))
+ {
+ INFO_PRINTF1(_L("SetUpdate and GetUpdate comparison didn't match"));
+ SetTestStepResult(EFail);
+ }
+
+ TPositionInfo posInfo;
+
+ // TO DO - is this sufficient, or should we really be testing how long it takes to timeout?
+
+ // Get the actual position, should time out on AGPS side
+ // ** Configure test gps module to cause a timeout
+ err = DoNotifyUpdateL(posInfo);
+ if (KErrTimedOut != err)
+ {
+ INFO_PRINTF1(_L("<FONT><B>AGPS module didn't timeout as expected.</B></FONT>"));
+ SetTestStepResult(EFail);
+ }
+
+ CleanupStack::PopAndDestroy(&iPositioner);
+
+ break;
+ }
+
+
+ // Test case LBS-UpdateOptions-010
+ case 10:
+ {
+ // Open positioner.
+ User::LeaveIfError(iPositioner.Open(iServer));
+ CleanupClosePushL(iPositioner);
+
+ TPositionUpdateOptions optsA;
+ optsA.SetUpdateTimeOut(-1);
+
+ CleanupStack::PopAndDestroy(&iPositioner);
+ break;
+ }
+
+
+ // Test case LBS-UpdateOptions-011
+ case 11:
+ {
+ // Open positioner with
+ // configured required quality
+ TPositionCriteria criteria;
+ TPositionQuality quality;
+
+ // set up the required accuracy
+ quality.SetHorizontalAccuracy(EXPECTED_GPS_ACCURACY_HORIZONTAL);
+ quality.SetVerticalAccuracy(EXPECTED_GPS_ACCURACY_VERTICAL);
+
+ criteria.SetRequiredQuality(quality);
+ User::LeaveIfError(iPositioner.Open(iServer, criteria));
+ CleanupClosePushL(iPositioner);
+
+ //Configure partial Updates
+ TPositionUpdateOptions optsA;
+ optsA.SetAcceptPartialUpdates(EFalse);
+ if(EFalse != optsA.AcceptPartialUpdates())
+ {
+ INFO_PRINTF1(_L("Partial Updates not set."));
+ SetTestStepResult(EFail);
+ }
+
+ iPositioner.SetUpdateOptions(optsA);
+
+
+ // NOTE:
+ // -Expect to call NPU once, and have module return 2 partial updates
+ // before finally returning the complete update.
+ // -We need a way to inform the module that it nedes to return partial updates
+ // When we have AcceptPartialUpdates SwitchedOff.
+
+ // ** Test AGPS manager must already be configured to return partial location info
+ // ** We should only see the full location info to required accuracy etc
+ TPositionInfo positionInfo;
+ TPositionInfo positionInfoTemp = reinterpret_cast<TPositionInfo&>(iParent.iSharedData->iVerifyPosInfoArr[2]);
+
+ // Get the actual position
+ err = DoNotifyUpdateL(positionInfo);
+ if (KErrNone != err)
+ {
+ SetTestStepResult(EFail);
+ }
+ else
+ {
+ //Compare posInfo with Moduledata 3
+ T_LbsUtils utils;
+ if(!utils.Compare_PosInfo(positionInfo, positionInfoTemp))
+ {
+ INFO_PRINTF1(_L("<FONT><B>We didn't recieve complete update.</B></FONT>"));
+ SetTestStepResult(EFail);
+ }
+ }
+
+ CleanupStack::PopAndDestroy(&iPositioner);
+
+ break;
+ }
+
+ // Test case LBS-UpdateOptions-012
+ case 12:
+ {
+ // Open positioner with
+ // configured required quality
+ TPositionCriteria criteria;
+ TPositionQuality quality;
+
+ // set up the required accuracy
+ quality.SetHorizontalAccuracy(EXPECTED_GPS_ACCURACY_HORIZONTAL);
+ quality.SetVerticalAccuracy(EXPECTED_GPS_ACCURACY_VERTICAL);
+
+ criteria.SetRequiredQuality(quality);
+ err = iPositioner.Open(iServer, criteria);
+ User::LeaveIfError(err);
+ CleanupClosePushL(iPositioner);
+
+ //Configure partial Updates
+ TPositionUpdateOptions optsA;
+ optsA.SetAcceptPartialUpdates(ETrue);
+ if(!optsA.AcceptPartialUpdates())
+ {
+ INFO_PRINTF1(_L("Partial Updates not set."));
+ SetTestStepResult(EFail);
+ }
+
+ err = iPositioner.SetUpdateOptions(optsA);
+ User::LeaveIfError(err);
+
+ // NOTE:
+ // -Expect to call NPU repeatedly to recieve each partial update
+ // -We need a way to inform the module that it nedes to return partial updates
+ // When we have AcceptPartialUpdates SwitchedOff.
+
+ // ** Test AGPS manager must already be configured to return partial location info
+ // ** We should only see the full location info to required accuracy etc
+
+ // Create a posinfo and store in our shared array for later verification.
+ RPointerArray<TAny>& posInfoArr = iParent.iSharedData->iCurrentPosInfoArr;
+ T_LbsUtils utils;
+ utils.ResetAndDestroy_PosInfoArr(posInfoArr); // Clear previous entries before new entry is appended.
+
+ TInt loopCount = iParent.iSharedData->iCurrentPosInfoArr.Count()-1;
+ // Get the actual position
+ for(int i = 0 ; i < loopCount ; i++ )
+ {
+ TPositionInfo* positionInfo = new(ELeave) TPositionInfo();
+ posInfoArr.Append(positionInfo);
+
+ err = DoNotifyUpdateL(*positionInfo);
+ if (KErrNone != err)
+ {
+ SetTestStepResult(EFail);
+ }
+ }
+
+ CleanupStack::PopAndDestroy(&iPositioner);
+
+ break;
+ }
+
+ // Test case LBS-UpdateOptions-013
+ case 13:
+ {
+ // Open positioner.
+ User::LeaveIfError(iPositioner.Open(iServer));
+ CleanupClosePushL(iPositioner);
+
+ TPositionInfo posInfo;
+ TPositionInfo posInfob;
+
+ // This call to NPU puts a location in cache
+ err = DoNotifyUpdateL(posInfo);
+ if (KErrNone != err)
+ {
+ SetTestStepResult(EFail);
+ }
+
+ // TO DO - read these from config?
+ TPositionUpdateOptions posOpts;
+ posOpts.SetMaxUpdateAge(1*1000000);
+ posOpts.SetUpdateInterval(5*1000000);
+
+ if((posOpts.MaxUpdateAge() != 1000000) || (posOpts.UpdateInterval() != 5000000))
+ {
+ SetTestStepResult(EFail);
+ }
+
+ iPositioner.SetUpdateOptions(posOpts);
+
+ //Retrieve cached location with second call to NPU
+ err = DoNotifyUpdateL(posInfob);
+ if (KErrNone != err)
+ {
+ SetTestStepResult(EFail);
+ }
+
+ //INTERNAL COMPARISON
+ //Make sure we've retrieved the cached location
+ T_LbsUtils utils;
+ if(!utils.Compare_PosInfo(posInfo, posInfob))
+ {
+ SetTestStepResult(EFail);
+ }
+
+ CleanupStack::PopAndDestroy(&iPositioner);
+
+ break;
+ }
+
+
+
+
+
+ // Test case LBS-UpdateOptions-014
+ case 14:
+ {
+ T_LbsUtils utils;
+ TPositionModuleId networkModId = utils.GetNetworkModuleIdL(iServer);
+
+ // Open positioners.
+ User::LeaveIfError(iPositioner.Open(iServer, networkModId));
+ CleanupClosePushL(iPositioner);
+
+ RPositionServer server2;
+ RPositioner positioner2;
+
+ // Connect to self locate servers.
+ User::LeaveIfError(server2.Connect());
+ CleanupClosePushL(server2);
+
+ TPositionModuleId aGpsModId = utils.GetAGpsModuleIdL(server2);
+
+ User::LeaveIfError(positioner2.Open(server2, aGpsModId));
+ CleanupClosePushL(positioner2);
+
+
+ TPositionUpdateOptions optsA;
+ TPositionUpdateOptions optsB;
+
+ optsA.SetMaxUpdateAge(10000000);
+ optsA.SetUpdateInterval(5000000);
+
+ optsB.SetMaxUpdateAge(0);
+ optsB.SetUpdateInterval(2000000);
+
+ TPositionInfo posInfo;
+ TPositionInfo posInfob;
+
+
+ // Get the actual position
+ err = DoNotifyUpdateL(posInfo);
+ if (KErrNone != err)
+ {
+ SetTestStepResult(EFail);
+ }
+
+ err = DoNotifyUpdateL(posInfob);
+ if (KErrNone != err)
+ {
+ SetTestStepResult(EFail);
+ }
+
+ CleanupStack::PopAndDestroy(&positioner2);
+ CleanupStack::PopAndDestroy(&server2);
+ CleanupStack::PopAndDestroy(&iPositioner);
+
+ break;
+ }
+
+
+
+
+ // Test case LBS-UpdateOptions-015
+ case 15:
+ {
+ T_LbsUtils utils;
+ TPositionModuleId networkModId = utils.GetNetworkModuleIdL(iServer);
+
+ // Open positioners.
+ User::LeaveIfError(iPositioner.Open(iServer, networkModId));
+ CleanupClosePushL(iPositioner);
+
+ RPositionServer server2;
+ RPositioner positioner2;
+
+ // Connect to self locate servers.
+ User::LeaveIfError(server2.Connect());
+ CleanupClosePushL(server2);
+
+ User::LeaveIfError(positioner2.Open(server2, networkModId));
+ CleanupClosePushL(positioner2);
+
+
+ TPositionUpdateOptions optsA;
+ TPositionUpdateOptions optsB;
+
+ optsA.SetMaxUpdateAge(10000000);
+ optsA.SetUpdateInterval(5000000);
+
+ optsB.SetMaxUpdateAge(0);
+ optsB.SetUpdateInterval(2000000);
+
+ TPositionInfo posInfo;
+ TPositionInfo posInfob;
+
+
+ // Get the actual position
+ err = DoNotifyUpdateL(posInfo);
+ if (KErrNone != err)
+ {
+ SetTestStepResult(EFail);
+ }
+
+ // Loop? Keep calling until full info recieved.
+ err = DoNotifyUpdateL(posInfob);
+ if (KErrNone != err)
+ {
+ SetTestStepResult(EFail);
+ }
+
+ CleanupStack::PopAndDestroy(&positioner2);
+ CleanupStack::PopAndDestroy(&server2);
+ CleanupStack::PopAndDestroy(&iPositioner);
+
+ break;
+ }
+
+
+
+
+
+ // Test case LBS-UpdateOptions-016
+ case 16:
+ {
+ T_LbsUtils utils;
+ TPositionModuleId networkModId = utils.GetNetworkModuleIdL(iServer);
+
+ // Open positioners.
+ User::LeaveIfError(iPositioner.Open(iServer, networkModId));
+ CleanupClosePushL(iPositioner);
+
+ RPositionServer server2;
+ RPositioner positioner2;
+
+ //Connect to self locate server
+ TPositionModuleId aGpsModId = utils.GetAGpsModuleIdL(server2);
+
+ User::LeaveIfError(positioner2.Open(iServer, aGpsModId));
+ CleanupClosePushL(positioner2);
+
+ TPositionUpdateOptions optsA;
+ TPositionUpdateOptions optsB;
+
+ optsA.SetMaxUpdateAge(10000000);
+ optsA.SetUpdateInterval(5000000);
+
+ optsB.SetMaxUpdateAge(0);
+ optsB.SetUpdateInterval(2000000);
+
+ TPositionInfo posInfo;
+ TPositionInfo posInfob;
+
+ // Get the actual position
+ err = DoNotifyUpdateL(posInfo);
+ if (KErrNone != err)
+ {
+ SetTestStepResult(EFail);
+ }
+
+ // Loop? Keep calling until full info recieved.
+ err = DoNotifyUpdateL(posInfob);
+ if (KErrNone != err)
+ {
+ SetTestStepResult(EFail);
+ }
+
+ CleanupStack::PopAndDestroy(&positioner2);
+ CleanupStack::PopAndDestroy(&server2);
+ CleanupStack::PopAndDestroy(&iPositioner);
+
+ break;
+ }
+
+
+
+ // Test case LBS-UpdateOptions-017
+ case 17:
+ {
+ // Open positioner.
+ User::LeaveIfError(iPositioner.Open(iServer));
+ CleanupClosePushL(iPositioner);
+
+
+ TPositionUpdateOptions optsA;
+ optsA.SetUpdateInterval(1000000);
+ optsA.SetMaxUpdateAge(5000000);
+
+ if((optsA.MaxUpdateAge() != 5000000) || (optsA.UpdateInterval() != 1000000))
+ {
+ SetTestStepResult(EFail);
+ }
+
+ iPositioner.SetUpdateOptions(optsA);
+ // Test AGPS manager must already be configured to return partial location info
+
+ TPositionInfo posInfo;
+
+ // This call to NPU puts a location in cache
+ err = DoNotifyUpdateL(posInfo);
+ if (KErrNone != err)
+ {
+ SetTestStepResult(EFail);
+ }
+
+ /*
+ MaxUpdateAge () returns the current age limit for
+ information returned by NotifyPositionUpdate().
+ Zero is returned when there is no acceptable age limit.
+ */
+
+ if(optsA.MaxUpdateAge() != 0)
+ {
+ SetTestStepResult(EFail);
+ }
+
+ CleanupStack::PopAndDestroy(&iPositioner);
+
+ break;
+ }
+
+ // Test case LBS-UpdateOptions-018
+ case 18:
+ {
+ // Open positioner.
+ User::LeaveIfError(iPositioner.Open(iServer));
+ CleanupClosePushL(iPositioner);
+
+ TPositionUpdateOptions optsA;
+ optsA.SetMaxUpdateAge(-1);
+
+ CleanupStack::PopAndDestroy(&iPositioner);
+
+ break;
+ }
+
+
+ // Test case LBS-UpdateOptions-019
+ case 19:
+ {
+ // Open positioner.
+ User::LeaveIfError(iPositioner.Open(iServer));
+ CleanupClosePushL(iPositioner);
+
+ //MaxUpdateAge comparision replacede by verify data step
+ TPositionUpdateOptions& updateOpts = iParent.iSharedData->iVerifyUpdateOpts;
+
+ TPositionInfo posInfoA, posInfoB;
+
+ //Get fresh location and have it in cache
+ err = DoNotifyUpdateL(posInfoA);
+ if (KErrNone != err)
+ {
+ SetTestStepResult(EFail);
+ }
+
+ //Second call to NPU should have maxupdateage set.
+ iPositioner.SetUpdateOptions(updateOpts);
+
+ err = DoNotifyUpdateL(posInfoB);
+ if (KErrNone != err)
+ {
+ SetTestStepResult(EFail);
+ }
+
+ T_LbsUtils utils;
+
+ if(!utils.Compare_PosInfo(posInfoA, posInfoB))
+ {
+ //Cached copy doesnt match retrieved copy.
+ SetTestStepResult(EFail);
+ }
+
+ CleanupStack::PopAndDestroy(&iPositioner);
+
+ break;
+ }
+
+ // Test case LBS-UpdateOptions-020
+ case 20:
+ {
+ // Open positioner.
+ User::LeaveIfError(iPositioner.Open(iServer));
+ CleanupClosePushL(iPositioner);
+
+ TPositionInfo cachedInfo, firstposInfo, secondposInfo;
+
+ TPositionUpdateOptions& updateOpts = iParent.iSharedData->iVerifyUpdateOpts;
+ updateOpts.SetUpdateInterval(0);
+ updateOpts.SetMaxUpdateAge(0);
+ //Second call to NPU should have maxupdateage set.
+ iPositioner.SetUpdateOptions(updateOpts);
+
+ // Get fresh location and have it in cache
+ err = DoNotifyUpdateL(cachedInfo);
+ if (KErrNone != err)
+ {
+ SetTestStepResult(EFail);
+ }
+
+ // Change the max fix time
+ updateOpts.SetMaxUpdateAge(5000000);
+ iPositioner.SetUpdateOptions(updateOpts);
+
+ // Wait 4 seconds
+ User::After(4000000);
+
+ // Get a position should be the same as in the cache
+ err = DoNotifyUpdateL(firstposInfo);
+ if (KErrNone != err)
+ {
+ SetTestStepResult(EFail);
+ }
+
+ // Wait 2 seconds
+ User::After(2000000);
+ // Get a position should not be the same as the cache
+ err = DoNotifyUpdateL(secondposInfo);
+ if (KErrNone != err)
+ {
+ SetTestStepResult(EFail);
+ }
+
+ T_LbsUtils utils;
+
+ TBool a = utils.Compare_PosInfo(cachedInfo, firstposInfo);
+ TBool b = utils.Compare_PosInfo(firstposInfo, secondposInfo);
+
+ if(!a || b)
+ {
+ //Cached copy doesnt match retrieved copy.
+ SetTestStepResult(EFail);
+ }
+
+ CleanupStack::PopAndDestroy(&iPositioner);
+
+ break;
+ }
+
+
+ // Test case LBS-UpdateOptions-101 (for DEF118183)
+ case 101:
+ {
+ // Open positioner.
+ User::LeaveIfError(iPositioner.Open(iServer));
+ CleanupClosePushL(iPositioner);
+
+ TPositionInfo posInfoa;
+ TPositionInfo posInfob;
+ TPositionInfo posInfoc;
+
+ // This call to NPU puts a location in cache
+ err = DoNotifyUpdateL(posInfoa);
+ if (KErrNone != err)
+ {
+ INFO_PRINTF2(_L("Failed: During first call to NPU err is %d"), err);
+ SetTestStepResult(EFail);
+ }
+
+ TPositionUpdateOptions posOpts;
+ posOpts.SetMaxUpdateAge(1*1000000);
+ posOpts.SetUpdateInterval(5*1000000);
+
+ if((posOpts.MaxUpdateAge() != 1000000) || (posOpts.UpdateInterval() != 5000000))
+ {
+ INFO_PRINTF1(_L("Failed: During check of options values"));
+ SetTestStepResult(EFail);
+ }
+
+ iPositioner.SetUpdateOptions(posOpts);
+
+ //Retrieve cached location with second call to NPU
+ err = DoNotifyUpdateL(posInfob);
+ if (KErrNone != err)
+ {
+ INFO_PRINTF2(_L("Failed: During NPU 2 value is %d"), err);
+ SetTestStepResult(EFail);
+ }
+
+ //INTERNAL COMPARISON
+ //Make sure we've retrieved the cached location
+ T_LbsUtils utils;
+ if(!utils.Compare_PosInfo(posInfoa, posInfob))
+ {
+ INFO_PRINTF1(_L("Failed: During comparison of pos info values"));
+ SetTestStepResult(EFail);
+ }
+
+ // Make 3rd call to NPU - this one to be cancelled
+ TRequestStatus status;
+ iPositioner.NotifyPositionUpdate(posInfoc, status);
+
+ // Wait 2 seconds and then cancel
+ User::After(2000000);
+ err = iPositioner.CancelRequest(EPositionerNotifyPositionUpdate);
+ if (KErrNone != err)
+ {
+ // Pre-DefectFix code would return -1 at this point since there would have been no request to cancel
+ INFO_PRINTF2(_L("Failed: Cancel request was rejected with error %d"), err);
+ SetTestStepResult(EFail);
+ }
+
+ User::WaitForRequest(status);
+ if (KErrCancel != status.Int())
+ {
+ // Pre-DefectFix code would return 0 at this point to indicate a successfully returned position
+ INFO_PRINTF2(_L("Failed: Expected NPU to complete with KErrCancel but actual value is %d"), status.Int());
+ SetTestStepResult(EFail);
+ }
+
+ CleanupStack::PopAndDestroy(&iPositioner);
+
+ break;
+ }
+
+
+
+ default:
+ User::Panic(KLbsClientStepUpdateOptions, KErrUnknown);
+
+ }
+
+ }
+
+
+ // All done, clean up.
+ CleanupStack::PopAndDestroy(&iServer);
+ }
+
+ INFO_PRINTF1(_L("<<CT_LbsClientStep_UpdateOptions::doTestStepL()"));
+
+ return TestStepResult();
+ }
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/lbsclient/testdata/smoketest_lbs.ini Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,45 @@
+[LBS-Mod-Cnt-0001]
+tc_id=1
+num_of_mods=2
+
+[LBS-Mod-Cnt-0002]
+tc_id=2
+
+[LBS-Mod-Cnt-0003]
+tc_id=3
+num_of_mods=3
+
+[LBS-Mod-Cnt-0004]
+tc_id=4
+num_of_mods=3
+
+[LBS-Mod-Info-0001]
+tc_id=11
+module_id=271064388
+
+
+[LBS-Mod-Info-0002]
+tc_id=12
+
+[LBS-Mod-Info-0003]
+tc_id=13
+
+[LBS-Mod-Info-0004]
+tc_id=14
+
+[LBS-Mod-Info-0005]
+tc_id=15
+module_id=271064388
+
+[LBS-Mod-Info-0006]
+tc_id=16
+
+[LBS-Mod-Info-0007]
+tc_id=17
+
+[LBS-Mod-Info-0008]
+tc_id=18
+default_mod_id=271064388
+
+[LBS-Mod-Info-0009]
+tc_id=19
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/lbstestchannel/BWINS/LbsTestChannelU.DEF Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,26 @@
+EXPORTS
+ ??0RT_LbsChannel@@QAE@XZ @ 1 NONAME ; RT_LbsChannel::RT_LbsChannel(void)
+ ??0TT_LbsAGpsRequestError@@QAE@H@Z @ 2 NONAME ; TT_LbsAGpsRequestError::TT_LbsAGpsRequestError(int)
+ ??0TT_LbsAGpsRequestOptions@@QAE@W4TLbsHybridModuleOptions@@@Z @ 3 NONAME ; TT_LbsAGpsRequestOptions::TT_LbsAGpsRequestOptions(enum TLbsHybridModuleOptions)
+ ??0TT_LbsAGpsRequestOptions@@QAE@W4TLbsHybridModuleOptions@@H@Z @ 4 NONAME ; TT_LbsAGpsRequestOptions::TT_LbsAGpsRequestOptions(enum TLbsHybridModuleOptions, int)
+ ??0TT_LbsAGpsRequestTimeOut@@QAE@ABVTTimeIntervalMicroSeconds@@@Z @ 5 NONAME ; TT_LbsAGpsRequestTimeOut::TT_LbsAGpsRequestTimeOut(class TTimeIntervalMicroSeconds const &)
+ ??0TT_LbsAGpsRequestUpdateInitMsg@@QAE@ABVTDesC16@@0@Z @ 6 NONAME ; TT_LbsAGpsRequestUpdateInitMsg::TT_LbsAGpsRequestUpdateInitMsg(class TDesC16 const &, class TDesC16 const &)
+ ??0TT_LbsAGpsResponseMsg@@QAE@ABW4TModuleResponseType@0@@Z @ 7 NONAME ; TT_LbsAGpsResponseMsg::TT_LbsAGpsResponseMsg(enum TT_LbsAGpsResponseMsg::TModuleResponseType const &)
+ ??0TT_LbsMsgBase@@IAE@W4TLbsMsgType@0@@Z @ 8 NONAME ; TT_LbsMsgBase::TT_LbsMsgBase(enum TT_LbsMsgBase::TLbsMsgType)
+ ??0TT_LbsMsgBase@@QAE@XZ @ 9 NONAME ; TT_LbsMsgBase::TT_LbsMsgBase(void)
+ ?CancelSendMessageNotification@RT_LbsChannel@@QAEXXZ @ 10 NONAME ; void RT_LbsChannel::CancelSendMessageNotification(void)
+ ?Close@RT_LbsChannel@@QAEXXZ @ 11 NONAME ; void RT_LbsChannel::Close(void)
+ ?ConfigFileName@TT_LbsAGpsRequestUpdateInitMsg@@QBEABVTDesC16@@XZ @ 12 NONAME ; class TDesC16 const & TT_LbsAGpsRequestUpdateInitMsg::ConfigFileName(void) const
+ ?ConfigSection@TT_LbsAGpsRequestUpdateInitMsg@@QBEABVTDesC16@@XZ @ 13 NONAME ; class TDesC16 const & TT_LbsAGpsRequestUpdateInitMsg::ConfigSection(void) const
+ ?Error@TT_LbsAGpsRequestError@@QBEHXZ @ 14 NONAME ; int TT_LbsAGpsRequestError::Error(void) const
+ ?InitializeL@RT_LbsChannel@@SAXW4TT_LbsChannelId@1@@Z @ 15 NONAME ; void RT_LbsChannel::InitializeL(enum RT_LbsChannel::TT_LbsChannelId)
+ ?ModuleOption@TT_LbsAGpsRequestOptions@@QBE?AW4TLbsHybridModuleOptions@@XZ @ 16 NONAME ; enum TLbsHybridModuleOptions TT_LbsAGpsRequestOptions::ModuleOption(void) const
+ ?ModuleValue@TT_LbsAGpsRequestOptions@@QBEHXZ @ 17 NONAME ; int TT_LbsAGpsRequestOptions::ModuleValue(void) const
+ ?OpenL@RT_LbsChannel@@QAEXW4TT_LbsChannelId@1@AAVMT_LbsChannelObserver@@@Z @ 18 NONAME ; void RT_LbsChannel::OpenL(enum RT_LbsChannel::TT_LbsChannelId, class MT_LbsChannelObserver &)
+ ?ResponseType@TT_LbsAGpsResponseMsg@@QBE?AW4TModuleResponseType@1@XZ @ 19 NONAME ; enum TT_LbsAGpsResponseMsg::TModuleResponseType TT_LbsAGpsResponseMsg::ResponseType(void) const
+ ?SendMessage@RT_LbsChannel@@QAEXABVTT_LbsMsgBase@@AAVTRequestStatus@@@Z @ 20 NONAME ; void RT_LbsChannel::SendMessage(class TT_LbsMsgBase const &, class TRequestStatus &)
+ ?ShutDownL@RT_LbsChannel@@SAXW4TT_LbsChannelId@1@@Z @ 21 NONAME ; void RT_LbsChannel::ShutDownL(enum RT_LbsChannel::TT_LbsChannelId)
+ ?TimeOut@TT_LbsAGpsRequestTimeOut@@QBEABVTTimeIntervalMicroSeconds@@XZ @ 22 NONAME ; class TTimeIntervalMicroSeconds const & TT_LbsAGpsRequestTimeOut::TimeOut(void) const
+ ?Type@TT_LbsMsgBase@@QBE?AW4TLbsMsgType@1@XZ @ 23 NONAME ; enum TT_LbsMsgBase::TLbsMsgType TT_LbsMsgBase::Type(void) const
+ ??0TT_LbsAGpsRequestForcedUpdate@@QAE@XZ @ 24 NONAME ; TT_LbsAGpsRequestForcedUpdate::TT_LbsAGpsRequestForcedUpdate(void)
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/lbstestchannel/EABI/LbsTestChannelu.def Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,36 @@
+EXPORTS
+ _ZN13RT_LbsChannel11InitializeLENS_15TT_LbsChannelIdE @ 1 NONAME
+ _ZN13RT_LbsChannel11SendMessageERK13TT_LbsMsgBaseR14TRequestStatus @ 2 NONAME
+ _ZN13RT_LbsChannel29CancelSendMessageNotificationEv @ 3 NONAME
+ _ZN13RT_LbsChannel5CloseEv @ 4 NONAME
+ _ZN13RT_LbsChannel5OpenLENS_15TT_LbsChannelIdER21MT_LbsChannelObserver @ 5 NONAME
+ _ZN13RT_LbsChannel9ShutDownLENS_15TT_LbsChannelIdE @ 6 NONAME
+ _ZN13RT_LbsChannelC1Ev @ 7 NONAME
+ _ZN13RT_LbsChannelC2Ev @ 8 NONAME
+ _ZN13TT_LbsMsgBaseC1ENS_11TLbsMsgTypeE @ 9 NONAME
+ _ZN13TT_LbsMsgBaseC1Ev @ 10 NONAME
+ _ZN13TT_LbsMsgBaseC2ENS_11TLbsMsgTypeE @ 11 NONAME
+ _ZN13TT_LbsMsgBaseC2Ev @ 12 NONAME
+ _ZN21TT_LbsAGpsResponseMsgC1ERKNS_19TModuleResponseTypeE @ 13 NONAME
+ _ZN21TT_LbsAGpsResponseMsgC2ERKNS_19TModuleResponseTypeE @ 14 NONAME
+ _ZN22TT_LbsAGpsRequestErrorC1Ei @ 15 NONAME
+ _ZN22TT_LbsAGpsRequestErrorC2Ei @ 16 NONAME
+ _ZN24TT_LbsAGpsRequestOptionsC1E23TLbsHybridModuleOptions @ 17 NONAME
+ _ZN24TT_LbsAGpsRequestOptionsC1E23TLbsHybridModuleOptionsi @ 18 NONAME
+ _ZN24TT_LbsAGpsRequestOptionsC2E23TLbsHybridModuleOptions @ 19 NONAME
+ _ZN24TT_LbsAGpsRequestOptionsC2E23TLbsHybridModuleOptionsi @ 20 NONAME
+ _ZN24TT_LbsAGpsRequestTimeOutC1ERK25TTimeIntervalMicroSeconds @ 21 NONAME
+ _ZN24TT_LbsAGpsRequestTimeOutC2ERK25TTimeIntervalMicroSeconds @ 22 NONAME
+ _ZN30TT_LbsAGpsRequestUpdateInitMsgC1ERK7TDesC16S2_ @ 23 NONAME
+ _ZN30TT_LbsAGpsRequestUpdateInitMsgC2ERK7TDesC16S2_ @ 24 NONAME
+ _ZNK13TT_LbsMsgBase4TypeEv @ 25 NONAME
+ _ZNK21TT_LbsAGpsResponseMsg12ResponseTypeEv @ 26 NONAME
+ _ZNK22TT_LbsAGpsRequestError5ErrorEv @ 27 NONAME
+ _ZNK24TT_LbsAGpsRequestOptions11ModuleValueEv @ 28 NONAME
+ _ZNK24TT_LbsAGpsRequestOptions12ModuleOptionEv @ 29 NONAME
+ _ZNK24TT_LbsAGpsRequestTimeOut7TimeOutEv @ 30 NONAME
+ _ZNK30TT_LbsAGpsRequestUpdateInitMsg13ConfigSectionEv @ 31 NONAME
+ _ZNK30TT_LbsAGpsRequestUpdateInitMsg14ConfigFileNameEv @ 32 NONAME
+ _ZN29TT_LbsAGpsRequestForcedUpdateC1Ev @ 33 NONAME
+ _ZN29TT_LbsAGpsRequestForcedUpdateC2Ev @ 34 NONAME
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/lbstestchannel/group/bld.inf Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,21 @@
+// Copyright (c) 2007-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:
+//
+
+PRJ_TESTMMPFILES
+lbstestchannel.mmp
+
+PRJ_TESTEXPORTS
+../inc/tlbschannel.h /epoc32/include/lbs/test/tlbschannel.h
+../inc/tlbschannelutils.h /epoc32/include/lbs/test/tlbschannelutils.h
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/lbstestchannel/group/lbstestchannel.mmp Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,39 @@
+// Copyright (c) 2007-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 lbstestchannel.mmp
+//
+//
+
+TARGET lbstestchannel.dll
+TARGETTYPE DLL
+
+//CAPABILITY ProtServ LocalServices WriteDeviceData ReadDeviceData Location
+CAPABILITY ALL -TCB
+
+UID 0x1000007A 0x10282291
+
+
+SYSTEMINCLUDE /epoc32/include
+SYSTEMINCLUDE /epoc32/include/lbs
+SYSTEMINCLUDE /epoc32/include/lbs/test
+
+USERINCLUDE ../inc
+
+SOURCEPATH ../src
+
+SOURCE tlbschannel.cpp
+SOURCE tlbschannelutils.cpp
+
+// EPOC libraries.
+LIBRARY euser.lib
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/lbstestchannel/inc/tlbschannel.h Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,112 @@
+// Copyright (c) 2007-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 TLbschannel.h
+// This is the header file which contains the channel utilities for communication between
+// the test harness and the test AGps module.
+//
+//
+
+
+
+/**
+ @file
+ @internalTechnology
+ @test
+*/
+
+#ifndef TLbsCHANNEL_H
+#define TLbsCHANNEL_H
+
+// User includes
+#include "tlbschannelutils.h"
+
+// Epoc includes
+#include <e32property.h>
+
+
+class MT_LbsChannelObserver;
+class CT_ChannelMonitor;
+
+
+/** Logical channel used for communication between Test Harness and
+the test A-GPS module.
+
+Messages are:
+- sent by calling SendMessage.
+- received via the Mixin callback MT_LbsChannelObserver::ProcessChannelMessage.
+*/
+NONSHARABLE_CLASS(RT_LbsChannel)
+ {
+public:
+ enum TT_LbsChannelId
+ {
+ EChannelUnknown = -1,
+ EChannelTH2TAGPS = 0,
+ EChannelTAGPS2TH = 1
+ };
+
+ IMPORT_C static void InitializeL(TT_LbsChannelId aChannelId);
+ IMPORT_C static void ShutDownL(TT_LbsChannelId aChannelId);
+
+ IMPORT_C RT_LbsChannel();
+ IMPORT_C void OpenL(TT_LbsChannelId aChannelId, MT_LbsChannelObserver& aObserver);
+ IMPORT_C void Close();
+
+ IMPORT_C void SendMessage(const TT_LbsMsgBase& aMessage, TRequestStatus& aStatus);
+ IMPORT_C void CancelSendMessageNotification();
+
+private:
+ RProperty iSendProperty;
+ RProperty iSendMsgReadProperty;
+ CT_ChannelMonitor* iMonitor;
+ };
+
+/** Observer for incoming messages from a channel
+*/
+class MT_LbsChannelObserver
+ {
+public:
+ /** Called when a message arrives from a channel.
+ @param aChannelId The channel being monitored.
+ @param aMessage The message received. */
+ virtual void ProcessChannelMessage(RT_LbsChannel::TT_LbsChannelId aChannelId, const TT_LbsMsgBase& aMessage) = 0;
+ };
+
+/**
+Monitors for incoming messages from a channel.
+*/
+NONSHARABLE_CLASS(CT_ChannelMonitor) : public CActive
+ {
+public:
+ static CT_ChannelMonitor* NewL(MT_LbsChannelObserver& aObserver, RT_LbsChannel::TT_LbsChannelId aChannelId, TUid aPropId, TUint aPropKey, TUint aAckPropKey);
+ ~CT_ChannelMonitor();
+
+ void RunL();
+ void DoCancel();
+ TInt RunError(TInt aError);
+
+private:
+ void NotifyChannelMessage();
+ CT_ChannelMonitor(MT_LbsChannelObserver& aObserver, RT_LbsChannel::TT_LbsChannelId aChannelId);
+ void ConstructL(TUid aPropId, TUint aPropKey, TUint aAckPropKey);
+
+private:
+ MT_LbsChannelObserver& iObserver;
+ RT_LbsChannel::TT_LbsChannelId iChannelId;
+
+ RProperty iReceiveProperty;
+ RProperty iReceiveMsgReadProperty;
+ };
+
+#endif // TLbsCHANNEL_H
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/lbstestchannel/inc/tlbschannelutils.h Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,237 @@
+// Copyright (c) 2007-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 tlbschannelutils.h
+// This is the header file which contains the msg data types and other utilities
+//
+//
+
+
+
+/**
+ @file
+ @internalTechnology
+ @test
+*/
+
+#ifndef TLBSCHANNELUTILS_H
+#define TLBSCHANNELUTILS_H
+
+#include <lbs/test/tlbsutils.h>
+
+
+/* Key value used to publish messages from Test Harness to Test AGPS Module
+ and the corresponding acknowledgement */
+const TUint KTH2TAGPSMessageKey = 0x0F001010;
+const TUint KTH2TAGPSMessageReadAckKey = 0x0F001020;
+/* Key value used to publish messages from Test AGPS Module to Test Harness
+ and the corresponding acknowledgement */
+const TUint KTAGPS2THMessageKey = 0x0F001030;
+const TUint KTAGPS2THMessageReadAckKey = 0x0F001040;
+
+
+
+/** Base class for messages sent between the Test Harness and Test A-Gps Module.
+
+This class defines the types of messages and reserves a buffer to store
+information, but it can't be used itself. Instead derived classes will
+implement each of the types of messages and supply accessor functions.
+
+*/
+class TT_LbsMsgBase
+ {
+public:
+ /** List of all possible message types.
+
+ Each type of message listed here must be implemented as a
+ separate class that inherits from TLbsNetInternalMsgBase.
+ */
+ enum TLbsMsgType
+ {
+ EUnknown = 0,
+ EModuleRequestUpdateInit, // TH --> AGPS-Module
+ EModuleRequestTimeOut, // TH --> AGPS-Module
+ EModuleRequestOptions, // TH --> AGPS-Module
+ EModuleRequestError, // TH --> AGPS-Module
+ EModuleRequestForcedUpdate, // TH --> AGPS-Module
+ EModuleResponse // AGPS-Module --> TH
+ };
+
+public:
+ IMPORT_C TT_LbsMsgBase();
+
+ IMPORT_C TLbsMsgType Type() const;
+
+protected:
+ // Derived classes set their type by using these constructors.
+ IMPORT_C TT_LbsMsgBase(TLbsMsgType aType);
+
+private:
+ TLbsMsgType iType;
+
+protected:
+ // A TUint64 is used to ensure that any objects that use the buffer
+ // are at least 8byte aligned. (The compiler will organise the arrangement
+ // of iBuffer within TLbsNetInternalMsgBase to be aligned to the minimum
+ // for a TUint64, which is 8bytes.)
+ TUint64 iBuffer[((1576 - (sizeof(TLbsMsgType))) >> 3)];
+ };
+
+/**
+Test A-Gps Module Request UpdateInit Message
+*/
+NONSHARABLE_CLASS(TT_LbsAGpsRequestUpdateInitMsg) : public TT_LbsMsgBase
+ {
+public:
+ IMPORT_C TT_LbsAGpsRequestUpdateInitMsg(const TDesC& aConfigFileName, const TDesC& aConfigSection);
+
+ IMPORT_C const TDesC& ConfigFileName() const;
+ IMPORT_C const TDesC& ConfigSection() const;
+
+private:
+ TT_LbsAGpsRequestUpdateInitMsg();
+
+private:
+ struct ST_LbsAGpsRequestUpdateInit
+ {
+ TBuf<KMaxModuleDataBusIniFileName> iConfigFileName; /** Config request data. */
+ TBuf<40> iConfigSection; /** Config request data. */
+ };
+
+ inline ST_LbsAGpsRequestUpdateInit& Data();
+ inline const ST_LbsAGpsRequestUpdateInit& Data() const;
+ };
+
+/**
+Test A-Gps Module Request TimeOut Message
+*/
+NONSHARABLE_CLASS(TT_LbsAGpsRequestTimeOut) : public TT_LbsMsgBase
+ {
+public:
+ IMPORT_C TT_LbsAGpsRequestTimeOut(const TTimeIntervalMicroSeconds& aTimeOut);
+ IMPORT_C const TTimeIntervalMicroSeconds& TimeOut() const;
+
+private:
+ TT_LbsAGpsRequestTimeOut();
+
+private:
+ struct ST_LbsAGpsRequestTimeOut
+ {
+ TTimeIntervalMicroSeconds iTimeOut; /** Module time out. */
+ };
+ inline ST_LbsAGpsRequestTimeOut& Data();
+ inline const ST_LbsAGpsRequestTimeOut& Data() const;
+ };
+
+/**
+Test A-Gps Module Request Options Message
+*/
+NONSHARABLE_CLASS(TT_LbsAGpsRequestOptions) : public TT_LbsMsgBase
+ {
+public:
+ IMPORT_C TT_LbsAGpsRequestOptions(TLbsHybridModuleOptions aModuleOption);
+ IMPORT_C TT_LbsAGpsRequestOptions(TLbsHybridModuleOptions aModuleOption, TBool aOptionValue);
+
+ IMPORT_C TLbsHybridModuleOptions ModuleOption() const;
+ IMPORT_C TBool ModuleValue() const;
+
+private:
+ TT_LbsAGpsRequestOptions();
+
+private:
+ struct ST_LbsAGpsRequestOptions
+ {
+ TLbsHybridModuleOptions iModuleOption; // Module option
+ TBool iModuleValue; // Value for the module option
+ };
+
+ inline ST_LbsAGpsRequestOptions& Data();
+ inline const ST_LbsAGpsRequestOptions& Data() const;
+ };
+
+/**
+Test A-Gps Module Request Error Message
+*/
+NONSHARABLE_CLASS(TT_LbsAGpsRequestError) : public TT_LbsMsgBase
+ {
+public:
+ IMPORT_C TT_LbsAGpsRequestError(TInt aOptions);
+ IMPORT_C TInt Error() const;
+
+private:
+ TT_LbsAGpsRequestError();
+
+private:
+ struct ST_LbsAGpsRequestError
+ {
+ TInt iError; /** Module Error Code */
+ };
+
+ inline ST_LbsAGpsRequestError& Data();
+ inline const ST_LbsAGpsRequestError& Data() const;
+ };
+
+/**
+Test A-Gps Module Request Forced Update Message
+
+This message forces the test A-Gps module to send
+the next position update from the update array
+now, even if there is no outstanding request from LBS.
+*/
+NONSHARABLE_CLASS(TT_LbsAGpsRequestForcedUpdate) : public TT_LbsMsgBase
+ {
+public:
+ IMPORT_C TT_LbsAGpsRequestForcedUpdate();
+
+private:
+ struct ST_LbsAGpsRequestForcedUpdate
+ {
+ TInt iDummy; /** Dummy value; unused */
+ };
+
+ inline ST_LbsAGpsRequestForcedUpdate& Data();
+ inline const ST_LbsAGpsRequestForcedUpdate& Data() const;
+ };
+
+/**
+Test A-Gps Module Response Message
+*/
+NONSHARABLE_CLASS(TT_LbsAGpsResponseMsg) : public TT_LbsMsgBase
+ {
+public:
+
+ enum TModuleResponseType
+ {
+ EModuleResponseOk,
+ EModuleErr
+ };
+
+ IMPORT_C TT_LbsAGpsResponseMsg(const TModuleResponseType& aResponse);
+
+ IMPORT_C TModuleResponseType ResponseType() const;
+
+private:
+ TT_LbsAGpsResponseMsg();
+
+private:
+
+ struct ST_LbsAGpsResponse
+ {
+ TModuleResponseType iResponseType;
+ };
+
+ inline ST_LbsAGpsResponse& Data();
+ inline const ST_LbsAGpsResponse& Data() const;
+ };
+
+#endif // TLBSCHANNELUTILS_H
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/lbstestchannel/src/tlbschannel.cpp Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,247 @@
+// Copyright (c) 2007-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 T_Lbschannel.cpp
+// This is the Cpp file which contains the channel for communication between
+// the test harness and the test AGps module.
+//
+//
+
+// User includes
+#include "tlbschannel.h"
+
+const TInt KLbsChannelIdMax = RT_LbsChannel::EChannelTAGPS2TH;
+//const TInt KCategoryKeyIndex = 0;
+const TInt KReadPropKeyIndex = 1;
+const TInt KReadPropAckKeyIndex = 2;
+const TInt KWritePropKeyIndex = 3;
+const TInt KWritePropAckKeyIndex = 4;
+
+/** The array contains description (property size, keys and Ids) of all the channels supported by
+ the RT_LbsChannel interface */
+const TUint KPropTable[KLbsChannelIdMax+1][5]=
+ {
+ {0, KTH2TAGPSMessageKey, KTH2TAGPSMessageReadAckKey, KTAGPS2THMessageKey, KTAGPS2THMessageReadAckKey},
+ {0, KTAGPS2THMessageKey, KTAGPS2THMessageReadAckKey, KTH2TAGPSMessageKey, KTH2TAGPSMessageReadAckKey},
+ };
+
+///////////////////////////////////////////////////////////////////////////////
+// RT_LbsChannel
+///////////////////////////////////////////////////////////////////////////////
+
+EXPORT_C void RT_LbsChannel::InitializeL(TT_LbsChannelId aChannelId)
+ {
+ const TSecurityPolicy KReadPolicy(ECapability_None);
+ const TSecurityPolicy KWritePolicy(ECapabilityWriteDeviceData);
+
+ TInt err = RProperty::Define(KUidSystemCategory,
+ KPropTable[aChannelId][KWritePropKeyIndex],
+ RProperty::ELargeByteArray,
+ KReadPolicy, KWritePolicy,
+ sizeof(TT_LbsMsgBase));
+ if (err != KErrNone && err != KErrAlreadyExists)
+ {
+ User::Leave(err);
+ }
+
+ err = RProperty::Define(KUidSystemCategory,
+ KPropTable[aChannelId][KWritePropAckKeyIndex],
+ RProperty::EInt,
+ KReadPolicy, KWritePolicy);
+ if (err != KErrNone && err != KErrAlreadyExists)
+ {
+ User::Leave(err);
+ }
+
+ User::LeaveIfError(RProperty::Set(KUidSystemCategory, KPropTable[aChannelId][KWritePropAckKeyIndex], 0));
+ }
+
+
+EXPORT_C void RT_LbsChannel::ShutDownL(TT_LbsChannelId aChannelId)
+ {
+ User::LeaveIfError(RProperty::Delete(KPropTable[aChannelId][KWritePropKeyIndex]));
+ User::LeaveIfError(RProperty::Delete(KPropTable[aChannelId][KWritePropAckKeyIndex]));
+ }
+
+
+EXPORT_C RT_LbsChannel::RT_LbsChannel()
+ {
+ }
+
+
+/**
+
+The channel must first be initialised before this is called, otherwise the
+resources needed by the channel will not have been allocated.
+
+@param aObserver Reference to the observer class used to notify of new messages.
+@param aChannelId Uid of the RProperty category used for this channel.
+
+@leave
+*/
+EXPORT_C void RT_LbsChannel::OpenL(TT_LbsChannelId aChannelId, MT_LbsChannelObserver& aObserver)
+ {
+ __ASSERT_DEBUG(iSendProperty.Handle()==NULL, User::Invariant());
+ __ASSERT_DEBUG(iSendMsgReadProperty.Handle()==NULL, User::Invariant());
+
+ User::LeaveIfError(iSendProperty.Attach(KUidSystemCategory, KPropTable[aChannelId][KWritePropKeyIndex]));
+ User::LeaveIfError(iSendMsgReadProperty.Attach(KUidSystemCategory, KPropTable[aChannelId][KWritePropAckKeyIndex]));
+
+ iMonitor = CT_ChannelMonitor::NewL(aObserver, aChannelId, KUidSystemCategory,
+ KPropTable[aChannelId][KReadPropKeyIndex],
+ KPropTable[aChannelId][KReadPropAckKeyIndex]);
+ }
+
+/** Close the connection.
+
+This function closes the connection and frees any resources
+created in RTbsChannel::OpenL().
+*/
+EXPORT_C void RT_LbsChannel::Close()
+ {
+ CancelSendMessageNotification();
+
+ delete iMonitor;
+ iSendProperty.Close();
+ iSendMsgReadProperty.Close();
+ }
+
+/** Send a message through the channel.
+
+This is an asynchronous function that only completes when the message
+has been read.
+
+If another call is made to this function before a previous one has
+completed then aStatus will be completed straight away, with the
+completion code KErrInUse.
+
+@param aMessage The message to be sent.
+@param aStatus Request status that is completed when the message has
+ been read. If there is an error sending the message
+ it will be stored in aStatus.Int().
+*/
+EXPORT_C void RT_LbsChannel::SendMessage(const TT_LbsMsgBase& aMessage,
+ TRequestStatus& aStatus)
+ {
+ // Must check that the previous message was read
+ TInt sendAck;
+ iSendMsgReadProperty.Get(sendAck);
+ if (sendAck == 1)
+ {
+ // Pending message has not been read yet; flag an error
+ TRequestStatus* statPtr = &aStatus;
+ User::RequestComplete(statPtr, KErrInUse);
+ }
+ else
+ {
+ // Publish the new message
+ iSendMsgReadProperty.Set(1);
+ iSendMsgReadProperty.Subscribe(aStatus);
+ TPckgC<TT_LbsMsgBase> pckg(aMessage);
+ iSendProperty.Set(pckg);
+ }
+ }
+
+/** Cancel the current request status for SendMessage().
+*/
+EXPORT_C void RT_LbsChannel::CancelSendMessageNotification()
+ {
+ iSendMsgReadProperty.Cancel();
+ }
+
+
+///////////////////////////////////////////////////////////////////////////////
+// CT_ChannelMonitor - used to listen for incoming messages
+///////////////////////////////////////////////////////////////////////////////
+CT_ChannelMonitor* CT_ChannelMonitor::NewL(MT_LbsChannelObserver& aObserver, RT_LbsChannel::TT_LbsChannelId aChannelId, TUid aPropId, TUint aPropKey, TUint aAckPropKey)
+ {
+ CT_ChannelMonitor* self = new (ELeave) CT_ChannelMonitor(aObserver, aChannelId);
+ CleanupStack::PushL(self);
+ self->ConstructL(aPropId, aPropKey, aAckPropKey);
+ CleanupStack::Pop();
+ return self;
+ }
+
+CT_ChannelMonitor::CT_ChannelMonitor(MT_LbsChannelObserver& aObserver, RT_LbsChannel::TT_LbsChannelId aChannelId) :
+ CActive(EPriorityStandard),
+ iObserver(aObserver),
+ iChannelId(aChannelId)
+ {
+ CActiveScheduler::Add(this);
+ }
+
+CT_ChannelMonitor::~CT_ChannelMonitor()
+ {
+ Cancel();
+ iReceiveProperty.Close();
+ iReceiveMsgReadProperty.Close();
+ }
+
+void CT_ChannelMonitor::ConstructL(TUid aPropId, TUint aPropKey, TUint aAckPropKey)
+ {
+ __ASSERT_DEBUG(iReceiveProperty.Handle()==NULL, User::Invariant()); //Handle open.
+ __ASSERT_DEBUG(iReceiveMsgReadProperty.Handle()==NULL, User::Invariant()); //Handle open.
+
+ User::LeaveIfError(iReceiveProperty.Attach(aPropId, aPropKey));
+ User::LeaveIfError(iReceiveMsgReadProperty.Attach(aPropId, aAckPropKey));
+
+ NotifyChannelMessage();
+ // flag we are ready for receiving messages
+ iReceiveMsgReadProperty.Set(0);
+ }
+
+void CT_ChannelMonitor::NotifyChannelMessage()
+ {
+ iReceiveProperty.Subscribe(iStatus);
+ SetActive();
+ }
+
+void CT_ChannelMonitor::RunL()
+ {
+ TInt result = iStatus.Int();
+ switch (result)
+ {
+ case KErrNone:
+ {
+ // Read property
+ TT_LbsMsgBase msg;
+ TPckg<TT_LbsMsgBase> pckg(msg);
+ iReceiveProperty.Get(pckg);
+
+ // resubscribe for further messages
+ NotifyChannelMessage();
+
+ // Notify observer
+ iObserver.ProcessChannelMessage(iChannelId, msg);
+
+ // flag message as read
+ iReceiveMsgReadProperty.Set(0);
+ break;
+ }
+ default:
+ {
+ User::Leave(result);
+ break;
+ }
+ }
+ }
+
+void CT_ChannelMonitor::DoCancel()
+ {
+ iReceiveProperty.Cancel();
+ }
+
+TInt CT_ChannelMonitor::RunError(TInt /*aError*/)
+ {
+ return KErrNone;
+ }
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/lbstestchannel/src/tlbschannelutils.cpp Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,257 @@
+// Copyright (c) 2007-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:
+// This is the source file which contains the msg data types and other utilities
+//
+//
+
+#include "tlbschannelutils.h"
+
+
+///////////////////////////////////////////////////////////////////////////////
+// Base Test Message Class
+///////////////////////////////////////////////////////////////////////////////
+
+
+EXPORT_C TT_LbsMsgBase::TLbsMsgType TT_LbsMsgBase::Type() const
+ {
+ return iType;
+ }
+
+EXPORT_C TT_LbsMsgBase::TT_LbsMsgBase() :
+ iType(EUnknown)
+ {
+ // Check that the internal buffer is 8-byte aligned.
+ __ASSERT_COMPILE((_FOFF(TT_LbsMsgBase, iBuffer) & 0x40) == 0x0);
+ }
+
+EXPORT_C TT_LbsMsgBase::TT_LbsMsgBase(TLbsMsgType aType):
+ iType(aType)
+ {
+ }
+
+///////////////////////////////////////////////////////////////////////////////
+// Test A-Gps Module Request Update Initialization Message
+///////////////////////////////////////////////////////////////////////////////
+EXPORT_C TT_LbsAGpsRequestUpdateInitMsg::TT_LbsAGpsRequestUpdateInitMsg(const TDesC& aConfigFileName, const TDesC& aConfigSection)
+ : TT_LbsMsgBase(EModuleRequestUpdateInit)
+ {
+ // Must make sure that the data to be stored is not bigger than the buffer.
+ __ASSERT_COMPILE(sizeof(ST_LbsAGpsRequestUpdateInit) <= sizeof(iBuffer));
+
+ // In-place construction of the data member
+ new(&Data()) ST_LbsAGpsRequestUpdateInit;
+
+ ST_LbsAGpsRequestUpdateInit& data = Data();
+
+ data.iConfigFileName = aConfigFileName;
+ data.iConfigSection = aConfigSection;
+ }
+
+EXPORT_C const TDesC& TT_LbsAGpsRequestUpdateInitMsg::ConfigFileName() const
+ {
+ return Data().iConfigFileName;
+ }
+
+EXPORT_C const TDesC& TT_LbsAGpsRequestUpdateInitMsg::ConfigSection() const
+ {
+ return Data().iConfigSection;
+ }
+
+inline TT_LbsAGpsRequestUpdateInitMsg::ST_LbsAGpsRequestUpdateInit& TT_LbsAGpsRequestUpdateInitMsg::Data()
+ {
+ return reinterpret_cast<ST_LbsAGpsRequestUpdateInit&>(iBuffer);
+ }
+
+inline const TT_LbsAGpsRequestUpdateInitMsg::ST_LbsAGpsRequestUpdateInit& TT_LbsAGpsRequestUpdateInitMsg::Data() const
+ {
+ return reinterpret_cast<const ST_LbsAGpsRequestUpdateInit&>(iBuffer);
+ }
+
+
+///////////////////////////////////////////////////////////////////////////////
+// Test A-Gps Module Request TimeOut Message
+///////////////////////////////////////////////////////////////////////////////
+
+EXPORT_C TT_LbsAGpsRequestTimeOut::TT_LbsAGpsRequestTimeOut(const TTimeIntervalMicroSeconds& aTimeOut)
+ : TT_LbsMsgBase(EModuleRequestTimeOut)
+ {
+ // Must make sure that the data to be stored is not bigger than the buffer.
+ __ASSERT_COMPILE(sizeof(ST_LbsAGpsRequestTimeOut) <= sizeof(iBuffer));
+
+ // In-place construction of the data member
+ new(&Data()) ST_LbsAGpsRequestTimeOut;
+
+ ST_LbsAGpsRequestTimeOut& data = Data();
+
+ data.iTimeOut = aTimeOut;
+ }
+
+EXPORT_C const TTimeIntervalMicroSeconds& TT_LbsAGpsRequestTimeOut::TimeOut() const
+ {
+ return Data().iTimeOut;
+ }
+
+inline TT_LbsAGpsRequestTimeOut::ST_LbsAGpsRequestTimeOut& TT_LbsAGpsRequestTimeOut::Data()
+ {
+ return reinterpret_cast<ST_LbsAGpsRequestTimeOut&>(iBuffer);
+ }
+
+inline const TT_LbsAGpsRequestTimeOut::ST_LbsAGpsRequestTimeOut& TT_LbsAGpsRequestTimeOut::Data() const
+ {
+ return reinterpret_cast<const ST_LbsAGpsRequestTimeOut&>(iBuffer);
+ }
+
+///////////////////////////////////////////////////////////////////////////////
+// Test A-Gps Module Request Options
+///////////////////////////////////////////////////////////////////////////////
+EXPORT_C TT_LbsAGpsRequestOptions::TT_LbsAGpsRequestOptions(TLbsHybridModuleOptions aModuleOption)
+ : TT_LbsMsgBase(EModuleRequestOptions)
+ {
+ // Must make sure that the data to be stored is not bigger than the buffer.
+ __ASSERT_COMPILE(sizeof(ST_LbsAGpsRequestOptions) <= sizeof(iBuffer));
+
+ // In-place construction of the data member
+ new(&Data()) ST_LbsAGpsRequestOptions;
+
+ ST_LbsAGpsRequestOptions& data = Data();
+
+ data.iModuleOption = aModuleOption;
+ }
+
+EXPORT_C TT_LbsAGpsRequestOptions::TT_LbsAGpsRequestOptions(TLbsHybridModuleOptions aModuleOption,
+ TBool aModuleValue)
+ : TT_LbsMsgBase(EModuleRequestOptions)
+ {
+ // Must make sure that the data to be stored is not bigger than the buffer.
+ __ASSERT_COMPILE(sizeof(ST_LbsAGpsRequestOptions) <= sizeof(iBuffer));
+
+ // In-place construction of the data member
+ new(&Data()) ST_LbsAGpsRequestOptions;
+
+ ST_LbsAGpsRequestOptions& data = Data();
+
+ data.iModuleOption = aModuleOption;
+ data.iModuleValue = aModuleValue;
+ }
+
+EXPORT_C TLbsHybridModuleOptions TT_LbsAGpsRequestOptions::ModuleOption() const
+ {
+ return Data().iModuleOption;
+ }
+
+EXPORT_C TBool TT_LbsAGpsRequestOptions::ModuleValue() const
+ {
+ return Data().iModuleValue;
+ }
+
+inline TT_LbsAGpsRequestOptions::ST_LbsAGpsRequestOptions& TT_LbsAGpsRequestOptions::Data()
+ {
+ return reinterpret_cast<ST_LbsAGpsRequestOptions&>(iBuffer);
+ }
+
+inline const TT_LbsAGpsRequestOptions::ST_LbsAGpsRequestOptions& TT_LbsAGpsRequestOptions::Data() const
+ {
+ return reinterpret_cast<const ST_LbsAGpsRequestOptions&>(iBuffer);
+ }
+
+///////////////////////////////////////////////////////////////////////////////
+// Test A-Gps Module Request Error
+///////////////////////////////////////////////////////////////////////////////
+EXPORT_C TT_LbsAGpsRequestError::TT_LbsAGpsRequestError(TInt aError)
+ : TT_LbsMsgBase(EModuleRequestError)
+ {
+ // Must make sure that the data to be stored is not bigger than the buffer.
+ __ASSERT_COMPILE(sizeof(ST_LbsAGpsRequestError) <= sizeof(iBuffer));
+
+ // In-place construction of the data member
+ new(&Data()) ST_LbsAGpsRequestError;
+
+ ST_LbsAGpsRequestError& data = Data();
+
+ data.iError = aError;
+ }
+
+EXPORT_C TInt TT_LbsAGpsRequestError::Error() const
+ {
+ return Data().iError;
+ }
+
+inline TT_LbsAGpsRequestError::TT_LbsAGpsRequestError::ST_LbsAGpsRequestError& TT_LbsAGpsRequestError::Data()
+ {
+ return reinterpret_cast<ST_LbsAGpsRequestError&>(iBuffer);
+ }
+
+inline const TT_LbsAGpsRequestError::ST_LbsAGpsRequestError& TT_LbsAGpsRequestError::Data() const
+ {
+ return reinterpret_cast<const ST_LbsAGpsRequestError&>(iBuffer);
+ }
+
+///////////////////////////////////////////////////////////////////////////////
+// Test A-Gps Module Request Forced Update
+///////////////////////////////////////////////////////////////////////////////
+
+EXPORT_C TT_LbsAGpsRequestForcedUpdate::TT_LbsAGpsRequestForcedUpdate()
+ : TT_LbsMsgBase(EModuleRequestForcedUpdate)
+ {
+ // Must make sure that the data to be stored is not bigger than the buffer.
+ __ASSERT_COMPILE(sizeof(ST_LbsAGpsRequestForcedUpdate) <= sizeof(iBuffer));
+
+ // In-place construction of the data member
+ new(&Data()) ST_LbsAGpsRequestForcedUpdate;
+
+ ST_LbsAGpsRequestForcedUpdate& data = Data();
+ }
+
+inline TT_LbsAGpsRequestForcedUpdate::ST_LbsAGpsRequestForcedUpdate& TT_LbsAGpsRequestForcedUpdate::Data()
+ {
+ return reinterpret_cast<ST_LbsAGpsRequestForcedUpdate&>(iBuffer);
+ }
+
+inline const TT_LbsAGpsRequestForcedUpdate::ST_LbsAGpsRequestForcedUpdate& TT_LbsAGpsRequestForcedUpdate::Data() const
+ {
+ return reinterpret_cast<const ST_LbsAGpsRequestForcedUpdate&>(iBuffer);
+ }
+
+///////////////////////////////////////////////////////////////////////////////
+// Test A-Gps Module Response Message
+///////////////////////////////////////////////////////////////////////////////
+
+EXPORT_C TT_LbsAGpsResponseMsg::TT_LbsAGpsResponseMsg(const TModuleResponseType& aResponse)
+ : TT_LbsMsgBase(EModuleResponse)
+ {
+ // Must make sure that the data to be stored is not bigger than the buffer.
+ __ASSERT_COMPILE(sizeof(ST_LbsAGpsResponse) <= sizeof(iBuffer));
+
+ // In-place construction of the data member
+ new(&Data()) ST_LbsAGpsResponse;
+
+ ST_LbsAGpsResponse& data = Data();
+
+ data.iResponseType = aResponse;
+ }
+
+EXPORT_C TT_LbsAGpsResponseMsg::TModuleResponseType TT_LbsAGpsResponseMsg::ResponseType() const
+ {
+ return Data().iResponseType;
+ }
+
+inline TT_LbsAGpsResponseMsg::ST_LbsAGpsResponse& TT_LbsAGpsResponseMsg::Data()
+ {
+ return reinterpret_cast<ST_LbsAGpsResponse&>(iBuffer);
+ }
+
+inline const TT_LbsAGpsResponseMsg::ST_LbsAGpsResponse& TT_LbsAGpsResponseMsg::Data() const
+ {
+ return reinterpret_cast<const ST_LbsAGpsResponse&>(iBuffer);
+ }
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/lbstestutils/BWINS/LbsTestUtilsU.DEF Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,63 @@
+EXPORTS
+ ??0T_LbsUtils@@QAE@XZ @ 1 NONAME ; T_LbsUtils::T_LbsUtils(void)
+ ??1CT_LbsTimerUtils@@UAE@XZ @ 2 NONAME ; CT_LbsTimerUtils::~CT_LbsTimerUtils(void)
+ ??1T_LbsUtils@@QAE@XZ @ 3 NONAME ; T_LbsUtils::~T_LbsUtils(void)
+ ?CancelTimer@CT_LbsTimerUtils@@QAEXXZ @ 4 NONAME ; void CT_LbsTimerUtils::CancelTimer(void)
+ ?Compare_ModuleInfo@T_LbsUtils@@QAEHAAVTPositionModuleInfo@@0@Z @ 5 NONAME ; int T_LbsUtils::Compare_ModuleInfo(class TPositionModuleInfo &, class TPositionModuleInfo &)
+ ?Compare_ModuleStatus@T_LbsUtils@@QAEHAAVTPositionModuleStatus@@0@Z @ 6 NONAME ; int T_LbsUtils::Compare_ModuleStatus(class TPositionModuleStatus &, class TPositionModuleStatus &)
+ ?Compare_ModuleUpdateOptions@@YAHAAVTPositionUpdateOptions@@0@Z @ 7 NONAME ; int Compare_ModuleUpdateOptions(class TPositionUpdateOptions &, class TPositionUpdateOptions &)
+ ?Compare_PosInfo@T_LbsUtils@@QAEHABVTPositionInfoBase@@0@Z @ 8 NONAME ; int T_LbsUtils::Compare_PosInfo(class TPositionInfoBase const &, class TPositionInfoBase const &)
+ ?Compare_PosInfo@T_LbsUtils@@QAEHABVTPositionInfoBase@@0W4TComparisonAccuracyType@1@@Z @ 9 NONAME ; int T_LbsUtils::Compare_PosInfo(class TPositionInfoBase const &, class TPositionInfoBase const &, enum T_LbsUtils::TComparisonAccuracyType)
+ ?Compare_PosInfoArr@T_LbsUtils@@QAEHAAV?$RPointerArray@X@@0@Z @ 10 NONAME ; int T_LbsUtils::Compare_PosInfoArr(class RPointerArray<void> &, class RPointerArray<void> &)
+ ?Compare_PosInfoArr@T_LbsUtils@@QAEHAAV?$RPointerArray@X@@0W4TComparisonAccuracyType@1@@Z @ 11 NONAME ; int T_LbsUtils::Compare_PosInfoArr(class RPointerArray<void> &, class RPointerArray<void> &, enum T_LbsUtils::TComparisonAccuracyType)
+ ?Compare_PositionQuality@T_LbsUtils@@QAEHAAVTPositionQuality@@0@Z @ 12 NONAME ; int T_LbsUtils::Compare_PositionQuality(class TPositionQuality &, class TPositionQuality &)
+ ?CreateTestPropertiesL@T_LbsUtils@@QAEXXZ @ 13 NONAME ; void T_LbsUtils::CreateTestPropertiesL(void)
+ ?Create_ModuleInfoL@T_LbsUtils@@QAEXVTUid@@AAVTPositionModuleInfo@@@Z @ 14 NONAME ; void T_LbsUtils::Create_ModuleInfoL(class TUid, class TPositionModuleInfo &)
+ ?GetAGpsModuleIdL@T_LbsUtils@@QAE?AVTUid@@AAVRPositionServer@@@Z @ 15 NONAME ; class TUid T_LbsUtils::GetAGpsModuleIdL(class RPositionServer &)
+ ?GetBadModuleId@T_LbsUtils@@QAE?AVTUid@@XZ @ 16 NONAME ; class TUid T_LbsUtils::GetBadModuleId(void)
+ ?GetConfigured_ModuleStatusL@T_LbsUtils@@QAEXABVTDesC16@@0AAVTPositionModuleStatus@@@Z @ 17 NONAME ; void T_LbsUtils::GetConfigured_ModuleStatusL(class TDesC16 const &, class TDesC16 const &, class TPositionModuleStatus &)
+ ?GetConfigured_ModuleUpdateOptionsL@T_LbsUtils@@QAEXABVTDesC16@@0AAVTPositionUpdateOptions@@@Z @ 18 NONAME ; void T_LbsUtils::GetConfigured_ModuleUpdateOptionsL(class TDesC16 const &, class TDesC16 const &, class TPositionUpdateOptions &)
+ ?GetConfigured_PosInfosL@T_LbsUtils@@QAEXABVTDesC16@@0AAV?$RPointerArray@X@@@Z @ 19 NONAME ; void T_LbsUtils::GetConfigured_PosInfosL(class TDesC16 const &, class TDesC16 const &, class RPointerArray<void> &)
+ ?GetNetworkModuleIdL@T_LbsUtils@@QAE?AVTUid@@AAVRPositionServer@@@Z @ 20 NONAME ; class TUid T_LbsUtils::GetNetworkModuleIdL(class RPositionServer &)
+ ?NewL@CT_LbsAsyncWaiter@@SAPAV1@XZ @ 21 NONAME ; class CT_LbsAsyncWaiter * CT_LbsAsyncWaiter::NewL(void)
+ ?NewL@CT_LbsTimerUtils@@SAPAV1@PAVMT_LbsTimerUtilsObserver@@H@Z @ 22 NONAME ; class CT_LbsTimerUtils * CT_LbsTimerUtils::NewL(class MT_LbsTimerUtilsObserver *, int)
+ ?NotifyModuleOfConfigChangeL@T_LbsUtils@@QAEXABVTModuleDataIn@@@Z @ 23 NONAME ; void T_LbsUtils::NotifyModuleOfConfigChangeL(class TModuleDataIn const &)
+ ?ResetAndDestroy_PosInfoArr@T_LbsUtils@@QAEXAAV?$RPointerArray@X@@@Z @ 24 NONAME ; void T_LbsUtils::ResetAndDestroy_PosInfoArr(class RPointerArray<void> &)
+ ?Result@CT_LbsAsyncWaiter@@QBEHXZ @ 25 NONAME ; int CT_LbsAsyncWaiter::Result(void) const
+ ?SetTimer@CT_LbsTimerUtils@@QAEXABVTTime@@@Z @ 26 NONAME ; void CT_LbsTimerUtils::SetTimer(class TTime const &)
+ ?SetTimer@CT_LbsTimerUtils@@QAEXVTTimeIntervalMicroSeconds32@@@Z @ 27 NONAME ; void CT_LbsTimerUtils::SetTimer(class TTimeIntervalMicroSeconds32)
+ ?StartAndWait@CT_LbsAsyncWaiter@@QAEXXZ @ 28 NONAME ; void CT_LbsAsyncWaiter::StartAndWait(void)
+ ?VerifySimpleAssistanceData@T_LbsUtils@@QAEHAAVRUEPositioningGpsReferenceTimeReader@@@Z @ 29 NONAME ; int T_LbsUtils::VerifySimpleAssistanceData(class RUEPositioningGpsReferenceTimeReader &)
+ ?Verify_PositionIsValid@T_LbsUtils@@QAEHAAVTPositionInfo@@@Z @ 30 NONAME ; int T_LbsUtils::Verify_PositionIsValid(class TPositionInfo &)
+ ?WaitForModuleToRequestAssistanceDataL@T_LbsUtils@@QAEXXZ @ 31 NONAME ; void T_LbsUtils::WaitForModuleToRequestAssistanceDataL(void)
+ ?Compare_AssistanceDataLog@T_LbsUtils@@QAEHABVCLbsAssistanceDataLogEvent@@0@Z @ 32 NONAME ; int T_LbsUtils::Compare_AssistanceDataLog(class CLbsAssistanceDataLogEvent const &, class CLbsAssistanceDataLogEvent const &)
+ ?Compare_ExternalLocateLog@T_LbsUtils@@QAEHABVCLbsExternalLocateLogEvent@@0@Z @ 33 NONAME ; int T_LbsUtils::Compare_ExternalLocateLog(class CLbsExternalLocateLogEvent const &, class CLbsExternalLocateLogEvent const &)
+ ?Compare_LogBase@T_LbsUtils@@QAEHABVCLbsLogEvent@@0@Z @ 34 NONAME ; int T_LbsUtils::Compare_LogBase(class CLbsLogEvent const &, class CLbsLogEvent const &)
+ ?Compare_NetworkLocateLog@T_LbsUtils@@QAEHABVCLbsNetworkLocateLogEvent@@0@Z @ 35 NONAME ; int T_LbsUtils::Compare_NetworkLocateLog(class CLbsNetworkLocateLogEvent const &, class CLbsNetworkLocateLogEvent const &)
+ ?Compare_SelfLocateLog@T_LbsUtils@@QAEHABVCLbsSelfLocateLogEvent@@0@Z @ 36 NONAME ; int T_LbsUtils::Compare_SelfLocateLog(class CLbsSelfLocateLogEvent const &, class CLbsSelfLocateLogEvent const &)
+ ?Compare_TransmitLocationLog@T_LbsUtils@@QAEHABVCLbsTransmitLocationLogEvent@@0@Z @ 37 NONAME ; int T_LbsUtils::Compare_TransmitLocationLog(class CLbsTransmitLocationLogEvent const &, class CLbsTransmitLocationLogEvent const &)
+ ??0TLbsModuleUpdateItem@@QAE@XZ @ 38 NONAME ; TLbsModuleUpdateItem::TLbsModuleUpdateItem(void)
+ ?Error@TLbsModuleUpdateItem@@QBEHXZ @ 39 NONAME ; int TLbsModuleUpdateItem::Error(void) const
+ ?Measurement@TLbsModuleUpdateItem@@QBEABVTPositionGpsMeasurementInfo@@XZ @ 40 NONAME ; class TPositionGpsMeasurementInfo const & TLbsModuleUpdateItem::Measurement(void) const
+ ?Position@TLbsModuleUpdateItem@@QBEABVTPositionSatelliteInfo@@XZ @ 41 NONAME ; class TPositionSatelliteInfo const & TLbsModuleUpdateItem::Position(void) const
+ ?SetError@TLbsModuleUpdateItem@@QAEXH@Z @ 42 NONAME ; void TLbsModuleUpdateItem::SetError(int)
+ ?SetMeasurement@TLbsModuleUpdateItem@@QAEXABVTPositionGpsMeasurementInfo@@@Z @ 43 NONAME ; void TLbsModuleUpdateItem::SetMeasurement(class TPositionGpsMeasurementInfo const &)
+ ?SetPosition@TLbsModuleUpdateItem@@QAEXABVTPositionSatelliteInfo@@@Z @ 44 NONAME ; void TLbsModuleUpdateItem::SetPosition(class TPositionSatelliteInfo const &)
+ ?Write@CT_Dumper@@SAXV?$TRefByValue@$$CBVTDesC16@@@@ZZ @ 45 NONAME ; void CT_Dumper::Write(class TRefByValue<class TDesC16 const >, ...)
+ ?OverWrite@CT_Dumper@@SAXXZ @ 46 NONAME ; void CT_Dumper::OverWrite(void)
+ ?GetConfigured_UpdateArrayL@T_LbsUtils@@QAEXABVTDesC16@@0AAV?$RPointerArray@VTLbsModuleUpdateItem@@@@@Z @ 47 NONAME ; void T_LbsUtils::GetConfigured_UpdateArrayL(class TDesC16 const &, class TDesC16 const &, class RPointerArray<class TLbsModuleUpdateItem> &)
+ ?NewL@CT_LbsAGpsHandler@@SAPAV1@PAVMT_ResponseObserver@@@Z @ 48 NONAME ; class CT_LbsAGpsHandler * CT_LbsAGpsHandler::NewL(class MT_ResponseObserver *)
+ ?SendRequestClearAllModuleOptions@CT_LbsAGpsHandler@@QAEXXZ @ 49 NONAME ; void CT_LbsAGpsHandler::SendRequestClearAllModuleOptions(void)
+ ?SendRequestError@CT_LbsAGpsHandler@@QAEXH@Z @ 50 NONAME ; void CT_LbsAGpsHandler::SendRequestError(int)
+ ?SendRequestModuleOption@CT_LbsAGpsHandler@@QAEXW4TLbsHybridModuleOptions@@H@Z @ 51 NONAME ; void CT_LbsAGpsHandler::SendRequestModuleOption(enum TLbsHybridModuleOptions, int)
+ ?SendRequestSetAllModuleOptions@CT_LbsAGpsHandler@@QAEXXZ @ 52 NONAME ; void CT_LbsAGpsHandler::SendRequestSetAllModuleOptions(void)
+ ?SendRequestTimeOutMsg@CT_LbsAGpsHandler@@QAEXABVTTimeIntervalMicroSeconds@@@Z @ 53 NONAME ; void CT_LbsAGpsHandler::SendRequestTimeOutMsg(class TTimeIntervalMicroSeconds const &)
+ ?SendRequestUpdateInitMsg@CT_LbsAGpsHandler@@QAEXABVTDesC16@@0@Z @ 54 NONAME ; void CT_LbsAGpsHandler::SendRequestUpdateInitMsg(class TDesC16 const &, class TDesC16 const &)
+ ?Delay@TLbsModuleUpdateItem@@QBEHXZ @ 55 NONAME ; int TLbsModuleUpdateItem::Delay(void) const
+ ?SetDelay@TLbsModuleUpdateItem@@QAEXH@Z @ 56 NONAME ; void TLbsModuleUpdateItem::SetDelay(int)
+ ??1CT_AgpsModuleEventListener@@UAE@XZ @ 57 NONAME ; CT_AgpsModuleEventListener::~CT_AgpsModuleEventListener(void)
+ ?GetExpected_ModuleModes@T_LbsUtils@@QAEXABVTDesC16@@0AAV?$RPointerArray@VTLbsGpsOptions@@@@@Z @ 58 NONAME ; void T_LbsUtils::GetExpected_ModuleModes(class TDesC16 const &, class TDesC16 const &, class RPointerArray<class TLbsGpsOptions> &)
+ ?NewL@CT_AgpsModuleEventListener@@SAPAV1@AAVMT_AgpsModuleEventHandler@@@Z @ 59 NONAME ; class CT_AgpsModuleEventListener * CT_AgpsModuleEventListener::NewL(class MT_AgpsModuleEventHandler &)
+ ?GetConfigured_ClientDetailsL@T_LbsUtils@@QAEXABVTDesC16@@0AAV?$RArray@VTCTClientDetails@@@@@Z @ 60 NONAME ; void T_LbsUtils::GetConfigured_ClientDetailsL(class TDesC16 const &, class TDesC16 const &, class RArray<class TCTClientDetails> &)
+ ?SendRequestForcedUpdate@CT_LbsAGpsHandler@@QAEXXZ @ 61 NONAME ; void CT_LbsAGpsHandler::SendRequestForcedUpdate(void)
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/lbstestutils/EABI/LbsTestUtilsU.DEF Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,91 @@
+EXPORTS
+ _Z27Compare_ModuleUpdateOptionsR22TPositionUpdateOptionsS0_ @ 1 NONAME
+ _ZN10T_LbsUtils14GetBadModuleIdEv @ 2 NONAME
+ _ZN10T_LbsUtils15Compare_PosInfoERK17TPositionInfoBaseS2_ @ 3 NONAME
+ _ZN10T_LbsUtils15Compare_PosInfoERK17TPositionInfoBaseS2_NS_23TComparisonAccuracyTypeE @ 4 NONAME
+ _ZN10T_LbsUtils16GetAGpsModuleIdLER15RPositionServer @ 5 NONAME
+ _ZN10T_LbsUtils18Compare_ModuleInfoER19TPositionModuleInfoS1_ @ 6 NONAME
+ _ZN10T_LbsUtils18Compare_PosInfoArrER13RPointerArrayIvES2_ @ 7 NONAME
+ _ZN10T_LbsUtils18Compare_PosInfoArrER13RPointerArrayIvES2_NS_23TComparisonAccuracyTypeE @ 8 NONAME
+ _ZN10T_LbsUtils18Create_ModuleInfoLE4TUidR19TPositionModuleInfo @ 9 NONAME
+ _ZN10T_LbsUtils19GetNetworkModuleIdLER15RPositionServer @ 10 NONAME
+ _ZN10T_LbsUtils20Compare_ModuleStatusER21TPositionModuleStatusS1_ @ 11 NONAME
+ _ZN10T_LbsUtils21CreateTestPropertiesLEv @ 12 NONAME
+ _ZN10T_LbsUtils22Verify_PositionIsValidER13TPositionInfo @ 13 NONAME
+ _ZN10T_LbsUtils23Compare_PositionQualityER16TPositionQualityS1_ @ 14 NONAME
+ _ZN10T_LbsUtils23GetConfigured_PosInfosLERK7TDesC16S2_R13RPointerArrayIvE @ 15 NONAME
+ _ZN10T_LbsUtils26ResetAndDestroy_PosInfoArrER13RPointerArrayIvE @ 16 NONAME
+ _ZN10T_LbsUtils26VerifySimpleAssistanceDataER36RUEPositioningGpsReferenceTimeReader @ 17 NONAME
+ _ZN10T_LbsUtils27GetConfigured_ModuleStatusLERK7TDesC16S2_R21TPositionModuleStatus @ 18 NONAME
+ _ZN10T_LbsUtils27NotifyModuleOfConfigChangeLERK13TModuleDataIn @ 19 NONAME
+ _ZN10T_LbsUtils34GetConfigured_ModuleUpdateOptionsLERK7TDesC16S2_R22TPositionUpdateOptions @ 20 NONAME
+ _ZN10T_LbsUtilsC1Ev @ 21 NONAME
+ _ZN10T_LbsUtilsC2Ev @ 22 NONAME
+ _ZN10T_LbsUtilsD1Ev @ 23 NONAME
+ _ZN10T_LbsUtilsD2Ev @ 24 NONAME
+ _ZN16CT_LbsTimerUtils11CancelTimerEv @ 25 NONAME
+ _ZN16CT_LbsTimerUtils4NewLEP24MT_LbsTimerUtilsObserveri @ 26 NONAME
+ _ZN16CT_LbsTimerUtils8SetTimerE27TTimeIntervalMicroSeconds32 @ 27 NONAME
+ _ZN16CT_LbsTimerUtils8SetTimerERK5TTime @ 28 NONAME
+ _ZN16CT_LbsTimerUtilsD0Ev @ 29 NONAME
+ _ZN16CT_LbsTimerUtilsD1Ev @ 30 NONAME
+ _ZN16CT_LbsTimerUtilsD2Ev @ 31 NONAME
+ _ZN17CT_LbsAsyncWaiter12StartAndWaitEv @ 32 NONAME
+ _ZN17CT_LbsAsyncWaiter4NewLEv @ 33 NONAME
+ _ZNK17CT_LbsAsyncWaiter6ResultEv @ 34 NONAME
+ _ZTI16CT_LbsTimerUtils @ 35 NONAME ; #<TI>#
+ _ZTI17CConfigReaderBase @ 36 NONAME ; #<TI>#
+ _ZTI17CT_LbsAsyncWaiter @ 37 NONAME ; #<TI>#
+ _ZTI20CPosInfoConfigReader @ 38 NONAME ; #<TI>#
+ _ZTI23CUpdateOptsConfigReader @ 39 NONAME ; #<TI>#
+ _ZTI25CModuleStatusConfigReader @ 40 NONAME ; #<TI>#
+ _ZTV16CT_LbsTimerUtils @ 41 NONAME ; #<VT>#
+ _ZTV17CConfigReaderBase @ 42 NONAME ; #<VT>#
+ _ZTV17CT_LbsAsyncWaiter @ 43 NONAME ; #<VT>#
+ _ZTV20CPosInfoConfigReader @ 44 NONAME ; #<VT>#
+ _ZTV23CUpdateOptsConfigReader @ 45 NONAME ; #<VT>#
+ _ZTV25CModuleStatusConfigReader @ 46 NONAME ; #<VT>#
+ _ZN10T_LbsUtils37WaitForModuleToRequestAssistanceDataLEv @ 47 NONAME
+ _ZN10T_LbsUtils21Compare_SelfLocateLogERK22CLbsSelfLocateLogEventS2_ @ 48 NONAME
+ _ZN10T_LbsUtils24Compare_NetworkLocateLogERK25CLbsNetworkLocateLogEventS2_ @ 49 NONAME
+ _ZN10T_LbsUtils25Compare_AssistanceDataLogERK26CLbsAssistanceDataLogEventS2_ @ 50 NONAME
+ _ZN10T_LbsUtils25Compare_ExternalLocateLogERK26CLbsExternalLocateLogEventS2_ @ 51 NONAME
+ _ZN10T_LbsUtils27Compare_TransmitLocationLogERK28CLbsTransmitLocationLogEventS2_ @ 52 NONAME
+ _ZNK20TLbsModuleUpdateItem11MeasurementEv @ 53 NONAME
+ _ZN20TLbsModuleUpdateItem11SetPositionERK22TPositionSatelliteInfo @ 54 NONAME
+ _ZN20TLbsModuleUpdateItem14SetMeasurementERK27TPositionGpsMeasurementInfo @ 55 NONAME
+ _ZNK20TLbsModuleUpdateItem5ErrorEv @ 56 NONAME
+ _ZNK20TLbsModuleUpdateItem8PositionEv @ 57 NONAME
+ _ZN20TLbsModuleUpdateItem8SetErrorEi @ 58 NONAME
+ _ZN20TLbsModuleUpdateItemC1Ev @ 59 NONAME
+ _ZN20TLbsModuleUpdateItemC2Ev @ 60 NONAME
+ _ZTI19CUpdateConfigReader @ 61 NONAME
+ _ZTV19CUpdateConfigReader @ 62 NONAME
+ _ZN9CT_Dumper5WriteE11TRefByValueIK7TDesC16Ez @ 63 NONAME
+ _ZN9CT_Dumper9OverWriteEv @ 64 NONAME
+ _ZN10T_LbsUtils26GetConfigured_UpdateArrayLERK7TDesC16S2_R13RPointerArrayI20TLbsModuleUpdateItemE @ 65 NONAME
+ _ZN17CT_LbsAGpsHandler16SendRequestErrorEi @ 66 NONAME
+ _ZN17CT_LbsAGpsHandler21SendRequestTimeOutMsgERK25TTimeIntervalMicroSeconds @ 67 NONAME
+ _ZN17CT_LbsAGpsHandler23SendRequestModuleOptionE23TLbsHybridModuleOptionsi @ 68 NONAME
+ _ZN17CT_LbsAGpsHandler24SendRequestUpdateInitMsgERK7TDesC16S2_ @ 69 NONAME
+ _ZN17CT_LbsAGpsHandler30SendRequestSetAllModuleOptionsEv @ 70 NONAME
+ _ZN17CT_LbsAGpsHandler32SendRequestClearAllModuleOptionsEv @ 71 NONAME
+ _ZN17CT_LbsAGpsHandler4NewLEP19MT_ResponseObserver @ 72 NONAME
+ _ZTI17CT_LbsAGpsHandler @ 73 NONAME ; #<TI>#
+ _ZTV17CT_LbsAGpsHandler @ 74 NONAME ; #<VT>#
+ _ZN20TLbsModuleUpdateItem8SetDelayEi @ 75 NONAME
+ _ZNK20TLbsModuleUpdateItem5DelayEv @ 76 NONAME
+ _ZN10T_LbsUtils23GetExpected_ModuleModesERK7TDesC16S2_R13RPointerArrayI14TLbsGpsOptionsE @ 77 NONAME
+ _ZN26CT_AgpsModuleEventListener4NewLER25MT_AgpsModuleEventHandler @ 78 NONAME
+ _ZN26CT_AgpsModuleEventListenerD0Ev @ 79 NONAME
+ _ZN26CT_AgpsModuleEventListenerD1Ev @ 80 NONAME
+ _ZN26CT_AgpsModuleEventListenerD2Ev @ 81 NONAME
+ _ZTI26CT_AgpsModuleEventListener @ 82 NONAME
+ _ZTI28CAgpsModuleModesConfigReader @ 83 NONAME
+ _ZTV26CT_AgpsModuleEventListener @ 84 NONAME
+ _ZTV28CAgpsModuleModesConfigReader @ 85 NONAME
+ _ZN10T_LbsUtils28GetConfigured_ClientDetailsLERK7TDesC16S2_R6RArrayI16TCTClientDetailsE @ 86 NONAME
+ _ZTI26CClientDetailsConfigReader @ 87 NONAME
+ _ZTV26CClientDetailsConfigReader @ 88 NONAME
+ _ZN17CT_LbsAGpsHandler23SendRequestForcedUpdateEv @ 89 NONAME
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/lbstestutils/group/bld.inf Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,25 @@
+// 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:
+//
+
+PRJ_TESTMMPFILES
+lbstestutils.mmp
+
+PRJ_TESTEXPORTS
+../inc/tlbsutils.h /epoc32/include/lbs/test/tlbsutils.h
+../inc/ctlbsasyncwaiter.h /epoc32/include/lbs/test/ctlbsasyncwaiter.h
+../inc/ctlbstimerutils.h /epoc32/include/lbs/test/ctlbstimerutils.h
+../inc/ctdumper.h /epoc32/include/lbs/test/ctdumper.h
+../inc/ctlbsagpshandler.h /epoc32/include/lbs/test/ctlbsagpshandler.h
+../inc/ctlbsagpsmoduleeventlistener.h /epoc32/include/lbs/test/ctlbsagpsmoduleeventlistener.h
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/lbstestutils/group/lbstestutils.mmp Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,62 @@
+// 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 lbstestutils.mmp
+//
+//
+
+TARGET lbstestutils.dll
+TARGETTYPE DLL
+
+//CAPABILITY ProtServ LocalServices WriteDeviceData ReadDeviceData Location
+CAPABILITY ALL -TCB
+
+MACRO ENABLE_LBS_TEST_LOGGER
+
+UID 0x1000007A 0x10282260
+
+
+SYSTEMINCLUDE /epoc32/include
+SYSTEMINCLUDE /epoc32/include/lbs
+SYSTEMINCLUDE /epoc32/include/lbs/test
+
+USERINCLUDE ../inc
+//USERINCLUDE ../../../../locationrequestmgmt/networkrequesthandler/inc
+
+SOURCEPATH ../src
+SOURCE tlbsutils.cpp
+SOURCE ctlbsasyncwaiter.cpp
+SOURCE ctlbstimerutils.cpp
+SOURCE ctlbsconfigreader.cpp
+SOURCE ctdumper.cpp
+SOURCE ctlbsagpshandler.cpp
+SOURCE ctlbsagpsmoduleeventlistener.cpp
+SOURCE ctlbstestlogger.cpp
+
+// EPOC libraries.
+LIBRARY euser.lib
+LIBRARY efsrv.lib
+
+// LBS libraries.
+LIBRARY lbsselflocate.lib
+LIBRARY lbsloccommon.lib
+LIBRARY lbsassistancedata.lib
+LIBRARY lbsloggerapi.lib
+LIBRARY flogger.lib
+
+// For Log Comparison
+LIBRARY lbsprivacycontroller.lib
+LIBRARY lbsnetprotocol.lib
+
+LIBRARY lbstestchannel.lib
+LIBRARY lbslocdatasource.lib
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/lbstestutils/inc/ctdumper.h Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,43 @@
+// Copyright (c) 2007-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
+ @internalTechnology
+ @test
+*/
+
+#ifndef CTDUMPER_H
+#define CTDUMPER_H
+
+#include <e32base.h>
+
+#define LBSDUMPNEWLOG() CT_Dumper::OverWrite()
+#define LBSDUMP(L1) CT_Dumper::Write(_L(L1))
+#define LBSDUMP2(L1,L2) CT_Dumper::Write(_L(L1), L2)
+
+
+/** Dumper used by the GPS module to dump the update array in a file.
+*/
+class CT_Dumper : public CBase
+ {
+public:
+ IMPORT_C static void OverWrite();
+ IMPORT_C static void Write(TRefByValue<const TDesC16> aFmt, ...);
+ };
+
+#endif // CTDUMPER_H
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/lbstestutils/inc/ctlbsagpshandler.h Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,93 @@
+// Copyright (c) 2007-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:
+// Definition of Test Harness request handler component.
+//
+//
+
+
+
+/**
+ @file
+ @internalTechnology
+ @test
+*/
+
+#ifndef CTLBSAGPSHANDLER_H
+#define CTLBSAGPSHANDLER_H
+
+#include <e32hashtab.h>
+#include <lbs/test/tlbschannel.h>
+
+
+///////////////////////////////////////////////////////////////////////////////
+// Test Harness Request Handler Channel
+///////////////////////////////////////////////////////////////////////////////
+
+/** Observer for TH Request Handler interface
+*/
+class MT_ResponseObserver
+ {
+public:
+ virtual void ProcessAGpsResponseMessage(const TT_LbsAGpsResponseMsg::TModuleResponseType aResponse) = 0;
+ };
+
+/** Manager for the TH channel.
+
+This class handles sending and receiving messages on the Test Harness channel.
+It is implemented as an active object to allow it to asnychronously wait for
+messages to arrive. Sending is synchronous.
+*/
+class CT_LbsAGpsHandler : public CActive,
+ public MT_LbsChannelObserver
+ {
+public:
+ IMPORT_C static CT_LbsAGpsHandler* NewL(MT_ResponseObserver* aObserver);
+ ~CT_LbsAGpsHandler();
+
+ IMPORT_C void SendRequestUpdateInitMsg(const TDesC& aConfigFileName,
+ const TDesC& aConfigSection);
+ IMPORT_C void SendRequestTimeOutMsg(const TTimeIntervalMicroSeconds& aTimeOut);
+ IMPORT_C void SendRequestSetAllModuleOptions();
+ IMPORT_C void SendRequestClearAllModuleOptions();
+ IMPORT_C void SendRequestModuleOption(TLbsHybridModuleOptions aOption, TBool aValue);
+ IMPORT_C void SendRequestForcedUpdate();
+ IMPORT_C void SendRequestError(TInt aError);
+
+
+private:
+ CT_LbsAGpsHandler(MT_ResponseObserver* aObserver);
+ void ConstructL();
+
+ // from CActive
+ void RunL();
+ void DoCancel();
+ TInt RunError(TInt aError);
+
+ // Send a message.
+ void SendRequestMessage(const TT_LbsMsgBase* aMessage);
+
+ // Buffer a message.
+ void BufferMessage(const TT_LbsMsgBase* aMessage);
+
+ // from MT_LbsChannelObserver
+ void ProcessChannelMessage(RT_LbsChannel::TT_LbsChannelId aChannelId, const TT_LbsMsgBase& aMessage);
+
+private:
+ MT_ResponseObserver* iObserver;
+ RT_LbsChannel iTHChannel;
+ RPointerArray<TT_LbsMsgBase> iMsgBuffer;
+ };
+
+
+#endif // CTLBSAGPSHANDLER_H
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/lbstestutils/inc/ctlbsagpsmoduleeventlistener.h Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,62 @@
+// Copyright (c) 2007-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
+ @internalTechnology
+ @test
+*/
+
+#ifndef __CT_LBS_AGPS_MODULE_EVENT_LISTENER_H__
+#define __CT_LBS_AGPS_MODULE_EVENT_LISTENER_H__
+
+#include "tlbsutils.h"
+#include <lbs/lbslocdatasourcegpsbase.h>
+#include <e32property.h>
+
+class MT_AgpsModuleEventHandler
+ {
+public:
+ virtual void OnSetGpsOptions(const TLbsGpsOptions& aGpsOptions) = 0;
+ };
+
+class CT_AgpsModuleEventListener : public CActive
+/**
+ * This class listens to events published by the AGPS Module.
+ *
+ * @internalComponent
+*/
+ {
+public:
+ IMPORT_C static CT_AgpsModuleEventListener* NewL(MT_AgpsModuleEventHandler& aHandler);
+ IMPORT_C ~CT_AgpsModuleEventListener();
+
+private:
+ CT_AgpsModuleEventListener(MT_AgpsModuleEventHandler& aHandler);
+ void ConstructL();
+
+ void RunL();
+ void DoCancel();
+
+private:
+ /** The call back class */
+ MT_AgpsModuleEventHandler& iHandler;
+ /** The property that will subscribe to the AGPS Module mode changes key */
+ RProperty iModeChangesProperty;
+ };
+
+#endif
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/lbstestutils/inc/ctlbsasyncwaiter.h Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,53 @@
+// 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 ctlbsasyncwaiter.h
+// This is the header file for CT_LbsAsyncWaiter
+//
+//
+
+
+
+/**
+ @file
+ @internalTechnology
+ @test
+*/
+
+#ifndef __CT_LBS_ASYNC_WAITER_H__
+#define __CT_LBS_ASYNC_WAITER_H__
+
+//epoc includes
+#include <e32base.h>
+
+// Implements functions related to active objects
+class CT_LbsAsyncWaiter : public CActive
+ {
+public:
+ IMPORT_C static CT_LbsAsyncWaiter* NewL();
+ ~CT_LbsAsyncWaiter();
+
+ IMPORT_C void StartAndWait();
+ IMPORT_C TInt Result() const;
+
+private:
+ CT_LbsAsyncWaiter();
+ // from CActive
+ virtual void RunL();
+ virtual void DoCancel();
+
+private:
+ TInt iError;
+ };
+
+#endif // __CT_LBS_ASYNC_WAITER_H__
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/lbstestutils/inc/ctlbsconfigreader.h Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,406 @@
+// 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 ctlbsconfigreader.h
+// This is the header file which contains the ini file configuration reader classes
+//
+//
+
+#ifndef __CT_LBS_CONFIG_READER_H__
+#define __CT_LBS_CONFIG_READER_H__
+
+
+// Epoc includes
+#include <e32cmn.h>
+
+// LBS includes
+#include <lbs.h>
+#include <lbscommon.h>
+#include <lbspositioninfo.h>
+#include <LbsLocDataSourceGpsBase.h>
+
+// LBS test includes
+#include "tlbsutils.h"
+
+// Forward Declaration
+
+
+
+const TInt KMaxSentence = 200;
+const TInt KMaxFields = 20;
+const TInt KMaxIniFileBuffer = 100;
+const TInt KMaxConfigReaderIniFileName = 100;
+
+class CConfigReaderBase : public CBase
+ {
+public:
+ virtual ~CConfigReaderBase();
+
+ /** Main entry function which reads the ini file, fills out the data items defined in the
+ derived classes. Once NewL as been called to construct the object, this should then be
+ called. */
+ void ProcessL();
+
+protected:
+ /** Converts a string to a TInt value. */
+ void ExtractValueL(const TPtrC8& aField, TInt& aValue);
+
+ /** Converts a string to a TReal32 value. */
+ void ExtractValueL(const TPtrC8& aField, TReal32& aValue);
+
+ /** Converts a string to a TReal64 value. */
+ void ExtractValueL(const TPtrC8& aField, TReal64& aValue);
+
+// void ExtractDegreesL(const TPtrC8& aField, TReal64& aDegrees); this maybe handy so we can have lat, long in degrees not raw real numbers...
+// void ExtractTimeL(const TPtrC8& aTime, TDateTime& aTheTime);
+// void ExtractDateL(const TPtrC8& aDate, TDateTime& aTheDate);
+
+// Derived classes provide the implementation.
+ /** Parses a full sentence read from the ini file. */
+ virtual void HandleSentenceL()=0;
+
+ /** Fills the data item (detailed in the derived class) with default values. */
+ virtual void DefaultData()=0;
+
+ /** Fills the data item (detailed in the derived class) with values parsed from the sentence. */
+ virtual void ExtractDataL()=0;
+
+ CConfigReaderBase(const TDesC &aConfigFileName);
+
+ CConfigReaderBase(const TDesC& aConfigFileName, const TDesC& aConfigSection);
+
+private:
+ /** Adds valid sentence character to the field. Once the field delimiter is found the field
+ is appended to the field array. */
+ void AppendFieldChar(TUint aChar);
+
+ /** Process sentences read from the ini file buffer. A complete valid sentence is passed
+ to HandeSentenceL() to allow the derived class to process the sentence fields into
+ it's data items. */
+ void ProcessStringL(const TDesC8& aData);
+
+private:
+// enum TReadState {EWantStart, EWantTerminator};
+
+ enum TReadState {/* EStart, */
+ EStartSection,
+ EProcessSection,
+ EStartSentence,
+ EProcessSentence,
+ EHalt};
+
+
+ //const TDesC iConfigFileName; // can we try this, but we will not be able to add the path
+ /** Configuration ini filename to open and read. */
+ TBuf<KMaxConfigReaderIniFileName> iConfigFileName;
+ TBuf<KMaxSentence> iConfigSection;
+
+ /** State machine variable used while processing a sentence. */
+ TReadState iReadState;
+
+ /** The sentence buffer, to store a valid sentence ready for processing. */
+ TBuf8<KMaxSentence> iSentence;
+
+
+ TBuf8<KMaxSentence> iReadSection;
+
+protected:
+ /** Field array. Each field is delimited by a ',' or '*' and will be converted into the
+ member variable of the data item defined in the derived class. */
+ TPtrC8 iFields[KMaxFields];
+
+ /** Number of fields in the field array. */
+ TInt iNumFields;
+
+ /** Where the field starts in the sentence string. */
+ TInt iFieldStart;
+
+ /** Length of the field. */
+ TInt iFieldLength;
+ };
+
+
+
+// Default values for TPosition,
+#define DEFAULT_NOTIFY_POS_UPDATE_LATITUDE 49.2
+#define DEFAULT_NOTIFY_POS_UPDATE_LONGITUDE 3.5
+#define DEFAULT_NOTIFY_POS_UPDATE_ALTITUDE 50.0
+#define DEFAULT_NOTIFY_POS_UPDATE_HORIZONTAL_ACCURACY 2.0
+#define DEFAULT_NOTIFY_POS_UPDATE_VERTICAL_ACCURACY 3.0
+
+// TCourse and
+#define DEFAULT_NOTIFY_POS_UPDATE_SPEED 26.66f
+#define DEFAULT_NOTIFY_POS_UPDATE_HEADING 25.0
+#define DEFAULT_NOTIFY_POS_UPDATE_SPEED_ACCURACY 2.0
+#define DEFAULT_NOTIFY_POS_UPDATE_HEADING_ACCURACY 10.0
+
+// TSatelliteData - first satellite
+#define DEFAULT_NOTIFY_POS_UPDATE_SATELLITE_ID1 10
+#define DEFAULT_NOTIFY_POS_UPDATE_AZIMUTH1 50.0
+#define DEFAULT_NOTIFY_POS_UPDATE_ELEVATION1 27.0
+#define DEFAULT_NOTIFY_POS_UPDATE_IS_USED1 ETrue
+#define DEFAULT_NOTIFY_POS_UPDATE_SIGNAL_STRENGTH1 4
+
+// TSatelliteData - second stellite
+#define DEFAULT_NOTIFY_POS_UPDATE_SATELLITE_ID2 11
+#define DEFAULT_NOTIFY_POS_UPDATE_AZIMUTH2 47.0
+#define DEFAULT_NOTIFY_POS_UPDATE_ELEVATION2 30.0
+#define DEFAULT_NOTIFY_POS_UPDATE_IS_USED2 EFalse
+#define DEFAULT_NOTIFY_POS_UPDATE_SIGNAL_STRENGTH2 3
+
+
+
+
+class CUpdateConfigReader : public CConfigReaderBase
+ {
+public:
+
+ enum TUpdateFields
+ {
+ EUpdateType = 0, // Must be present
+ EUpdateRepeat,
+ ENumOfMeasurements,
+
+ // TCoordinate
+ EPosLatitude, /** TCoordinate.iLatitude, TReal64 */
+ EPosLongitude, /** TCoordinate.iLongitude, TReal64 */
+ EPosAltitude, /** TCoordinate.iAltitude, TReal32 */
+
+ // TLocalitiy
+ EPosHorzAccuracy, /** TLocality.iHorizontalAccuracy, TReal32 */
+ EPosVertAccuracy, /** TLocality.iVerticalAccuracy, TReal32 */
+
+ // Optional
+ EUpdateErr,
+ EUpdateDelay /** Time to delay, can be negative to force early update */
+ };
+
+
+ static CUpdateConfigReader* NewL(const TDesC &aConfigFileName, const TDesC& aConfigSection, RPointerArray<TLbsModuleUpdateItem>& aUpdateArr);
+
+protected:
+ void HandleSentenceL();
+
+ void DefaultData();
+ void ExtractDataL();
+
+private:
+ CUpdateConfigReader(const TDesC &aConfigFileName, const TDesC& aConfigSection, RPointerArray<TLbsModuleUpdateItem>& aUpdateArr);
+ void ConstructL();
+
+ RPointerArray<TLbsModuleUpdateItem>& iUpdateArr;
+ TLbsModuleUpdateItem* iUpdate;
+ };
+
+
+
+
+class CPosInfoConfigReader : public CConfigReaderBase
+ {
+public:
+
+ enum TPosInfoFields
+ {
+ EPosType = 0, // Must be present
+ EposRepeat,
+
+ // TCoordinate
+ EPosLatitude, /** TCoordinate.iLatitude, TReal64 */
+ EPosLongitude, /** TCoordinate.iLongitude, TReal64 */
+ EPosAltitude, /** TCoordinate.iAltitude, TReal32 */
+ EPosDatum, /** TCoordinate.iDatum, TUid */
+
+ // TLocalitiy
+ EPosHorzAccuracy, /** TLocality.iHorizontalAccuracy, TReal32 */
+ EPosVertAccuracy, /** TLocality.iVerticalAccuracy, TReal32 */
+
+ // TPosition
+ // EPosTime, /** TPosition.iTime, TTime */ // see comment below
+
+ // TCourse
+ EPosSpeed, /** TCourse.iSpeed, TReal32 */
+ EPosHeading, /** TCourse.iHeading, TReal32 */
+ EPosSpeedAccuracy, /** TCourse.iSpeedAccuracy, TReal32 */
+ EPosHeadingAccuracy, /** TCourse.iHeadingAccuracy, TReal32 */
+ };
+
+
+ static CPosInfoConfigReader* NewL(const TDesC &aConfigFileName, const TDesC& aConfigSection, RPointerArray<TAny>& aPosInfoArr);
+
+protected:
+ void HandleSentenceL();
+
+ void DefaultData();
+ void ExtractDataL();
+
+private:
+ CPosInfoConfigReader(const TDesC &aConfigFileName, const TDesC& aConfigSection, RPointerArray<TAny>& aPosInfoArr);
+ void ConstructL();
+
+ RPointerArray<TAny>& iPosInfoArr;
+ TPositionInfoBase* iPosInfo;
+ };
+
+
+
+/** CModuleStatusConfigReader is a reader class to process module status sentences.
+ Once processed the aModuleStatus item will be filled with field values held in
+ the sentence.
+
+ The supported sentence is "modstatus", which MUST start with '$' and end with '*',
+ fields MUST be delimted by ',' and the sentence MUST NOT contain any white space.
+
+ $modstatus,device_field,data_quality_field*
+
+ where device_field is one of
+ device_error
+ device_disable
+ device_inactive
+ device_initialising
+ device_standby
+ device_ready
+ device_active
+
+ where data_quality_field is one of
+ data_quality_loss
+ data_quality_partial
+ data_quality_normal
+
+*/
+class CModuleStatusConfigReader : public CConfigReaderBase
+ {
+public:
+
+ enum TModuleStatusFields
+ {
+ EModuleStatusType = 0, // Must be present, only 1 type 'modstatus'.
+
+ // TPositionModuleStatus fields.
+ EModuleStatusDevice, /** TPositionModuleStatus.iDeviceStatus, TDeviceStatus */
+ EModuleStatusDataQuality /** TPositionModuleStatus.iDataQualityStatus, TDataQualityStatus */
+ };
+
+ static CModuleStatusConfigReader* NewL(const TDesC &aConfigFileName, const TDesC& aConfigSection, TPositionModuleStatus& aModuleStatus);
+
+protected:
+ /** Converts a string to a TPositionModuleStatus::TDeviceStatus enum value. */
+ void ExtractValueDevice(const TPtrC8& aField, TPositionModuleStatus::TDeviceStatus& aValue);
+
+ /** Converts a string to a TPositionModuleStatus::TDataQualityStatus enum value. */
+ void ExtractValueDataQuality(const TPtrC8& aField, TPositionModuleStatus::TDataQualityStatus& aValue);
+
+ /** See CConfigReaderBase for comments. */
+ void HandleSentenceL();
+ void DefaultData();
+ void ExtractDataL();
+
+private:
+ CModuleStatusConfigReader(const TDesC &aConfigFileName, const TDesC& aConfigSection, TPositionModuleStatus& aModuleStatus);
+
+ /** Reference to the module status data item to be setup. */
+ TPositionModuleStatus& iModuleStatus;
+ };
+
+
+
+/* and a class reader for module update options
+updateoptions,100,100,100,false
+interval,
+timeout
+maxage
+partialupdates
+*/
+
+class CUpdateOptsConfigReader : public CConfigReaderBase
+ {
+public:
+
+ enum TUpdateOptsFields
+ {
+ EUpdateOptsType = 0, // Must be present, only 1 type 'updateoptions'
+
+ // TPositionUpdateOptions
+ EUpdateOptsInterval, /** TPositionUpdateOptions.iUpdateInterval, TTimeIntervalMicroSeconds */
+ EUpdateOptsTimeOut, /** TPositionUpdateOptions.iUpdateTimeOut, TTimeIntervalMicroSeconds */
+ EUpdateOptsMaxAge, /** TPositionUpdateOptions.iMaxUpdateAge, TTimeIntervalMicroSeconds */
+ EUpdateOptsPartialUpdates /** TBool TPositionUpdateOptions.iAcceptPartialUpdates, TBool */
+ };
+
+
+ static CUpdateOptsConfigReader* NewL(const TDesC &aConfigFileName, const TDesC& aConfigSection, TPositionUpdateOptions& aUpdateOpts);
+
+protected:
+ /** Converts string to a TTimeIntervalMicroSeconds value. */
+ void ExtractValueL(const TPtrC8& aField, TTimeIntervalMicroSeconds& aValue);
+
+ /** Converts string to a TBool value. */
+ void ExtractValue(const TPtrC8& aField, TBool& aValue);
+
+ void HandleSentenceL();
+
+ void DefaultData();
+ void ExtractDataL();
+
+private:
+ CUpdateOptsConfigReader(const TDesC &aConfigFileName, const TDesC& aConfigSection, TPositionUpdateOptions& aUpdateOpts);
+
+ TPositionUpdateOptions& iUpdateOpts;
+ };
+
+/*
+ * Class reader for the expected modes in which the module is asked to run
+ */
+class CAgpsModuleModesConfigReader : public CConfigReaderBase
+ {
+private:
+ enum TModuleModesFields
+ {
+ EModuleModesType = 0, // must be present and needs to be 'modulemodes'
+ EGpsModeField, // the GPS mode
+ EBegginingOfGpsOptionsArray // where the array of gps options items starts
+ };
+public:
+ static CAgpsModuleModesConfigReader* NewL(const TDesC &aConfigFileName, const TDesC& aConfigSection,
+ RPointerArray<TLbsGpsOptions>& aModuleModes);
+private:
+ CAgpsModuleModesConfigReader(const TDesC &aConfigFileName, const TDesC& aConfigSection,
+ RPointerArray<TLbsGpsOptions>& aModuleModes);
+ void HandleSentenceL();
+
+ void DefaultData();
+ void ExtractDataL();
+
+private:
+ RPointerArray<TLbsGpsOptions>& iModuleModes;
+ };
+
+/*
+ * Class reader for details of all clients making requests in a test
+ */
+class CClientDetailsConfigReader : public CConfigReaderBase
+ {
+public:
+ static CClientDetailsConfigReader* NewL(const TDesC &aConfigFileName, const TDesC& aConfigSection,
+ RArray<TCTClientDetails>& aClientDetailsArray);
+private:
+ CClientDetailsConfigReader(const TDesC &aConfigFileName, const TDesC& aConfigSection,
+ RArray<TCTClientDetails>& aClientDetailsArray);
+ void HandleSentenceL();
+
+ void DefaultData();
+ void ExtractDataL();
+
+private:
+ RArray<TCTClientDetails>& iClientDetailsArray;
+ };
+#endif //__CT_LBS_CONFIG_READER_H__
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/lbstestutils/inc/ctlbstestlogger.h Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,88 @@
+// 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:
+//
+
+#ifndef LBS_TEST_LOGGER_H
+#define LBS_TEST_LOGGER_H
+
+//************************************************************************************************************
+#include <e32base.h>
+
+//-------------------------------------------------------------------------------
+/** Enum for log txt priority
+Priorities 0 - 2 are for logging component internal events.
+Priority 3 is for logging major component events that may have a major influence on other components.
+Priorities 3 - 4 are for logging lbs system level events.
+@InternalTechnology
+@prototype
+*/
+enum TLogPriority
+ {
+ /** The lowest priority. Use for hex dump and other low priority information. */
+ ELogP0 = 0,
+ /** Use for method enter/exit logging. */
+ ELogP1 = 1,
+ /** Use for low priority, component internal event and data logging. */
+ ELogP2 = 2,
+ /** Use for important component events like timeouts, warnings and errors. */
+ ELogP3 = 3,
+ /** Use for IPC only. */
+ ELogP4 = 4,
+ /** The highest priority. Use only for really major user, network or hardware events.*/
+ ELogP5 = 5
+ };
+
+/** Log entry type.
+@InternalTechnology
+@prototype
+*/
+enum TLogType
+ {
+ ELogNormal = 0,
+ ELogWarning = 1,
+ ELogError = 2
+ };
+
+//-------------------------------------------------------------------------------
+/** Logger for development and debug purpose
+The log format will be
+
+Time File name Process Id Log Priority Log text
+[08:51:00.997500] [File Name] [Process Id] [Log Text Priority] Any Log text
+
+note the maximum buffer size limitation KLogBufferSize=150
+
+[File Name] see RProcess::FileName()
+[Process Id]see RProcess::Id()
+[Log Text Priority] - [P0]- [P5]
+
+@InternalTechnology
+@prototype
+*/
+class LbsTestLogger
+ {
+public:
+
+ static void Write(TLogType aType, TLogPriority aPrior, TRefByValue<const TDesC16> aFmt, ...);
+ static void Write(TLogType aType, TLogPriority aPrior, TRefByValue<const TDesC8> aFmt, ...);
+
+ static void HexDump(TLogPriority aPrior, const TUint8 *aPtr, TInt aLen);
+
+private:
+ static void CreateLogDir();
+ static void CreateLogTxt(TLogType aType, TLogPriority aPrior, TDes16& aBuf);
+ static void CreateLogTxt(TLogType aType, TLogPriority aPrior, TDes8& aBuf);
+ };
+
+#endif //LBS_TEST_LOGGER_H
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/lbstestutils/inc/ctlbstestloggermacros.h Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,75 @@
+// 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:
+//
+
+#ifndef LBS_TEST_LOGGER_MACROS_H
+#define LBS_TEST_LOGGER_MACROS_H
+
+#include "ctlbstestlogger.h"
+
+#ifdef ENABLE_LBS_TEST_LOGGER
+ #define TESTLOG(L1,L2) LbsTestLogger::Write(ELogNormal, L1, _L(L2))
+ #define TESTLOG2(L1,L2,L3) LbsTestLogger::Write(ELogNormal, L1, _L(L2), L3)
+ #define TESTLOG3(L1,L2,L3,L4) LbsTestLogger::Write(ELogNormal, L1, _L(L2), L3, L4)
+ #define TESTLOG4(L1,L2,L3,L4,L5) LbsTestLogger::Write(ELogNormal, L1, _L(L2), L3, L4, L5)
+ #define TESTLOG5(L1,L2,L3,L4,L5,L6) LbsTestLogger::Write(ELogNormal, L1, _L(L2), L3, L4, L5, L6)
+ #define TESTLOG6(L1,L2,L3,L4,L5,L6,L7) LbsTestLogger::Write(ELogNormal, L1, _L(L2), L3, L4, L5, L6, L7)
+ #define TESTLOG7(L1,L2,L3,L4,L5,L6,L7,L8) LbsTestLogger::Write(ELogNormal, L1, _L(L2), L3, L4, L5, L6, L7, L8)
+ #define TESTLOG8(L1,L2,L3,L4,L5,L6,L7,L8,L9) LbsTestLogger::Write(ELogNormal, L1, _L(L2), L3, L4, L5, L6, L7, L8, L9)
+ #define TESTLOGHEX(L1,L2,L3) LbsTestLogger::HexDump(L1,L2,L3)
+
+
+
+
+ #define TESTLOG_ERR(L1,L2) LbsTestLogger::Write(ELogError, L1, _L(L2))
+ #define TESTLOG_ERR2(L1,L2,L3) LbsTestLogger::Write(ELogError, L1, _L(L2), L3)
+ #define TESTLOG_ERR3(L1,L2,L3,L4) LbsTestLogger::Write(ELogError, L1, _L(L2), L3, L4)
+ #define TESTLOG_ERR4(L1,L2,L3,L4,L5) LbsTestLogger::Write(ELogError, L1, _L(L2), L3, L4, L5)
+ #define TESTLOG_ERR5(L1,L2,L3,L4,L5,L6) LbsTestLogger::Write(ELogError, L1, _L(L2), L3, L4, L5, L6)
+ #define TESTLOG_ERR6(L1,L2,L3,L4,L5,L6,L7) LbsTestLogger::Write(ELogError, L1, _L(L2), L3, L4, L5, L6, L7)
+
+ #define TESTLOG_WARN(L1,L2) LbsTestLogger::Write(ELogWarning, L1, _L(L2))
+ #define TESTLOG_WARN2(L1,L2,L3) LbsTestLogger::Write(ELogWarning, L1, _L(L2), L3)
+ #define TESTLOG_WARN3(L1,L2,L3,L4) LbsTestLogger::Write(ELogWarning, L1, _L(L2), L3, L4)
+ #define TESTLOG_WARN4(L1,L2,L3,L4,L5) LbsTestLogger::Write(ELogWarning, L1, _L(L2), L3, L4, L5)
+ #define TESTLOG_WARN5(L1,L2,L3,L4,L5,L6) LbsTestLogger::Write(ELogWarning, L1, _L(L2), L3, L4, L5, L6)
+ #define TESTLOG_WARN6(L1,L2,L3,L4,L5,L6,L7) LbsTestLogger::Write(ELogWarning, L1, _L(L2), L3, L4, L5, L6, L7)
+#else
+ #define TESTLOG(L1,L2)
+ #define TESTLOG2(L1,L2,L3)
+ #define TESTLOG3(L1,L2,L3,L4)
+ #define TESTLOG4(L1,L2,L3,L4,L5)
+ #define TESTLOG5(L1,L2,L3,L4,L5,L6)
+ #define TESTLOG6(L1,L2,L3,L4,L5,L6,L7)
+ #define TESTLOG7(L1,L2,L3,L4,L5,L6,L7,L8)
+ #define TESTLOG8(L1,L2,L3,L4,L5,L6,L7,L8,L9)
+
+ #define TESTLOGHEX(L1,L2,L3)
+
+ #define TESTLOG_ERR(L1,L2)
+ #define TESTLOG_ERR2(L1,L2,L3)
+ #define TESTLOG_ERR3(L1,L2,L3,L4)
+ #define TESTLOG_ERR4(L1,L2,L3,L4,L5)
+ #define TESTLOG_ERR5(L1,L2,L3,L4,L5,L6)
+ #define TESTLOG_ERR6(L1,L2,L3,L4,L5,L6,L7)
+
+ #define TESTLOG_WARN(L1,L2)
+ #define TESTLOG_WARN2(L1,L2,L3)
+ #define TESTLOG_WARN3(L1,L2,L3,L4)
+ #define TESTLOG_WARN4(L1,L2,L3,L4,L5)
+ #define TESTLOG_WARN5(L1,L2,L3,L4,L5,L6)
+ #define TESTLOG_WARN6(L1,L2,L3,L4,L5,L6,L7)
+#endif // ENABLE_LBS_TEST_TESTLOGGER
+
+#endif //LBS_TEST_LOGGER_MACROS_H
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/lbstestutils/inc/ctlbstimerutils.h Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,62 @@
+// 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 ctlbstimerutils.h
+//
+//
+
+
+
+/**
+ @file
+ @internalTechnology
+ @test
+*/
+
+#ifndef __CT_LBS_TIMER_UTILS_H__
+#define __CT_LBS_TIMER_UTILS_H__
+
+#include <e32base.h>
+
+class MT_LbsTimerUtilsObserver
+ {
+public:
+ virtual void HandleTimerL(TInt aTimerId, const TTime& aTargetTime) = 0;
+ };
+
+
+class CT_LbsTimerUtils : public CTimer
+ {
+public:
+ IMPORT_C static CT_LbsTimerUtils* NewL(MT_LbsTimerUtilsObserver* aObserver, TInt aTimerId);
+
+ IMPORT_C ~CT_LbsTimerUtils();
+
+ IMPORT_C void SetTimer(const TTimeIntervalMicroSeconds32 aPeriod);
+ IMPORT_C void SetTimer(const TTime& aUtcTargetTime);
+
+ IMPORT_C void CancelTimer();
+
+protected:
+ CT_LbsTimerUtils(MT_LbsTimerUtilsObserver* aObserver, TInt aTimerId);
+ void ConstructL();
+
+ void RunL();
+
+private:
+ MT_LbsTimerUtilsObserver* iObserver;
+ TInt iTimerId;
+ TTime iTargetTime;
+ };
+
+#endif //__CT_LBS_TIMER_UTILS_H__
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/lbstestutils/inc/tlbsutils.h Tue Nov 10 13:50:58 2009 +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__
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/lbstestutils/src/ctdumper.cpp Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,69 @@
+// Copyright (c) 2007-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:
+//
+
+#include <flogger.h>
+#include <ctdumper.h>
+
+const TInt KLbsDevLogMaxBufSize = 150;
+_LIT(KLbsDevLogFolder, "refFiles");
+_LIT(KLbsDevLogFile,"gpsUpdates.txt");
+
+
+/** Static function, overwrites de log file if it already exists.
+@internalTechnology
+@prototype
+*/
+EXPORT_C void CT_Dumper::OverWrite()
+ {
+ RFileLogger logger;
+ TInt err = logger.Connect();
+
+ if (err == KErrNone)
+ {
+ logger.CreateLog(KLbsDevLogFolder, KLbsDevLogFile, EFileLoggingModeOverwrite);
+ }
+
+ logger.Close();
+ }
+
+
+/** Static function, one parameter
+@param aFmt TDes string reference
+@internalTechnology
+@prototype
+*/
+EXPORT_C void CT_Dumper::Write(TRefByValue<const TDesC16> aFmt, ...)
+ {
+ RFileLogger logger;
+ TInt err = logger.Connect();
+
+ if (err == KErrNone)
+ {
+ VA_LIST list;
+ VA_START(list, aFmt);
+ TBuf16<KLbsDevLogMaxBufSize> strList;
+ strList.FormatList(aFmt, list);
+ VA_END(list);
+ TBuf16<KLbsDevLogMaxBufSize> txt;
+
+ txt.Append(strList);
+
+ logger.CreateLog(KLbsDevLogFolder, KLbsDevLogFile, EFileLoggingModeAppend);
+ logger.SetDateAndTime(EFalse, EFalse);
+ logger.Write(txt);
+ }
+
+ logger.Close();
+ }
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/lbstestutils/src/ctlbsagpshandler.cpp Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,170 @@
+// Copyright (c) 2007-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:
+// Implementation of Test Harness request handler component.
+//
+//
+
+
+#include <e32base.h>
+#include "ctlbsagpshandler.h"
+
+const TInt KBufferedMsgMaxCount = 6;
+
+CT_LbsAGpsHandler::CT_LbsAGpsHandler(MT_ResponseObserver* aObserver) :
+ CActive(EPriorityStandard),
+ iObserver(aObserver)
+ {
+ }
+
+CT_LbsAGpsHandler::~CT_LbsAGpsHandler()
+ {
+ Cancel();
+ iTHChannel.Close();
+ iMsgBuffer.ResetAndDestroy();
+ }
+
+EXPORT_C CT_LbsAGpsHandler* CT_LbsAGpsHandler::NewL(MT_ResponseObserver* aObserver)
+ {
+ CT_LbsAGpsHandler* self = new (ELeave) CT_LbsAGpsHandler(aObserver);
+ CleanupStack::PushL(self);
+ self->ConstructL();
+ CleanupStack::Pop(self);
+ return self;
+ }
+
+void CT_LbsAGpsHandler::ConstructL()
+ {
+ RT_LbsChannel::InitializeL(RT_LbsChannel::EChannelTH2TAGPS);
+ iMsgBuffer.ReserveL(KBufferedMsgMaxCount);
+ iTHChannel.OpenL(RT_LbsChannel::EChannelTH2TAGPS, *this);
+ CActiveScheduler::Add(this);
+ }
+
+EXPORT_C void CT_LbsAGpsHandler::SendRequestUpdateInitMsg(const TDesC& aConfigFileName,
+ const TDesC& aConfigSection)
+ {
+ TT_LbsAGpsRequestUpdateInitMsg* aMsg = new TT_LbsAGpsRequestUpdateInitMsg(aConfigFileName, aConfigSection);
+
+ BufferMessage(aMsg);
+ }
+
+EXPORT_C void CT_LbsAGpsHandler::SendRequestTimeOutMsg(const TTimeIntervalMicroSeconds& aTimeOut)
+ {
+ TT_LbsAGpsRequestTimeOut* aMsg = new TT_LbsAGpsRequestTimeOut(aTimeOut);
+
+ BufferMessage(aMsg);
+ }
+
+EXPORT_C void CT_LbsAGpsHandler::SendRequestSetAllModuleOptions()
+ {
+ TT_LbsAGpsRequestOptions* aMsg = new TT_LbsAGpsRequestOptions(ELbsHybridModuleOptions_SetAll);
+
+ BufferMessage(aMsg);
+ }
+
+EXPORT_C void CT_LbsAGpsHandler::SendRequestClearAllModuleOptions()
+ {
+ TT_LbsAGpsRequestOptions* aMsg = new TT_LbsAGpsRequestOptions(EHybridModuleOptions_ClearAll);
+
+ BufferMessage(aMsg);
+ }
+
+EXPORT_C void CT_LbsAGpsHandler::SendRequestModuleOption(TLbsHybridModuleOptions aOption, TBool aValue)
+ {
+ TT_LbsAGpsRequestOptions* aMsg = new TT_LbsAGpsRequestOptions(aOption, aValue);
+
+ BufferMessage(aMsg);
+ }
+
+EXPORT_C void CT_LbsAGpsHandler::SendRequestForcedUpdate()
+ {
+ TT_LbsAGpsRequestForcedUpdate* msg = new TT_LbsAGpsRequestForcedUpdate();
+
+ BufferMessage(msg);
+ }
+
+EXPORT_C void CT_LbsAGpsHandler::SendRequestError(TInt aError)
+ {
+ TT_LbsAGpsRequestError* aMsg = new TT_LbsAGpsRequestError(aError);
+
+ BufferMessage(aMsg);
+ }
+
+
+void CT_LbsAGpsHandler::RunL()
+ {
+ User::LeaveIfError(iStatus.Int());
+
+ if (iMsgBuffer.Count() > 0)
+ {
+ SendRequestMessage(iMsgBuffer[0]);
+ iMsgBuffer.Remove(0);
+ }
+ }
+
+void CT_LbsAGpsHandler::DoCancel()
+ {
+ iTHChannel.CancelSendMessageNotification();
+ }
+
+TInt CT_LbsAGpsHandler::RunError(TInt aError)
+ {
+ return aError;
+ }
+
+void CT_LbsAGpsHandler::SendRequestMessage(const TT_LbsMsgBase* aMessage)
+ {
+ iTHChannel.SendMessage(*aMessage, iStatus);
+ // The msg has now been sent to the channel. We can now delete it.
+ delete(aMessage);
+ SetActive();
+ }
+
+void CT_LbsAGpsHandler::BufferMessage(const TT_LbsMsgBase* aMessage)
+ {
+ if (!IsActive())
+ {
+ // The AO is not active, so there should be no buffered messages.
+ __ASSERT_DEBUG(iMsgBuffer.Count() == 0, User::Invariant());
+
+ // Immediately send the new message.
+ SendRequestMessage(aMessage);
+ }
+ else
+ {
+ __ASSERT_ALWAYS(iMsgBuffer.Count() < KBufferedMsgMaxCount, User::Invariant());
+
+ // Still waiting for acknowledgement that a previous message
+ // was read, so buffer this new message.
+ iMsgBuffer.Append(aMessage);
+ }
+ }
+
+void CT_LbsAGpsHandler::ProcessChannelMessage(RT_LbsChannel::TT_LbsChannelId /*aChannelId*/,
+ const TT_LbsMsgBase& aMessage)
+ {
+
+ switch (aMessage.Type())
+ {
+ case TT_LbsMsgBase::EModuleResponse:
+ {
+ const TT_LbsAGpsResponseMsg& msg = static_cast<const TT_LbsAGpsResponseMsg&>(aMessage);
+ iObserver->ProcessAGpsResponseMessage(msg.ResponseType());
+ break;
+ }
+ default:
+ //LBSLOG_ERR2(ELogP2, "Unexpected message type: %d \n", aMessage.Type());
+ break;
+ }
+ }
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/lbstestutils/src/ctlbsagpsmoduleeventlistener.cpp Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,67 @@
+// Copyright (c) 2007-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:
+//
+
+
+#include "ctlbsagpsmoduleeventlistener.h"
+
+EXPORT_C CT_AgpsModuleEventListener* CT_AgpsModuleEventListener::NewL(MT_AgpsModuleEventHandler& aHandler)
+ {
+ CT_AgpsModuleEventListener* self = new(ELeave) CT_AgpsModuleEventListener(aHandler);
+ CleanupStack::PushL(self);
+ self->ConstructL();
+ CleanupStack::Pop(self);
+ return self;
+ }
+
+EXPORT_C CT_AgpsModuleEventListener::~CT_AgpsModuleEventListener()
+ {
+ Cancel();
+ iModeChangesProperty.Close();
+ }
+
+CT_AgpsModuleEventListener::CT_AgpsModuleEventListener(MT_AgpsModuleEventHandler& aHandler)
+ : CActive(EPriorityHigh), iHandler(aHandler)
+ {
+ CActiveScheduler::Add(this);
+ }
+
+void CT_AgpsModuleEventListener::ConstructL()
+ {
+ User::LeaveIfError(iModeChangesProperty.Attach(KUidSystemCategory, ELbsTestAGpsModuleModeChanges));
+ iModeChangesProperty.Subscribe(iStatus);
+ SetActive();
+ }
+
+void CT_AgpsModuleEventListener::RunL()
+ {
+ TInt err = iStatus.Int();
+ iModeChangesProperty.Subscribe(iStatus);
+ SetActive();
+ if(KErrNone == err)
+ {
+ TLbsGpsOptionsArray options;
+ TPckg<TLbsGpsOptionsArray> pckgOptions(options);
+ err = iModeChangesProperty.Get(pckgOptions);
+ if(KErrNone == err)
+ {
+ iHandler.OnSetGpsOptions(options);
+ }
+ }
+ }
+
+void CT_AgpsModuleEventListener::DoCancel()
+ {
+ iModeChangesProperty.Cancel();
+ }
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/lbstestutils/src/ctlbsasyncwaiter.cpp Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,129 @@
+// 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 ctlbsasyncwaiter.cpp
+//
+//
+
+// User includes
+#include "ctlbsasyncwaiter.h"
+
+
+/**
+ Function : NewL
+ Description : Creates an object of CT_LbsAsyncWaiter
+ @internalTechnology
+ @param :
+ @return : N/A
+ @precondition : none
+ @postcondition : none
+*/
+EXPORT_C CT_LbsAsyncWaiter* CT_LbsAsyncWaiter::NewL()
+ {
+ CT_LbsAsyncWaiter* self = new(ELeave) CT_LbsAsyncWaiter();
+ return self;
+ }
+
+
+/**
+ Function : CT_LbsAsyncWaiter
+ Description : Constructor
+ @internalTechnology
+ @param :
+ @return : N/A
+ @precondition : none
+ @postcondition : none
+*/
+CT_LbsAsyncWaiter::CT_LbsAsyncWaiter() : CActive(EPriorityStandard)
+ {
+ CActiveScheduler::Add(this);
+ }
+
+
+/**
+ Function : CT_LbsAsyncWaiter
+ Description : Destructor
+ @internalTechnology
+ @param :
+ @return : N/A
+ @precondition : none
+ @postcondition : none
+*/
+CT_LbsAsyncWaiter::~CT_LbsAsyncWaiter()
+ {
+ Cancel();
+ }
+
+
+/**
+ Function : StartAndWait
+ Description : Starts the Active scheduler
+ @internalTechnology
+ @param :
+ @return : N/A
+ @precondition : none
+ @postcondition : none
+*/
+EXPORT_C void CT_LbsAsyncWaiter::StartAndWait()
+ {
+ SetActive();
+ iError = iStatus.Int();
+ CActiveScheduler::Start();
+ }
+
+
+/**
+ Function : Result
+ Description : Gives the error
+ @internalTechnology
+ @param :
+ @return : N/A
+ @precondition : none
+ @postcondition : none
+*/
+EXPORT_C TInt CT_LbsAsyncWaiter::Result() const
+ {
+ return iError;
+ }
+
+
+/**
+ Function : RunL
+ Description :
+ @internalTechnology
+ @param :
+ @return : N/A
+ @precondition : none
+ @postcondition : none
+*/
+void CT_LbsAsyncWaiter::RunL()
+ {
+ iError = iStatus.Int();
+ CActiveScheduler::Stop();
+ }
+
+
+/**
+ Function : DoCancel
+ Description :
+ @internalTechnology
+ @param :
+ @return : N/A
+ @precondition : none
+ @postcondition : none
+*/
+void CT_LbsAsyncWaiter::DoCancel()
+ {
+ iError = KErrCancel;
+ CActiveScheduler::Stop();
+ }
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/lbstestutils/src/ctlbsconfigreader.cpp Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,1027 @@
+// 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 ctlbsconfigreader.cpp
+// This is the Cpp file which contains the ini file configuration reader classes
+//
+//
+
+// User includes
+#include "ctlbsconfigreader.h"
+
+// Epoc includes
+#include <f32file.h>
+
+// Lbs includes
+#include <lbsclasstypes.h>
+#include <lbssatellite.h>
+
+// Literals Used
+_LIT8(KNotANumber, "nan");
+
+
+CConfigReaderBase::CConfigReaderBase(const TDesC& aConfigFileName, const TDesC& aConfigSection) : iConfigFileName(aConfigFileName), iConfigSection(aConfigSection)
+ {
+ }
+
+
+CConfigReaderBase::~CConfigReaderBase()
+ {
+ }
+
+
+void CConfigReaderBase::AppendFieldChar(TUint aChar)
+ {
+ if (iSentence.Length() >= iSentence.MaxLength())
+ {
+ return;
+ }
+
+ iSentence.Append(aChar);
+
+ // If aChar is not a field delimiter then just add it to buffer and return
+ if (aChar != ',' && aChar != '*')
+ {
+ iFieldLength++;
+ return;
+ }
+
+ // Got a field delimiter increase the number of fields
+ // aChar == ',' || aChar == '*'
+
+ TPtrC8 thisField = iSentence.Mid(iFieldStart, iFieldLength);
+ iFields[iNumFields].Set(thisField);
+ iNumFields++;
+
+ // Next field starts here
+ iFieldStart = iSentence.Length();
+ iFieldLength = 0;
+ }
+
+
+void CConfigReaderBase::ProcessStringL(const TDesC8& aData)
+ {
+ TInt length = aData.Length();
+
+ for (TInt index = 0; index < length; index++)
+ {
+ TUint ch = aData[index];
+
+ switch(iReadState)
+ {
+ // Keep reading until a section is found.
+ case EStartSection:
+ {
+ if (ch == '[')
+ {
+ iReadSection.SetLength(0);
+ iReadState = EProcessSection;
+ }
+ break;
+ }
+
+ // Found a section, keep reading until end of section found.
+ case EProcessSection:
+ {
+ // End of section, check if it's ours.
+ if (ch == ']')
+ {
+ // Need to convert from TBuf8 to TBuf for the comparision.
+ TBuf<KMaxSentence> cmpSection;
+ cmpSection.Copy(iReadSection);
+
+ // Not our section.
+ if (iConfigSection.Compare(cmpSection) != 0)
+ {
+ iReadState = EStartSection;
+ }
+
+ // Is our section.
+ else
+ {
+ iReadState = EStartSentence;
+ }
+ }
+ else
+ {
+ iReadSection.Append(ch);
+ }
+ break;
+ }
+
+ case EStartSentence:
+ {
+ //
+ if (ch == '$')
+ {
+ iReadState = EProcessSentence;
+ iSentence.SetLength(0);
+ iNumFields = 0;
+ iFieldStart = 0;
+ iFieldLength = 0;
+ for (TInt i = 0; i < KMaxFields; i++)
+ {
+ iFields[i].Set(KNullDesC8);
+ }
+ }
+
+ // If we find a section we know to stop reading sentences for our section
+ // and we let the other section be handled, but it will not match ours.
+ else if (ch == '[')
+ {
+ iReadSection.SetLength(0);
+ iReadState = EProcessSection;
+ }
+
+ break;
+ }
+
+ case EProcessSentence:
+ {
+ AppendFieldChar(ch); // calling this don't you end up with a * in the field, does it matter
+
+ if (ch == '*')
+ {
+ iReadState = EStartSentence;
+ HandleSentenceL();
+ }
+ break;
+ }
+ }
+ }
+ }
+
+
+void CConfigReaderBase::ExtractValueL(const TPtrC8& aField, TInt& aValue)
+ {
+ if (aField.Length() != 0)
+ {
+ TLex8 lex(aField);
+ TInt err = lex.Val(aValue);
+ User::LeaveIfError(err);
+ }
+ }
+
+
+void CConfigReaderBase::ExtractValueL(const TPtrC8& aField, TReal32& aValue)
+ {
+ TRealX nan;
+ nan.SetNaN();
+
+ aValue = nan;
+
+ if (aField.Length() != 0)
+ {
+ if (aField.CompareF(KNotANumber))
+ {
+ TLex8 lex(aField);
+ TInt err = lex.Val(aValue);
+ User::LeaveIfError(err);
+ }
+ }
+ }
+
+
+void CConfigReaderBase::ExtractValueL(const TPtrC8& aField, TReal64& aValue)
+ {
+ TRealX nan;
+ nan.SetNaN();
+
+ aValue = nan;
+
+ if (aField.Length() != 0)
+ {
+ if (aField.CompareF(KNotANumber))
+ {
+ TLex8 lex(aField);
+ TInt err = lex.Val(aValue);
+ User::LeaveIfError(err);
+ }
+ }
+ }
+
+/*
+void CConfigReaderBase::ExtractDegreesL(const TPtrC8& aField, TReal64& aDegrees)
+ {
+ TRealX nan;
+ nan.SetNaN();
+
+ aDegrees = nan;
+
+ if (aField.Length() != 0)
+ {
+ TLex8 lex(aField);
+ TInt err = lex.Val(aDegrees);
+ User::LeaveIfError(err);
+
+ ConvertDecimalMinutesToDecimalDegrees(aDegrees);
+ }
+ }
+*/
+
+
+void CConfigReaderBase::ProcessL()
+ {
+ if (iConfigFileName.Length() == 0)
+ {
+ User::LeaveIfError(KErrArgument);
+ }
+
+ RFs fs;
+ User::LeaveIfError(fs.Connect());
+ CleanupClosePushL(fs);
+
+ RFile iniFile;
+
+ User::LeaveIfError(iniFile.Open(fs, iConfigFileName, EFileRead|EFileShareReadersOnly));
+
+ CleanupClosePushL(iniFile);
+
+ TBuf8<KMaxIniFileBuffer> buf;
+
+ // Loop until EOF.
+ User::LeaveIfError(iniFile.Read(buf));
+ while (buf.Length() > 0)
+ {
+ // Process data read from file.
+ ProcessStringL(buf);
+
+ // Refresh buffer from file.
+ User::LeaveIfError(iniFile.Read(buf));
+ }
+
+ CleanupStack::PopAndDestroy(2, &fs); // iniFile, fs.
+ }
+
+
+
+
+
+
+
+/*********************** Update Info Reader ************************/
+
+CUpdateConfigReader* CUpdateConfigReader::NewL(const TDesC &aConfigFileName, const TDesC& aConfigSection, RPointerArray<TLbsModuleUpdateItem>& aUpdateArr)
+ {
+ return new (ELeave) CUpdateConfigReader(aConfigFileName, aConfigSection, aUpdateArr);
+ }
+
+
+CUpdateConfigReader::CUpdateConfigReader(const TDesC &aConfigFileName, const TDesC& aConfigSection, RPointerArray<TLbsModuleUpdateItem>& aUpdateArr) : CConfigReaderBase(aConfigFileName, aConfigSection), iUpdateArr(aUpdateArr)
+ {
+ }
+
+
+void CUpdateConfigReader::HandleSentenceL()
+ {
+ // Not a update sentence, ignore all other valid sentences.
+ if ( (iNumFields == EUpdateType) || (iFields[EUpdateType].Compare(_L8("update")) != 0) )
+ {
+ return;
+ }
+
+ // Determine the number of times to repeat the update.
+ TInt repeat = 1;
+
+ if (iFields[EUpdateRepeat].Length() != 0)
+ {
+ ExtractValueL(iFields[1], repeat);
+ }
+
+ // Determine the number of measurements for each update.
+ TInt numOfMeasurements = 0;
+
+ if (iFields[ENumOfMeasurements].Length() != 0)
+ {
+ ExtractValueL(iFields[ENumOfMeasurements], numOfMeasurements); // make this member, then set up this + error in the default + extract maybe
+ }
+
+ // Add repeat items to the pos info array.
+ for (TInt i = 0; i < repeat; i++)
+ {
+ TPositionGpsMeasurementInfo measureInfo;
+ TPositionGpsMeasurementData measureData;
+
+
+ // Alloc a update item.
+ iUpdate = new(ELeave) TLbsModuleUpdateItem();
+
+
+ // Set measurement info.
+ for (TInt j = 0; j < numOfMeasurements; j++)
+ {
+ measureData.SetSatelliteId(j + 1);
+ measureData.SetCarrierNoiseRatio((j+1) + 1);
+ measureData.SetDoppler((j+1) + 2);
+ measureData.SetWholeGpsChips((j+1) + 3);
+ measureData.SetFractionalGpsChips((j+1) + 4);
+ measureData.SetMultiPathIndicator(TPositionGpsMeasurementData::EMultiPathLow);
+ measureData.SetPseudoRangeRmsError((j+1) + 5);
+
+ User::LeaveIfError(measureInfo.AppendMeasurementData(measureData));
+ }
+ measureInfo.SetGpsTimeOfWeek(i + 1000);
+ iUpdate->SetMeasurement(measureInfo);
+
+
+ // Set position update.
+ // Optional fields are present fill out pos info based on them.
+ if (iFields[3].Length() != 0)
+ {
+ DefaultData(); // This will ensure the pos info items are set to a default value for any incomplete sentences.
+ ExtractDataL();
+ }
+
+ // Otherwise use default values.
+ else
+ {
+ DefaultData();
+ }
+
+
+ // Optional error value is present. Set update error.
+ TInt updateErr = KErrNone;
+ if (iFields[EUpdateErr].Length() != 0)
+ {
+ ExtractValueL(iFields[EUpdateErr], updateErr);
+ }
+ iUpdate->SetError(updateErr);
+
+ // Optional time delay(could be negative)
+ TInt updateDelay = 0;
+ if (iFields[EUpdateDelay].Length() != 0)
+ {
+ ExtractValueL(iFields[EUpdateDelay], updateDelay);
+ }
+ iUpdate->SetDelay(updateDelay);
+
+
+ // Add to array, and reset pointer.
+ iUpdateArr.AppendL(iUpdate);
+ iUpdate = NULL;
+ }
+ }
+
+
+void CUpdateConfigReader::ExtractDataL()
+ {
+ // Access the position info from the update structure.
+ TPositionSatelliteInfo posInfo = iUpdate->Position();
+ TPosition position;
+
+ // Process fields.
+ TReal64 latitude;
+ TReal64 longitude;
+ TReal32 altitude;
+ TReal32 horzAccuracy;
+ TReal32 vertAccuracy;
+
+ ExtractValueL(iFields[EPosLatitude], latitude);
+ ExtractValueL(iFields[EPosLongitude], longitude);
+ ExtractValueL(iFields[EPosAltitude], altitude);
+ ExtractValueL(iFields[EPosHorzAccuracy], horzAccuracy);
+ ExtractValueL(iFields[EPosVertAccuracy], vertAccuracy);
+
+ // Set values.
+ position.SetCoordinate(latitude, longitude, altitude);
+ position.SetAccuracy(horzAccuracy, vertAccuracy);
+ position.SetCurrentTime();
+
+ posInfo.SetPosition(position);
+
+ iUpdate->SetPosition(posInfo);
+ }
+
+
+void CUpdateConfigReader::DefaultData()
+ {
+ // Access the position info from the update structure.
+ TPositionSatelliteInfo posSatalliteInfo = iUpdate->Position();
+
+
+ // Fill out default position data.
+ TPosition position;
+
+ position.SetCoordinate(DEFAULT_NOTIFY_POS_UPDATE_LATITUDE, DEFAULT_NOTIFY_POS_UPDATE_LONGITUDE, DEFAULT_NOTIFY_POS_UPDATE_ALTITUDE);
+ position.SetAccuracy(DEFAULT_NOTIFY_POS_UPDATE_HORIZONTAL_ACCURACY, DEFAULT_NOTIFY_POS_UPDATE_VERTICAL_ACCURACY);
+ position.SetCurrentTime();
+
+ posSatalliteInfo.SetPosition(position);
+
+
+ // Fill out default course data.
+ TCourse course;
+
+ course.SetSpeed(DEFAULT_NOTIFY_POS_UPDATE_SPEED);
+ course.SetHeading(DEFAULT_NOTIFY_POS_UPDATE_HEADING);
+ course.SetSpeedAccuracy(DEFAULT_NOTIFY_POS_UPDATE_SPEED_ACCURACY);
+ course.SetHeadingAccuracy(DEFAULT_NOTIFY_POS_UPDATE_HEADING_ACCURACY);
+
+ posSatalliteInfo.SetCourse(course);
+
+
+ // Fill out default satalliteInfo.
+ TSatelliteData satellite;
+
+ satellite.SetSatelliteId(DEFAULT_NOTIFY_POS_UPDATE_SATELLITE_ID1);
+ satellite.SetAzimuth(DEFAULT_NOTIFY_POS_UPDATE_AZIMUTH1);
+ satellite.SetElevation(DEFAULT_NOTIFY_POS_UPDATE_ELEVATION1);
+ satellite.SetIsUsed(DEFAULT_NOTIFY_POS_UPDATE_IS_USED1);
+ satellite.SetSignalStrength(DEFAULT_NOTIFY_POS_UPDATE_SIGNAL_STRENGTH1);
+
+ posSatalliteInfo.AppendSatelliteData(satellite);
+
+ satellite.SetSatelliteId(DEFAULT_NOTIFY_POS_UPDATE_SATELLITE_ID2);
+ satellite.SetAzimuth(DEFAULT_NOTIFY_POS_UPDATE_AZIMUTH2);
+ satellite.SetElevation(DEFAULT_NOTIFY_POS_UPDATE_ELEVATION2);
+ satellite.SetIsUsed(DEFAULT_NOTIFY_POS_UPDATE_IS_USED2);
+ satellite.SetSignalStrength(DEFAULT_NOTIFY_POS_UPDATE_SIGNAL_STRENGTH2);
+
+ posSatalliteInfo.AppendSatelliteData(satellite);
+
+
+ iUpdate->SetPosition(posSatalliteInfo);
+ }
+
+
+
+
+
+
+/*********************** Position Info Reader ************************/
+
+CPosInfoConfigReader* CPosInfoConfigReader::NewL(const TDesC &aConfigFileName, const TDesC& aConfigSection, RPointerArray<TAny>& aPosInfoArr)
+ {
+ return new (ELeave) CPosInfoConfigReader(aConfigFileName, aConfigSection, aPosInfoArr);
+ }
+
+
+CPosInfoConfigReader::CPosInfoConfigReader(const TDesC &aConfigFileName, const TDesC& aConfigSection, RPointerArray<TAny>& aPosInfoArr) : CConfigReaderBase(aConfigFileName, aConfigSection), iPosInfoArr(aPosInfoArr)
+ {
+ }
+
+
+void CPosInfoConfigReader::HandleSentenceL()
+ {
+ // Not a position info sentence, ignore all other valid sentences.
+ if ( (iNumFields == 0) || (
+ (iFields[0].Compare(_L8("position")) != 0) &&
+ (iFields[0].Compare(_L8("course")) != 0) &&
+ (iFields[0].Compare(_L8("satellite")) != 0) ))
+ {
+ return;
+ }
+
+ // Determine the number of times to repeat the pos info.
+ TInt repeat = 1;
+
+ if (iFields[1].Length() != 0)
+ {
+ ExtractValueL(iFields[1], repeat);
+ }
+
+ // Add repeat items to the pos info array.
+ for (TInt i = 0; i < repeat; i++)
+ {
+ // Alloc a Satellite type info.
+ iPosInfo = new(ELeave) TPositionSatelliteInfo();
+
+ // Optional fields are present fill out pos info based on them.
+ if (iFields[2].Length() != 0)
+ {
+ DefaultData(); // This will ensure the pos info items are set to a default value for any incomplete sentences.
+ ExtractDataL();
+ }
+
+ // Otherwise use default values.
+ else
+ {
+ DefaultData();
+ }
+
+ // Add to array, and reset pointer.
+ User::LeaveIfError(iPosInfoArr.Append(iPosInfo));
+ iPosInfo = NULL;
+ }
+ }
+
+// i think we will always have to call default to ensure we set things for missing fields
+void CPosInfoConfigReader::ExtractDataL()
+ {
+ // TODO: we need to support something like this, ie $position,1,10,2.3* which is lat, long only
+ // I think it will because extract value deals with empty strings
+ if (iPosInfo->PositionClassType() & EPositionInfoClass)
+ {
+ TPosition position;
+ TPositionInfo& posInfo = static_cast<TPositionInfo&>(*iPosInfo);
+
+ TReal64 latitude;
+ TReal64 longitude;
+ TReal32 altitude;
+ // TODO: TUid datum;
+ TReal32 horzAccuracy;
+ TReal32 vertAccuracy;
+
+ ExtractValueL(iFields[EPosLatitude], latitude);
+ ExtractValueL(iFields[EPosLongitude], longitude);
+ ExtractValueL(iFields[EPosAltitude], altitude);
+ // TODO: ExtractUidL() not sure what datum is
+ ExtractValueL(iFields[EPosHorzAccuracy], horzAccuracy);
+ ExtractValueL(iFields[EPosVertAccuracy], vertAccuracy);
+
+ position.SetCoordinate(latitude, longitude, altitude);
+ position.SetAccuracy(horzAccuracy, vertAccuracy);
+ position.SetCurrentTime();
+
+ posInfo.SetPosition(position);
+ }
+
+ if (iPosInfo->PositionClassType() & EPositionCourseInfoClass)
+ {
+ TCourse course;
+ TPositionCourseInfo& posCourseInfo = static_cast<TPositionCourseInfo&>(*iPosInfo);
+
+ TReal32 speed;
+ TReal32 heading;
+ TReal32 speedAccuracy;
+ TReal32 headingAccuracy;
+
+ ExtractValueL(iFields[EPosSpeed], speed);
+ ExtractValueL(iFields[EPosHeading], heading);
+ ExtractValueL(iFields[EPosSpeedAccuracy], speedAccuracy);
+ ExtractValueL(iFields[EPosHeadingAccuracy], headingAccuracy);
+
+ course.SetSpeed(speed);
+ course.SetHeading(heading);
+ course.SetSpeedAccuracy(speedAccuracy);
+ course.SetHeadingAccuracy(headingAccuracy);
+
+ posCourseInfo.SetCourse(course);
+ }
+
+ if (iPosInfo->PositionClassType() & EPositionSatelliteInfoClass)
+ {
+ // TODO satellite info
+ }
+ }
+
+
+void CPosInfoConfigReader::DefaultData()
+ {
+
+ if (iPosInfo->PositionClassType() & EPositionInfoClass)
+ {
+ TPosition position;
+ TPositionInfo& posInfo = static_cast<TPositionInfo&>(*iPosInfo);
+
+ position.SetCoordinate(DEFAULT_NOTIFY_POS_UPDATE_LATITUDE, DEFAULT_NOTIFY_POS_UPDATE_LONGITUDE, DEFAULT_NOTIFY_POS_UPDATE_ALTITUDE);
+ position.SetAccuracy(DEFAULT_NOTIFY_POS_UPDATE_HORIZONTAL_ACCURACY, DEFAULT_NOTIFY_POS_UPDATE_VERTICAL_ACCURACY);
+ position.SetCurrentTime();
+
+ posInfo.SetPosition(position);
+ }
+
+ if (iPosInfo->PositionClassType() & EPositionCourseInfoClass)
+ {
+ TCourse course;
+ TPositionCourseInfo& posCourseInfo = static_cast<TPositionCourseInfo&>(*iPosInfo);
+
+ course.SetSpeed(DEFAULT_NOTIFY_POS_UPDATE_SPEED);
+ course.SetHeading(DEFAULT_NOTIFY_POS_UPDATE_HEADING);
+ course.SetSpeedAccuracy(DEFAULT_NOTIFY_POS_UPDATE_SPEED_ACCURACY);
+ course.SetHeadingAccuracy(DEFAULT_NOTIFY_POS_UPDATE_HEADING_ACCURACY);
+
+ posCourseInfo.SetCourse(course);
+ }
+
+ if (iPosInfo->PositionClassType() & EPositionSatelliteInfoClass)
+ {
+ TSatelliteData satellite;
+ TPositionSatelliteInfo& posSatalliteInfo = static_cast<TPositionSatelliteInfo&>(*iPosInfo);
+
+ satellite.SetSatelliteId(DEFAULT_NOTIFY_POS_UPDATE_SATELLITE_ID1);
+ satellite.SetAzimuth(DEFAULT_NOTIFY_POS_UPDATE_AZIMUTH1);
+ satellite.SetElevation(DEFAULT_NOTIFY_POS_UPDATE_ELEVATION1);
+ satellite.SetIsUsed(DEFAULT_NOTIFY_POS_UPDATE_IS_USED1);
+ satellite.SetSignalStrength(DEFAULT_NOTIFY_POS_UPDATE_SIGNAL_STRENGTH1);
+
+ posSatalliteInfo.AppendSatelliteData(satellite);
+
+ satellite.SetSatelliteId(DEFAULT_NOTIFY_POS_UPDATE_SATELLITE_ID2);
+ satellite.SetAzimuth(DEFAULT_NOTIFY_POS_UPDATE_AZIMUTH2);
+ satellite.SetElevation(DEFAULT_NOTIFY_POS_UPDATE_ELEVATION2);
+ satellite.SetIsUsed(DEFAULT_NOTIFY_POS_UPDATE_IS_USED2);
+ satellite.SetSignalStrength(DEFAULT_NOTIFY_POS_UPDATE_SIGNAL_STRENGTH2);
+
+ posSatalliteInfo.AppendSatelliteData(satellite);
+ }
+
+/* For extended tests when/if we have them.
+ if (infoBase.PositionClassType() & EPositionClassTestExtension)
+ {
+ TExtPosInfo* genInfo = reinterpret_cast<TExtPosInfo*>(buffer);
+
+ genInfo->iGalaxy = DEFAULT_NOTIFY_POS_UPDATE_EXT_GALAXY;
+ genInfo->iSolarSystem = DEFAULT_NOTIFY_POS_UPDATE_EXT_SOLARSYS;
+ genInfo->iStarDate = DEFAULT_NOTIFY_POS_UPDATE_EXT_STARDATE;
+ }
+*/
+ }
+
+
+/*********************** Module Status Reader ************************/
+
+CModuleStatusConfigReader* CModuleStatusConfigReader::NewL(const TDesC &aConfigFileName, const TDesC& aConfigSection, TPositionModuleStatus& aModuleStatus)
+ {
+ return new (ELeave) CModuleStatusConfigReader(aConfigFileName, aConfigSection, aModuleStatus);
+ }
+
+
+CModuleStatusConfigReader::CModuleStatusConfigReader(const TDesC &aConfigFileName, const TDesC& aConfigSection, TPositionModuleStatus& aModuleStatus) : CConfigReaderBase(aConfigFileName, aConfigSection), iModuleStatus(aModuleStatus)
+ {
+ }
+
+
+void CModuleStatusConfigReader::ExtractValueDevice(const TPtrC8& aField, TPositionModuleStatus::TDeviceStatus& aValue)
+ {
+ // Set device status.
+ if (aField.Length() != 0)
+ {
+ if (aField.Compare(_L8("device_error")) == 0)
+ {
+ aValue = TPositionModuleStatus::EDeviceError;
+ }
+
+ else if (aField.Compare(_L8("device_disable")) == 0)
+ {
+ aValue = TPositionModuleStatus::EDeviceDisabled;
+ }
+
+ else if (aField.Compare(_L8("device_inactive")) == 0)
+ {
+ aValue = TPositionModuleStatus::EDeviceInactive;
+ }
+
+ else if (aField.Compare(_L8("device_initalising")) == 0)
+ {
+ aValue = TPositionModuleStatus::EDeviceInitialising;
+ }
+
+ else if (aField.Compare(_L8("device_standby")) == 0)
+ {
+ aValue = TPositionModuleStatus::EDeviceStandBy;
+ }
+
+ else if (aField.Compare(_L8("device_ready")) == 0)
+ {
+ aValue = TPositionModuleStatus::EDeviceReady;
+ }
+
+ else if (aField.Compare(_L8("device_active")) == 0)
+ {
+ aValue = TPositionModuleStatus::EDeviceActive;
+ }
+ }
+ }
+
+
+void CModuleStatusConfigReader::ExtractValueDataQuality(const TPtrC8& aField, TPositionModuleStatus::TDataQualityStatus& aValue)
+ {
+ // Set data quality.
+ if (aField.Length() != 0)
+ {
+ if (aField.Compare(_L8("data_quality_loss")) == 0)
+ {
+ aValue = TPositionModuleStatus::EDataQualityLoss;
+ }
+
+ else if (aField.Compare(_L8("data_quality_partial")) == 0)
+ {
+ aValue = TPositionModuleStatus::EDataQualityPartial;
+ }
+
+ else if (aField.Compare(_L8("data_quality_normal")) == 0)
+ {
+ aValue = TPositionModuleStatus::EDataQualityNormal;
+ }
+ }
+ }
+
+
+void CModuleStatusConfigReader::HandleSentenceL()
+ {
+ // Not a 'updateoptions' sentence, ignore all other valid sentences.
+ if ( (iNumFields == 0) || (iFields[EModuleStatusType].Compare(_L8("modstatus")) != 0) )
+ {
+ return;
+ }
+
+ // Set default values for any fields not present in the sentence.
+ DefaultData();
+
+ // Set values from set fields in the sentence.
+ if (iNumFields == 3)
+ {
+ ExtractDataL();
+ }
+ }
+
+
+void CModuleStatusConfigReader::ExtractDataL()
+ {
+
+ TPositionModuleStatus::TDeviceStatus device;
+ TPositionModuleStatus::TDataQualityStatus dataQuality;
+
+ ExtractValueDevice(iFields[EModuleStatusDevice], device);
+ ExtractValueDataQuality(iFields[EModuleStatusDataQuality], dataQuality);
+
+ iModuleStatus.SetDeviceStatus(device);
+ iModuleStatus.SetDataQualityStatus(dataQuality);
+ }
+
+
+void CModuleStatusConfigReader::DefaultData()
+ {
+ iModuleStatus.SetDeviceStatus(TPositionModuleStatus::EDeviceReady);
+ iModuleStatus.SetDataQualityStatus(TPositionModuleStatus::EDataQualityNormal);
+ }
+
+
+
+
+/*********************** Update Options Reader ************************/
+
+CUpdateOptsConfigReader* CUpdateOptsConfigReader::NewL(const TDesC &aConfigFileName, const TDesC& aConfigSection, TPositionUpdateOptions& aUpdateOpts)
+ {
+ return new (ELeave) CUpdateOptsConfigReader(aConfigFileName, aConfigSection, aUpdateOpts);
+ }
+
+
+CUpdateOptsConfigReader::CUpdateOptsConfigReader(const TDesC &aConfigFileName, const TDesC& aConfigSection, TPositionUpdateOptions& aUpdateOpts) : CConfigReaderBase(aConfigFileName, aConfigSection), iUpdateOpts(aUpdateOpts)
+ {
+
+ }
+
+
+void CUpdateOptsConfigReader::ExtractValueL(const TPtrC8& aField, TTimeIntervalMicroSeconds& aValue)
+ {
+ if (aField.Length() != 0)
+ {
+ TLex8 lex(aField);
+ TInt64 value;
+ TInt err = lex.Val(value);
+ User::LeaveIfError(err);
+ aValue = value;
+ }
+ }
+
+
+void CUpdateOptsConfigReader::ExtractValue(const TPtrC8& aField, TBool& aValue)
+ {
+ aValue = EFalse;
+ if (aField.Length() != 0)
+ {
+ if (aField.Compare(_L8("true")) == 0)
+ {
+ aValue = ETrue;
+ }
+ }
+ }
+
+
+void CUpdateOptsConfigReader::HandleSentenceL()
+ {
+ // Not a 'updateoptions' sentence, ignore all other valid sentences.
+ if ( (iNumFields == 0) || (iFields[EUpdateOptsType].Compare(_L8("updateoptions")) != 0) )
+ {
+ return;
+ }
+
+ // Set default values for any fields not present in the sentence.
+ DefaultData();
+
+ // Set values from set fields in the sentence.
+ if (iNumFields == 5)
+ {
+ ExtractDataL();
+ }
+ }
+
+
+void CUpdateOptsConfigReader::ExtractDataL()
+ {
+ TTimeIntervalMicroSeconds interval;
+ TTimeIntervalMicroSeconds timeout;
+ TTimeIntervalMicroSeconds maxage;
+ TBool partialUpdates;
+
+ ExtractValueL(iFields[EUpdateOptsInterval], interval);
+ ExtractValueL(iFields[EUpdateOptsTimeOut], timeout);
+ ExtractValueL(iFields[EUpdateOptsMaxAge], maxage);
+ ExtractValue(iFields[EUpdateOptsPartialUpdates], partialUpdates);
+
+ iUpdateOpts.SetUpdateInterval(interval);
+ iUpdateOpts.SetUpdateTimeOut(timeout);
+ iUpdateOpts.SetMaxUpdateAge(maxage);
+ iUpdateOpts.SetAcceptPartialUpdates(partialUpdates);
+ }
+
+
+void CUpdateOptsConfigReader::DefaultData()
+ {
+ iUpdateOpts.SetUpdateInterval(0);
+ iUpdateOpts.SetUpdateTimeOut(0);
+ iUpdateOpts.SetMaxUpdateAge(0);
+ iUpdateOpts.SetAcceptPartialUpdates(EFalse);
+ }
+
+
+
+
+CAgpsModuleModesConfigReader* CAgpsModuleModesConfigReader::NewL(const TDesC &aConfigFileName, const TDesC& aConfigSection,
+ RPointerArray<TLbsGpsOptions>& aModuleModes)
+ {
+ return new (ELeave) CAgpsModuleModesConfigReader(aConfigFileName, aConfigSection, aModuleModes);
+ }
+CAgpsModuleModesConfigReader::CAgpsModuleModesConfigReader(const TDesC &aConfigFileName, const TDesC& aConfigSection,
+ RPointerArray<TLbsGpsOptions>& aModuleModes)
+ : CConfigReaderBase(aConfigFileName, aConfigSection), iModuleModes(aModuleModes)
+ {
+ }
+
+void CAgpsModuleModesConfigReader::HandleSentenceL()
+ {
+ // Not a 'modulemodes' sentence, ignore all other valid sentences.
+ if ( (iNumFields == 0) || (iFields[EModuleModesType].Compare(_L8("modulemodes")) != 0) )
+ {
+ return;
+ }
+
+ // Set default values for any fields not present in the sentence.
+ DefaultData();
+
+ // Set values from set fields in the sentence.
+ if (iNumFields > 1)
+ {
+ ExtractDataL();
+ }
+ }
+
+void CAgpsModuleModesConfigReader::DefaultData()
+/**
+ * Does nothing since there is no default data to be set for the expected gps mode
+ */
+ {
+ }
+
+void CAgpsModuleModesConfigReader::ExtractDataL()
+ {
+ TInt gpsModeInt;
+ ExtractValueL(iFields[EGpsModeField], gpsModeInt);
+ CLbsAdmin::TGpsMode gpsMode(static_cast<CLbsAdmin::TGpsMode>(gpsModeInt));
+
+ if(iNumFields == EGpsModeField+1)
+ { // there is no options array
+ TLbsGpsOptions* gpsOptions = new(ELeave) TLbsGpsOptions;
+ gpsOptions->SetGpsMode(gpsMode);
+ iModuleModes.AppendL(gpsOptions);
+ }
+ else
+ {
+ TLbsGpsOptionsArray* gpsOptionsArray = new(ELeave) TLbsGpsOptionsArray;
+ gpsOptionsArray->SetGpsMode(gpsMode);
+
+ for(TInt index = EBegginingOfGpsOptionsArray; index < iNumFields; ++index)
+ {
+ TLbsGpsOptionsItem optionsItem;
+ TInt posUpdateTypeInt;
+ ExtractValueL(iFields[index], posUpdateTypeInt);
+ TLbsGpsOptionsItem::TPosUpdateType posUpdateType(static_cast<TLbsGpsOptionsItem::TPosUpdateType>(posUpdateTypeInt));
+ optionsItem.SetLocUpdateType(posUpdateType);
+ gpsOptionsArray->AppendOptionItem(optionsItem);
+ }
+
+ iModuleModes.AppendL(gpsOptionsArray);
+ }
+ }
+
+
+CClientDetailsConfigReader* CClientDetailsConfigReader::NewL(const TDesC &aConfigFileName, const TDesC& aConfigSection,
+ RArray<TCTClientDetails>& aClientDetailsArray)
+ {
+ return new (ELeave) CClientDetailsConfigReader(aConfigFileName, aConfigSection, aClientDetailsArray);
+ }
+CClientDetailsConfigReader::CClientDetailsConfigReader(const TDesC &aConfigFileName, const TDesC& aConfigSection,
+ RArray<TCTClientDetails>& aClientDetailsArray)
+ : CConfigReaderBase(aConfigFileName, aConfigSection),
+ iClientDetailsArray(aClientDetailsArray)
+ {
+ }
+
+void CClientDetailsConfigReader::HandleSentenceL()
+ {
+ // Not a 'clientdetails' sentence, ignore all other valid sentences.
+ if ( (iNumFields == 0) || (iFields[0].Compare(_L8("clientdetails")) != 0) )
+ {
+ return;
+ }
+
+ ExtractDataL();
+ }
+
+void CClientDetailsConfigReader::DefaultData()
+/**
+ * Does nothing since there is no default data to be set for the expected gps mode
+ */
+ {
+ }
+
+void CClientDetailsConfigReader::ExtractDataL()
+ {
+ TCTClientDetails clientDetails;
+ TInt value;
+
+ if(iNumFields > 1)
+ { // initial delay - after which session ID it should start - default is 0
+ ExtractValueL(iFields[1], value);
+ clientDetails.iSessionIdDelay = value;
+ }
+
+ if(iNumFields > 2)
+ { // initial delay - after which step in the session it should start - default is 0
+ ExtractValueL(iFields[2], value);
+ clientDetails.iSessionStepDelay = value;
+ }
+
+ if(iNumFields > 3)
+ { // number of NPUDs issued by the client - default is 1
+ ExtractValueL(iFields[3], value);
+ clientDetails.iNumberOfNPUDs = value > 0 ? value : 1;
+ }
+
+ if(iNumFields > 4)
+ { // the update interval - default is 0 (no tracking)
+ ExtractValueL(iFields[4], value);
+ clientDetails.iUpdateOptions.SetUpdateInterval(value);
+ }
+
+ if(clientDetails.iNumberOfNPUDs == 1 || clientDetails.iUpdateOptions.UpdateInterval() == 0)
+ { // if one of the params indicates no tracking then set the others to say the same
+ clientDetails.iUpdateOptions.SetUpdateInterval(0);
+ }
+
+ if(iNumFields > 5)
+ { // the max fix time - default is 0 (no timeout)
+ ExtractValueL(iFields[5], value);
+ clientDetails.iUpdateOptions.SetUpdateTimeOut(value);
+ }
+
+ if(iNumFields > 6)
+ { // the max update age - default is 0
+ ExtractValueL(iFields[6], value);
+ clientDetails.iUpdateOptions.SetMaxUpdateAge(value);
+ }
+
+ if(iNumFields > 7)
+ { // if partial updates should be accepted - default is EFalse
+ if (iFields[7].Compare(_L8("true")) == 0)
+ {
+ clientDetails.iUpdateOptions.SetAcceptPartialUpdates(ETrue);
+ }
+ }
+
+ if(iNumFields > 8)
+ {
+ { // if partial updates should be accepted - default is EFalse
+ if (iFields[8].Compare(_L8("cancel")) == 0)
+ {
+ clientDetails.iCancelRequest = ETrue;
+ }
+ }
+ }
+
+ if(iNumFields > 9)
+ { // delay after which step in the session the last request should be cancelled - default is 0
+ ExtractValueL(iFields[9], value);
+ clientDetails.iSessionIdCancel = value;
+ }
+
+ if(iNumFields > 10)
+ { // delay after which session ID the last request should be cancelled - default is 0
+ ExtractValueL(iFields[10], value);
+ clientDetails.iSessionStepCancel = value;
+ }
+
+ iClientDetailsArray.AppendL(clientDetails);
+ }
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/lbstestutils/src/ctlbstestlogger.cpp Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,273 @@
+// 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:
+// lbstestlogger.cpp
+// System
+//
+//
+
+#include <e32base.h>
+#include <e32debug.h>
+#include <flogger.h>
+#include <f32file.h>
+
+// Component
+#include "ctlbstestlogger.h"
+
+const TInt KLbsDevLogMaxBufSize = 256;
+_LIT(KTimeFormat, "%H:%T:%S.%C");
+_LIT(KLogPath, "\\logs\\LbsTestLogs\\");
+_LIT(KLbsDevLogFolder, "LbsTestLogs");
+_LIT(KLbsDevLogFile,"lbstest.txt");
+_LIT(KLbsDevLogError, "Error: ");
+_LIT(KLbsDevLogWarning, "Warning: ");
+_LIT(KLbsDevLogSep," | ");
+_LIT(KLbsDevLog, "LbsDevLog");
+
+
+const TInt KLbsHexDumpWidth=16;
+_LIT(KLbsFirstFormatString,"%04x : ");
+_LIT(KLbsSecondFormatString,"%02x ");
+_LIT(KLbsThirdFormatString,"%c");
+_LIT(KLbsThreeSpaces," ");
+_LIT(KLbsTwoSpaces," ");
+const TText KLbsFullStopChar='.';
+
+//-----------------------------------------------------------------------------
+// LbsTestLogger
+//-----------------------------------------------------------------------------
+
+void LbsTestLogger::CreateLogDir()
+ {
+ TInt err;
+
+ // Create the directory
+ RFs fs;
+ err = fs.Connect();
+ if(KErrNone == err)
+ {
+ err = fs.MkDirAll(KLogPath);
+ fs.Close();
+ }
+ }
+
+
+/** Static function, one parameter
+@param aPrior Log entry priority
+@param aFmt TDes string reference
+@InternalTechnology
+@prototype
+*/
+void LbsTestLogger::Write(TLogType aType, TLogPriority aPrior, TRefByValue<const TDesC16> aFmt, ...)
+ {
+ RFileLogger logger;
+ TInt err = logger.Connect();
+
+ if (err == KErrNone)
+ {
+ VA_LIST list;
+ VA_START(list, aFmt);
+ TBuf16<KLbsDevLogMaxBufSize> strList;
+ strList.FormatList(aFmt, list);
+ VA_END(list);
+ TBuf16<KLbsDevLogMaxBufSize> txt;
+
+ CreateLogTxt(aType, aPrior, txt);
+ txt.Append(strList.Left(KLbsDevLogMaxBufSize - txt.Length()));
+
+ CreateLogDir();
+
+ logger.CreateLog(KLbsDevLogFolder, KLbsDevLogFile, EFileLoggingModeAppend);
+ logger.SetDateAndTime(EFalse, EFalse);
+ logger.Write(txt);
+
+ }
+
+ logger.Close();
+ }
+
+/** Static function to dump the hex data
+@param aPrior Log entry priority
+@param aPtr TUnit8 pointer to hex data
+@param aLen length of hex data
+@InternalTechnology
+@prototype
+*/
+void LbsTestLogger::HexDump(TLogPriority aPrior, const TUint8 *aPtr, TInt aLen)
+ {
+ if (aPtr==NULL) // nothing to do
+ return;
+
+ RFileLogger logger;
+ TInt err = logger.Connect();
+ CreateLogDir();
+ logger.CreateLog(KLbsDevLogFolder, KLbsDevLogFile, EFileLoggingModeAppend);
+ logger.SetDateAndTime(EFalse, EFalse);
+
+ // based on RFileLogger
+ TBuf<KLbsDevLogMaxBufSize> buf;
+ TBuf8<KLbsDevLogMaxBufSize> temp;
+ TInt i=0;
+ TBuf8<KLbsDevLogMaxBufSize> prefix;
+ CreateLogTxt(ELogNormal, aPrior, prefix);
+
+ while (aLen>0)
+ {
+ TInt n=(aLen>KLbsHexDumpWidth ? KLbsHexDumpWidth : aLen);
+ buf.Copy(prefix);
+ buf.AppendFormat(KLbsFirstFormatString,i);
+
+ TInt j;
+ for (j=0; j<n; j++)
+ buf.AppendFormat(KLbsSecondFormatString,aPtr[i+j]);
+
+ while (j++<KLbsHexDumpWidth)
+ buf.Append(KLbsThreeSpaces);
+
+ buf.Append(KLbsTwoSpaces);
+ for (j=0; j<n; j++)
+ buf.AppendFormat(KLbsThirdFormatString,(aPtr[i+j]<32 || aPtr[i+j]>126) ? KLbsFullStopChar : aPtr[i+j]);
+
+ logger.Write(buf);
+
+ buf.SetLength(0);
+ temp.SetLength(0);
+ aLen-=n;
+ i+=n;
+ }
+
+ logger.Close();
+ }
+
+/** private function, create common log text
+@param aPrior Log entry priority
+@param aBuf The log prefix buffer
+@InternalTechnology
+@prototype
+*/
+void LbsTestLogger::CreateLogTxt(TLogType aType, TLogPriority aPrior, TDes16& aBuf)
+ {
+ TTime currentTime;
+ currentTime.UniversalTime();
+ TBuf16<32> cTimeStr;
+ TInt err = KErrNone;
+ TRAP(err, currentTime.FormatL(cTimeStr, KTimeFormat);)
+ if(err)
+ User::Panic(KLbsDevLog, err);
+
+ TFileName dirName = RProcess().FileName();
+ TInt16 pos = dirName.LocateReverse('\\') + 1;
+ TPtr16 fileName = dirName.MidTPtr(pos);
+ TUint64 procId = RProcess().Id().Id();
+
+ aBuf.Append(cTimeStr);
+ aBuf.Append(KLbsDevLogSep);
+
+ aBuf.Append(fileName);
+ aBuf.Append(KLbsDevLogSep);
+
+ //aBuf.AppendFormat(_L16("%LX"),procId);
+ //aBuf.Append(KLbsDevLogSep);
+
+ aBuf.AppendFormat(_L16("P%d"),aPrior);
+ aBuf.Append(KLbsDevLogSep);
+
+ if (aType == ELogError)
+ {
+ aBuf.Append(KLbsDevLogError);
+ }
+ else if (aType == ELogWarning)
+ {
+ aBuf.Append(KLbsDevLogWarning);
+ }
+ }
+
+
+/** Static function, one parameter
+@param aPrior Log entry priority
+@param aFmt Log entry
+@InternalTechnology
+@prototype
+*/
+void LbsTestLogger::Write(TLogType aType, TLogPriority aPrior, TRefByValue<const TDesC8> aFmt, ...)
+ {
+ RFileLogger logger;
+ TInt err = logger.Connect();
+
+ if (err == KErrNone)
+ {
+ VA_LIST list;
+ VA_START(list, aFmt);
+ TBuf8<KLbsDevLogMaxBufSize> strList;
+ strList.FormatList(aFmt, list);
+ VA_END(list);
+
+ TBuf8<KLbsDevLogMaxBufSize> txt;
+ CreateLogTxt(aType, aPrior, txt);
+ txt.Append(strList.Left(KLbsDevLogMaxBufSize - txt.Length()));
+
+ CreateLogDir();
+ logger.CreateLog(KLbsDevLogFolder, KLbsDevLogFile, EFileLoggingModeAppend);
+ logger.SetDateAndTime(EFalse, EFalse);
+ logger.Write(txt);
+
+ }
+
+ logger.Close();
+ }
+
+/** private function, create common log text
+@param aPrior Log entry priority
+@param aBuf The log prefix buffer
+@InternalTechnology
+@prototype
+*/
+void LbsTestLogger::CreateLogTxt(TLogType aType, TLogPriority aPrior, TDes8& aBuf)
+ {
+ TTime currentTime;
+ currentTime.UniversalTime();
+ TBuf<32> cTimeStr;
+ TInt err = KErrNone;
+ TRAP(err, currentTime.FormatL(cTimeStr, KTimeFormat);)
+ if(err)
+ User::Panic(KLbsDevLog, err);
+
+ TBuf8<32> cTimeStr8;
+ cTimeStr8.Copy(cTimeStr);
+
+ TFileName dirName = RProcess().FileName();
+ TInt pos = dirName.LocateReverse('\\') + 1;
+ TPtr fileName = dirName.MidTPtr(pos);
+ TUint64 procId = RProcess().Id().Id();
+
+ aBuf.Append(cTimeStr8);
+ aBuf.Append(KLbsDevLogSep);
+
+ aBuf.Append(fileName);
+ aBuf.Append(KLbsDevLogSep);
+
+ //aBuf.AppendFormat(_L8("%LX"),procId);
+ //aBuf.Append(KLbsDevLogSep);
+
+ aBuf.AppendFormat(_L8("P%d"),aPrior);
+ aBuf.Append(KLbsDevLogSep);
+
+ if (aType == ELogError)
+ {
+ aBuf.Append(KLbsDevLogError);
+ }
+ else if (aType == ELogWarning)
+ {
+ aBuf.Append(KLbsDevLogWarning);
+ }
+ }
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/lbstestutils/src/ctlbstimerutils.cpp Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,154 @@
+// 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 ctlbstimerutils.cpp
+//
+//
+
+
+#include "ctlbstimerutils.h"
+
+
+/**
+ Function : NewL
+ Description : It performs the two construction and returns an object
+ of type CT_MsgTimerUtils
+ @internalTechnology
+ @param :
+ @return : N/A
+ @precondition : none
+ @postcondition : none
+*/
+EXPORT_C CT_LbsTimerUtils* CT_LbsTimerUtils::NewL(MT_LbsTimerUtilsObserver* aObserver, TInt aTimerId)
+ {
+ CT_LbsTimerUtils* self = new(ELeave) CT_LbsTimerUtils(aObserver, aTimerId);
+
+ CleanupStack::PushL(self);
+ self->ConstructL();
+ CleanupStack::Pop();
+
+ return self;
+ }
+
+
+/**
+ Function : CT_MsgTimerUtils
+ Description : Constructor
+ @internalTechnology
+ @param :
+ @return : N/A
+ @precondition : none
+ @postcondition : none
+*/
+CT_LbsTimerUtils::CT_LbsTimerUtils(MT_LbsTimerUtilsObserver* aObserver, TInt aTimerId)
+ :
+ CTimer(CTimer::EPriorityHigh),
+ iObserver(aObserver),
+ iTimerId(aTimerId)
+ {
+ CActiveScheduler::Add(this);
+ }
+
+
+/**
+ Function : ~CT_MsgTimerUtils
+ Description : Destructor
+ @internalTechnology
+ @param :
+ @return : N/A
+ @precondition : none
+ @postcondition : none
+*/
+EXPORT_C CT_LbsTimerUtils::~CT_LbsTimerUtils()
+ {
+ Cancel();
+ }
+
+void CT_LbsTimerUtils::ConstructL()
+ {
+ CTimer::ConstructL();
+ }
+
+
+/**
+ Function : After
+ Description : Calls the After function CTimer for the given number of secs
+ @internalTechnology
+ @param :
+ @return : N/A
+ @precondition : none
+ @postcondition : none
+*/
+EXPORT_C void CT_LbsTimerUtils::SetTimer(const TTimeIntervalMicroSeconds32 aPeriod)
+{
+ iTargetTime = 0;
+ HighRes(aPeriod);
+}
+
+
+EXPORT_C void CT_LbsTimerUtils::SetTimer(const TTime& aUtcTargetTime)
+ {
+ Cancel();
+
+ iTargetTime = aUtcTargetTime;
+
+ TTime zeroTime(0);
+
+ if (aUtcTargetTime == zeroTime)
+ {
+ return;
+ }
+
+ TTime timeNow;
+ timeNow.UniversalTime();
+
+ TTimeIntervalMicroSeconds delay(0);
+
+ if (timeNow < aUtcTargetTime)
+ {
+ delay = aUtcTargetTime.MicroSecondsFrom(timeNow);
+ }
+
+ TInt delay32 = static_cast<TInt>(I64LOW(delay.Int64()));
+
+ if (delay32 < 0)
+ {
+ delay32 = 0;
+ }
+
+ TTimeIntervalMicroSeconds32 time32 = TTimeIntervalMicroSeconds32(delay32);
+
+ HighRes(time32);
+ }
+
+EXPORT_C void CT_LbsTimerUtils::CancelTimer()
+ {
+ Cancel();
+ }
+
+/**
+ Function : RunL
+ Description : Gives the status of the operation
+ @internalTechnology
+ @param :
+ @return : N/A
+ @precondition : none
+ @postcondition : none
+*/
+void CT_LbsTimerUtils::RunL()
+ {
+ if (iObserver)
+ {
+ iObserver->HandleTimerL(iTimerId, iTargetTime);
+ }
+ }
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/lbstestutils/src/tlbsutils.cpp Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,1318 @@
+// 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 CT_Utils.cpp
+// This is the Cpp file which contains the utility functions common across the servers
+//
+//
+
+// User includes
+#include "tlbsutils.h"
+#include "ctlbsconfigreader.h"
+#include "ctlbsasyncwaiter.h"
+#include "ctlbstestloggermacros.h"
+
+// Epoc includes
+#include <f32file.h>
+#include <e32math.h>
+#include <e32property.h>
+
+// Lbs includes
+#include <lbsclasstypes.h>
+#include <lbssatellite.h>
+
+
+// defines
+#define BAD_MODULE_ID 0x87654321
+
+
+/**
+*/
+EXPORT_C TLbsModuleUpdateItem::TLbsModuleUpdateItem()
+ {
+ }
+
+
+/**
+*/
+EXPORT_C const TPositionSatelliteInfo& TLbsModuleUpdateItem::Position() const
+ {
+ return iPosition;
+ }
+
+/**
+*/
+EXPORT_C void TLbsModuleUpdateItem::SetPosition(const TPositionSatelliteInfo& aPosition)
+ {
+ iPosition = aPosition;
+ }
+
+
+/**
+*/
+EXPORT_C const TPositionGpsMeasurementInfo& TLbsModuleUpdateItem::Measurement() const
+ {
+ return iMeasurement;
+ }
+
+/**
+*/
+EXPORT_C void TLbsModuleUpdateItem::SetMeasurement(const TPositionGpsMeasurementInfo& aMeasurement)
+ {
+ iMeasurement = aMeasurement;
+ }
+
+
+/**
+*/
+EXPORT_C TInt TLbsModuleUpdateItem::Error() const
+ {
+ return iError;
+ }
+
+/**
+*/
+EXPORT_C void TLbsModuleUpdateItem::SetDelay(TInt aDelay)
+ {
+ iDelay = aDelay;
+ }
+
+/**
+*/
+EXPORT_C TInt TLbsModuleUpdateItem::Delay() const
+ {
+ return iDelay;
+ }
+
+/**
+*/
+EXPORT_C void TLbsModuleUpdateItem::SetError(TInt aError)
+ {
+ iError = aError;
+ }
+
+
+
+EXPORT_C T_LbsUtils::T_LbsUtils()
+/** Constructor.
+*/
+ {
+ }
+
+
+EXPORT_C T_LbsUtils::~T_LbsUtils()
+/** Destructor.
+*/
+ {
+ }
+
+
+/*EXPORT_C static*/ /*void GetDefault_ModuleStatusInfo(TModuleConfiguredStatus& aStatusInfo)
+ {
+ (void)aStatusInfo;
+ }
+*/
+
+
+EXPORT_C void T_LbsUtils::CreateTestPropertiesL()
+/** Creates the test properties for the test module. To allow data to be passed between
+ test steps and the test module.
+*/
+ {
+ const TSecurityPolicy KReadPolicy(ECapability_None);
+ const TSecurityPolicy KWritePolicy(ECapabilityWriteDeviceData);
+
+
+ // Create the test module data bus properties.
+ TInt err;
+
+ // Data to the test module.
+ err = RProperty::Define(KUidSystemCategory, ELbsTestAGpsModuleIn, RProperty::ELargeByteArray, KReadPolicy, KWritePolicy, sizeof(TModuleDataIn));
+ if ((KErrNone != err) && (KErrAlreadyExists != err))
+ {
+ User::LeaveIfError(err);
+ }
+
+ // Data from the test module.
+ err = RProperty::Define(KUidSystemCategory, ELbsTestAGpsModuleOut, RProperty::ELargeByteArray, KReadPolicy, KWritePolicy, sizeof(TModuleDataOut));
+ if ((KErrNone != err) && (KErrAlreadyExists != err))
+ {
+ User::LeaveIfError(err);
+ }
+
+ // Data from the test clock plugin.
+ err = RProperty::Define(KUidSystemCategory, ELbsTestClockPluginOut, RProperty::ELargeByteArray, KReadPolicy, KWritePolicy, sizeof(TClockPluginDataOut));
+ if ((KErrNone != err) && (KErrAlreadyExists != err))
+ {
+ User::LeaveIfError(err);
+ }
+
+ // Creating the property for allowing the AGPS module to report when the mode it's running in changes
+ err = RProperty::Define(KUidSystemCategory, ELbsTestAGpsModuleModeChanges, RProperty::ELargeByteArray, KReadPolicy, KWritePolicy, sizeof(TLbsGpsOptionsArray));
+ if ((KErrNone != err) && (KErrAlreadyExists != err))
+ {
+ User::LeaveIfError(err);
+ }
+
+ // Create other test properties here also - just update the TLbsTestPropertyKeys enum don't add extra Categories.
+
+ }
+
+
+EXPORT_C void T_LbsUtils::GetConfigured_PosInfosL(const TDesC& aConfigFileName, const TDesC& aConfigSection, RPointerArray<TAny>& aPosInfoArr)
+/** Fills a position info array with values read from a configuration ini file.
+
+@param aConfigFileName The name of the ini file to read. If the file name is empty (0 length) then
+ the array will contain a single pos info item with default values.
+@param aConfigSection The section within the ini file to read data from.
+@param aPosInfoArr The pos info array to which the items are added. The array will cleared of
+ existing items.
+*/
+ {
+ // Clear array.
+ ResetAndDestroy_PosInfoArr(aPosInfoArr);
+
+ // Check for config file, if not present create a single default TPositionInfo.
+ if (aConfigFileName.Length() == 0)
+ {
+ TPositionSatelliteInfo* posInfo = new(ELeave) TPositionSatelliteInfo();
+ TPosition position;
+
+ position.SetCoordinate(DEFAULT_NOTIFY_POS_UPDATE_LATITUDE, DEFAULT_NOTIFY_POS_UPDATE_LONGITUDE, DEFAULT_NOTIFY_POS_UPDATE_ALTITUDE);
+ position.SetAccuracy(DEFAULT_NOTIFY_POS_UPDATE_HORIZONTAL_ACCURACY, DEFAULT_NOTIFY_POS_UPDATE_VERTICAL_ACCURACY);
+ position.SetCurrentTime();
+
+ posInfo->SetPosition(position);
+
+ User::LeaveIfError(aPosInfoArr.Append(posInfo));
+ }
+
+ else
+ {
+ CPosInfoConfigReader* reader;
+
+ reader = CPosInfoConfigReader::NewL(aConfigFileName, aConfigSection, aPosInfoArr);
+ CleanupStack::PushL(reader);
+
+ reader->ProcessL();
+
+ CleanupStack::PopAndDestroy(reader);
+ }
+ }
+
+EXPORT_C void T_LbsUtils::GetConfigured_UpdateArrayL(const TDesC& aConfigFileName, const TDesC& aConfigSection, RPointerArray<TLbsModuleUpdateItem>& aUpdateArr)
+/** Fills an updata array structure with values read from a configuration ini file.
+
+@param aConfigFileName The name of the ini file to read. If the file name is empty (0 length) then
+ default values will be used.
+@param aConfigSection The section within the ini file to read data from.
+@param aUpdateArr The update array to be populated.
+*/
+ {
+ // Use default values if file name not given.
+ if (aConfigFileName.Length() == 0)
+ {
+ // I am not sure we want to fill in the array with default values - ??
+ }
+
+ else
+ {
+ CUpdateConfigReader* reader;
+
+ reader = CUpdateConfigReader::NewL(aConfigFileName, aConfigSection, aUpdateArr);
+ CleanupStack::PushL(reader);
+
+ reader->ProcessL();
+
+ CleanupStack::PopAndDestroy(reader);
+ }
+ }
+
+
+// don't think we need this...
+EXPORT_C void T_LbsUtils::GetConfigured_ModuleStatusL(const TDesC& aConfigFileName, const TDesC& aConfigSection, TPositionModuleStatus& aModuleStatus)
+ {
+ // Use default values if file name not given.
+ if (aConfigFileName.Length() == 0)
+ {
+ aModuleStatus.SetDeviceStatus(TPositionModuleStatus::EDeviceReady);
+ aModuleStatus.SetDataQualityStatus(TPositionModuleStatus::EDataQualityNormal);
+ }
+ else
+ {
+ CModuleStatusConfigReader* reader;
+
+ reader = CModuleStatusConfigReader::NewL(aConfigFileName, aConfigSection, aModuleStatus);
+ CleanupStack::PushL(reader);
+
+ reader->ProcessL();
+
+ CleanupStack::PopAndDestroy(reader);
+ }
+ }
+
+
+EXPORT_C void T_LbsUtils::GetConfigured_ModuleUpdateOptionsL(const TDesC& aConfigFileName, const TDesC& aConfigSection, TPositionUpdateOptions& aUpdateOpts)
+/** Fills a module updata options class/structure with values read from a configuration ini file.
+
+@param aConfigFileName The name of the ini file to read. If the file name is empty (0 length) then
+ default values will be used.
+@param aConfigSection The section within the ini file to read data from.
+@param aUpdateOpts The modified update options structure.
+*/
+ {
+ // Use default values if file name not given.
+ if (aConfigFileName.Length() == 0)
+ {
+ aUpdateOpts.SetUpdateInterval(0);
+ aUpdateOpts.SetUpdateTimeOut(0);
+ aUpdateOpts.SetMaxUpdateAge(0);
+ aUpdateOpts.SetAcceptPartialUpdates(EFalse);
+ }
+
+ else
+ {
+ CUpdateOptsConfigReader* reader;
+
+ reader = CUpdateOptsConfigReader::NewL(aConfigFileName, aConfigSection, aUpdateOpts);
+ CleanupStack::PushL(reader);
+
+ reader->ProcessL();
+
+ CleanupStack::PopAndDestroy(reader);
+ }
+ }
+
+EXPORT_C void T_LbsUtils::GetConfigured_ClientDetailsL(const TDesC& aConfigFileName, const TDesC& aConfigSection,
+ RArray<TCTClientDetails>& aClientDetailsArray)
+/** Gets the delays for each client with values read from a configuration ini file.
+
+@param aConfigFileName The name of the ini file to read. If the file name is empty (0 length) then
+ default values will be used.
+@param aConfigSection The section within the ini file to read data from.
+@param aClientDelayArray The array of client delays.
+*/
+ {
+ // Use default values if file name not given.
+ if (aConfigFileName.Length() == 0)
+ { // by default have one client
+ TCTClientDetails client;
+ aClientDetailsArray.AppendL(client);
+ return;
+ }
+
+ else
+ {
+ CClientDetailsConfigReader* reader;
+ reader = CClientDetailsConfigReader::NewL(aConfigFileName, aConfigSection, aClientDetailsArray);
+ CleanupStack::PushL(reader);
+
+ reader->ProcessL();
+
+ CleanupStack::PopAndDestroy(reader);
+ if(aClientDetailsArray.Count() == 0)
+ { // by default have one client
+ TCTClientDetails client;
+ aClientDetailsArray.AppendL(client);
+ }
+ }
+ }
+
+EXPORT_C void T_LbsUtils::GetExpected_ModuleModes(const TDesC& aConfigFileName, const TDesC& aConfigSection, RPointerArray<TLbsGpsOptions>& aModuleModes)
+ {
+ if (aConfigFileName.Length() == 0)
+ {
+ return;
+ }
+
+ CAgpsModuleModesConfigReader* reader;
+ reader = CAgpsModuleModesConfigReader::NewL(aConfigFileName, aConfigSection, aModuleModes);
+ CleanupStack::PushL(reader);
+ reader->ProcessL();
+ CleanupStack::PopAndDestroy(reader);
+ }
+
+
+EXPORT_C void T_LbsUtils::NotifyModuleOfConfigChangeL(const TModuleDataIn& aModuleDataIn)
+/** Notify the module of a configuration change.
+
+Used when the test harness has read a configuration file and wishes to notify the test module
+that it should also do a read of the configuration file. To ensure both the test harness and
+the test module are using the same reference data.
+
+The ELbsTestAGpsModuleIn property is used to pass the ini file and section names to the
+test module. The ELbsTestAGpsModuleOut is then used to receive an response from the test module.
+
+@param aConfigFileName The file name string to send to the test mdoule.
+@param aConfigSection The ini section name string to send to the test module.
+*/
+ {
+ // Ask to be notified when the module receives the ini file re-read request.
+
+ // Attach and subscribe to listen for data bus updates. Use the async waiter to process
+ // the update.
+ RProperty modDataOutProperty;
+ User::LeaveIfError(modDataOutProperty.Attach(KUidSystemCategory, ELbsTestAGpsModuleOut));
+
+ CT_LbsAsyncWaiter* waiter = CT_LbsAsyncWaiter::NewL();
+ CleanupStack::PushL(waiter);
+
+ modDataOutProperty.Subscribe(waiter->iStatus);
+
+
+ // Publish the file and section names to the module, to inform the module it has to
+ // carry out a re-read of the ini file.
+ TPckgBuf<TModuleDataIn> modDataInBuf;
+ TModuleDataIn& modDataIn = modDataInBuf();
+
+ // Copy across all the data items.
+ modDataIn.iRequestType = aModuleDataIn.iRequestType;
+ modDataIn.iConfigFileName = aModuleDataIn.iConfigFileName;
+ modDataIn.iConfigSection = aModuleDataIn.iConfigSection;
+ modDataIn.iAssDataEventType = aModuleDataIn.iAssDataEventType;
+ modDataIn.iAssDataTestMode = aModuleDataIn.iAssDataTestMode;
+ modDataIn.iKickOffEventType = aModuleDataIn.iKickOffEventType;
+ modDataIn.iTimeOut = aModuleDataIn.iTimeOut;
+ modDataIn.iError = aModuleDataIn.iError;
+ modDataIn.iTimeStampOffset = aModuleDataIn.iTimeStampOffset;
+ modDataIn.iOptionsChangeReportMode = aModuleDataIn.iOptionsChangeReportMode;
+
+ User::LeaveIfError(RProperty::Set(KUidSystemCategory, ELbsTestAGpsModuleIn, modDataInBuf));
+
+ TBool noResponse = ETrue;
+
+ // Wait for the notification from the test module.
+ while(noResponse)
+ {
+ waiter->StartAndWait();
+ User::LeaveIfError(waiter->Result());
+
+ // Now ensure the notification response was good.
+ TModuleDataOut modDataOut;
+ TPckg<TModuleDataOut> modDataOutPckg(modDataOut);
+
+ User::LeaveIfError(modDataOutProperty.Get(modDataOutPckg));
+
+ if ((TModuleDataOut::EModuleResponse == modDataOut.iRequestType) && (TModuleDataOut::EModuleResponseOk == modDataOut.iResponse))
+ {
+ noResponse = EFalse;
+ }
+ }
+
+ CleanupStack::PopAndDestroy(waiter);
+ }
+
+
+EXPORT_C void T_LbsUtils::WaitForModuleToRequestAssistanceDataL()
+/** Wait for notification that the test AGPS module as requested assistance data.
+
+ Blocking function used to determine when the test module has requested assistance data as part of its location update.
+*/
+ {
+ RProperty modDataOutProperty;
+ User::LeaveIfError(modDataOutProperty.Attach(KUidSystemCategory, ELbsTestAGpsModuleOut));
+
+ CT_LbsAsyncWaiter* waiter = CT_LbsAsyncWaiter::NewL();
+ CleanupStack::PushL(waiter);
+
+ modDataOutProperty.Subscribe(waiter->iStatus);
+
+ // Wait for the notification from the test module.
+ waiter->StartAndWait();
+ User::LeaveIfError(waiter->Result());
+
+ // Ensure the correct response is given.
+ TModuleDataOut modDataOut;
+ TPckg<TModuleDataOut> modDataOutPckg(modDataOut);
+
+ User::LeaveIfError(modDataOutProperty.Get(modDataOutPckg));
+
+ if (TModuleDataOut::EModuleAssDataRequestedOk != modDataOut.iResponse)
+ {
+ User::LeaveIfError(KErrArgument);
+ }
+
+ CleanupStack::PopAndDestroy(waiter);
+ }
+
+EXPORT_C TBool T_LbsUtils::Compare_PosInfo(const TPositionInfoBase& aPosInfoSideA, const TPositionInfoBase& aPosInfoSideB)
+/** Compare two position info structures. Ensure all fields match excatly.
+
+@param aPosInfoSideA The first structure to compare.
+@param aPosInfoSideB The second structure to compare.
+@return ETrue if both structure match excatly else EFalse.
+*/
+ {
+ return Compare_PosInfo(aPosInfoSideA, aPosInfoSideB, EExactAccuracy);
+ }
+
+
+EXPORT_C TBool T_LbsUtils::Compare_PosInfo(const TPositionInfoBase& aPosInfoSideA, const TPositionInfoBase& aPosInfoSideB, TComparisonAccuracyType aCmpAccuracy)
+ {
+ // TODO compare base class items, such as module id, position mode, etc.
+
+ TUint32 typeA = aPosInfoSideA.PositionClassType();
+ TUint32 typeB = aPosInfoSideB.PositionClassType();
+
+ // Compare TPositionInfo type items.
+ if(typeA & typeB & EPositionInfoClass)
+ {
+ TESTLOG(ELogP1, "T_LbsUtils::Compare_PosInfo() Both positions are of type EPositionInfoClass");
+ const TPositionInfo& posInfoSideA = reinterpret_cast<const TPositionInfo&>(aPosInfoSideA);
+ const TPositionInfo& posInfoSideB = reinterpret_cast<const TPositionInfo&>(aPosInfoSideB);
+
+ TPosition posSideA;
+ TPosition posSideB;
+ posInfoSideA.GetPosition(posSideA);
+ posInfoSideB.GetPosition(posSideB);
+
+ // Carry out an exact check when comparing items.
+ if (EExactAccuracy == aCmpAccuracy)
+ {
+ TESTLOG(ELogP1, "T_LbsUtils::Compare_PosInfo() Comparing positions for exact match");
+ // Compare latitude.
+ if (Math::IsNaN(posSideA.Latitude()) && Math::IsNaN(posSideB.Latitude()))
+ ;
+ else if (posSideA.Latitude() != posSideB.Latitude())
+ {
+ TESTLOG(ELogP1, "T_LbsUtils::Compare_PosInfo() Positions don't match!");
+ TESTLOG3(ELogP1, "Latitudes %d and %d respectively", posSideA.Latitude(), posSideB.Latitude());
+ return EFalse;
+ }
+
+ // Compare longitude.
+ if (Math::IsNaN(posSideA.Longitude()) && Math::IsNaN(posSideB.Longitude()))
+ ;
+ else if (posSideA.Longitude() != posSideB.Longitude())
+ {
+ TESTLOG(ELogP1, "T_LbsUtils::Compare_PosInfo() Positions don't match!");
+ TESTLOG3(ELogP1, "Longitudes %d and %d respectively", posSideA.Longitude(), posSideB.Longitude());
+ return EFalse;
+ }
+
+ // Compare altitude.
+ if (Math::IsNaN(posSideA.Altitude()) && Math::IsNaN(posSideB.Altitude()))
+ ;
+ else if (posSideA.Altitude() != posSideB.Altitude())
+ {
+ TESTLOG(ELogP1, "T_LbsUtils::Compare_PosInfo() Positions don't match!");
+ TESTLOG3(ELogP1, "Altitudes %d and %d respectively", posSideA.Altitude(), posSideB.Altitude());
+ return EFalse;
+ }
+
+ // Compare datum.
+ if (posSideA.Datum() != posSideB.Datum())
+ {
+ TESTLOG(ELogP1, "T_LbsUtils::Compare_PosInfo() Positions don't match!");
+ TESTLOG3(ELogP1, "Datums %d and %d respectively", posSideA.Datum(), posSideB.Datum());
+ return EFalse;
+ }
+
+ // Compare horizontal accuracy.
+ if (Math::IsNaN(posSideA.HorizontalAccuracy()) && Math::IsNaN(posSideB.HorizontalAccuracy()))
+ ;
+ else if (posSideA.HorizontalAccuracy() != posSideB.HorizontalAccuracy())
+ {
+ TESTLOG(ELogP1, "T_LbsUtils::Compare_PosInfo() Positions don't match!");
+ TESTLOG3(ELogP1, "Horizontal Accuracies %d and %d respectively", posSideA.HorizontalAccuracy(), posSideB.HorizontalAccuracy());
+ return EFalse;
+ }
+
+ // Compare vertical accuracy.
+ if (Math::IsNaN(posSideA.VerticalAccuracy()) && Math::IsNaN(posSideB.VerticalAccuracy()))
+ ;
+ else if (posSideA.VerticalAccuracy() != posSideB.VerticalAccuracy())
+ {
+ TESTLOG(ELogP1, "T_LbsUtils::Compare_PosInfo() Positions don't match!");
+ TESTLOG3(ELogP1, "Vertical Accuracies %d and %d respectively", posSideA.VerticalAccuracy(), posSideB.VerticalAccuracy());
+ return EFalse;
+ }
+ }
+ else
+ {
+ // Check latitude + longitude using horz accuracy.
+ TReal horzAct = posSideA.HorizontalAccuracy(); // Use the verify accuracy value (which is side A).
+ TReal distance ;
+
+ TESTLOG(ELogP1, "T_LbsUtils::Compare_PosInfo() Comparing positions for 'rough' match");
+ // if(NAN != horzAct)
+ {
+ // The following is a temporary patch until TPositionInfo.Distance() is implemented:
+/*
+ from http://www.movable-type.co.uk/scripts/GIS-FAQ-5.1.html
+
+ presuming a spherical Earth with radius R (see below), and the locations of the two points in spherical coordinates (longitude and latitude) are lon1,lat1 and lon2,lat2 then the
+
+ Haversine Formula (from R.W. Sinnott, "Virtues of the Haversine", Sky and Telescope, vol. 68, no. 2, 1984, p. 159):
+
+ dlon = lon2 - lon1
+ dlat = lat2 - lat1
+ a = sin^2(dlat/2) + cos(lat1) * cos(lat2) * sin^2(dlon/2)
+ c = 2 * arcsin(min(1,sqrt(a)))
+ d = R * c
+
+ will give mathematically and computationally exact results.
+
+*/
+ const TReal pi = 3.141592653589793;
+ const TReal earthRadius = 6367 * 1000; // earth radius in metres
+
+ TReal32 latA = posSideA.Latitude() * (pi/180);
+ TReal32 latB = posSideB.Latitude() * (pi/180);
+ TReal32 lonA = posSideA.Longitude() * (pi/180);
+ TReal32 lonB = posSideB.Longitude() * (pi/180);
+
+ TReal dlon = (lonB - lonA);
+ TReal dlat = (latB - latA);
+ TReal sin_half_dlat, sin_half_dlon, coslatA, coslatB;
+
+ Math::Sin(sin_half_dlat, dlat/2);
+ Math::Sin(sin_half_dlon, dlon/2);
+ Math::Cos(coslatA, latA);
+ Math::Cos(coslatB, latB);
+
+ TReal a = (sin_half_dlat * sin_half_dlat) + (coslatA * coslatB * (sin_half_dlon * sin_half_dlon));
+ TReal sqrt_a;
+ Math::Sqrt(sqrt_a, a);
+ TReal arcsinmin;
+
+ TReal min = Min(static_cast<TReal>(1), sqrt_a);
+ Math::ASin(arcsinmin, min);
+
+ distance = earthRadius * (2 * arcsinmin);
+
+ //__ASSERT_ALWAYS(!Math::IsNaN(distance), User::Panic(_L("Lbs Test Utils"), KErrGeneral));
+ if(Math::IsNaN(latA) || Math::IsNaN(lonA) || Math::IsNaN(horzAct))
+ {
+ TESTLOG(ELogP1, "T_LbsUtils::Compare_PosInfo() Positions don't match because contains NaNs!");
+ return EFalse;
+ }
+ else if(distance > horzAct + 30) // lrm allow for 30m discrepency for now TO DO figure out whether we should be able to check finer accuracy
+ {
+ TESTLOG(ELogP1, "T_LbsUtils::Compare_PosInfo() Positions don't match because distance greater than reported accuracy + margin!");
+ return EFalse;
+ }
+ }
+
+ /* put back later:
+ TReal32 horzAct = posSideA.HorizontalAccuracy(); // Use the verify accuracy value (which is side A).
+ TReal32 distance ;
+
+ posSideA.Distance(posSideB, distance);
+ if (distance > horzAct)
+ return EFalse;
+
+ // Check altitude using vert accuracy.
+ TReal32 vertAct = posSideA.VerticalAccuracy(); // Use the verify accuracy value (which is side A).
+ TReal32 height = Abs(posSideA.Altitude() - posSideB.Altitude());
+ if (height > vertAct)
+ return EFalse;
+ */
+
+ }
+
+ // TODO, we don't compare times, not sure if this is something we would do later on
+// if (posSideA.Time() != posSideB.Time())
+// return EFalse;
+
+ return ETrue;
+ }
+
+ // Compare TPositionCourseInfo type items.
+ if (typeA & typeB & EPositionCourseInfoClass)
+ {
+ TESTLOG(ELogP1, "T_LbsUtils::Compare_PosInfo() Both positions are of type EPositionCourseInfoClass");
+ // TODO
+ }
+
+ // Compare TPositionSatelliteInfo type items.
+ if (typeA & typeB & EPositionSatelliteInfoClass)
+ {
+ TESTLOG(ELogP1, "T_LbsUtils::Compare_PosInfo() Both positions are of type EPositionSatelliteInfoClass");
+ // TODO
+ }
+
+/* For extended tests when we have them.
+ if (infoBase.PositionClassType() & EPositionClassTestExtension)
+ {
+ }
+*/
+ return EFalse;
+ }
+
+
+EXPORT_C TBool T_LbsUtils::Compare_PosInfoArr(RPointerArray<TAny>& aPosInfoArrSideA, RPointerArray<TAny>& aPosInfoArrSideB)
+ {
+ return Compare_PosInfoArr(aPosInfoArrSideA, aPosInfoArrSideB, EExactAccuracy);
+ }
+
+EXPORT_C TBool T_LbsUtils::Compare_PosInfoArr(RPointerArray<TAny>& aPosInfoArrSideA, RPointerArray<TAny>& aPosInfoArrSideB, TComparisonAccuracyType aCmpAccuracy)
+ {
+ // Only compare items if the arrays are the same size.
+ if (aPosInfoArrSideA.Count() == aPosInfoArrSideB.Count())
+ {
+ TPositionInfoBase* posInfoA;
+ TPositionInfoBase* posInfoB;
+ TBool res;
+
+ for (TInt i = 0; i < aPosInfoArrSideA.Count(); ++i)
+ {
+ posInfoA = reinterpret_cast<TPositionInfoBase*>(aPosInfoArrSideA[i]);
+ posInfoB = reinterpret_cast<TPositionInfoBase*>(aPosInfoArrSideB[i]);
+
+ res = Compare_PosInfo(*posInfoA, *posInfoB, aCmpAccuracy);
+ if (!res)
+ return EFalse;
+ }
+ }
+
+ else
+ {
+ TESTLOG(ELogP1, "T_LbsUtils::Compare_PosInfoArr() Failed because different number of positions in arrays being compared!");
+ return EFalse;
+ }
+ return ETrue;
+ }
+
+
+EXPORT_C void T_LbsUtils::ResetAndDestroy_PosInfoArr(RPointerArray<TAny>& aPosInfoArr)
+ {
+ for (TInt i = 0; i < aPosInfoArr.Count(); ++i)
+ delete aPosInfoArr[i];
+ aPosInfoArr.Reset();
+ }
+
+
+EXPORT_C TPositionModuleId T_LbsUtils::GetNetworkModuleIdL(RPositionServer& aServer)
+ {
+ TPositionModuleId modId;
+
+ User::LeaveIfError(GetModIdByTechnology(aServer, TPositionModuleInfo::ETechnologyNetwork, modId));
+
+ return modId;
+ }
+
+
+EXPORT_C TPositionModuleId T_LbsUtils::GetAGpsModuleIdL(RPositionServer& aServer)
+ {
+ TPositionModuleId modId;
+
+ User::LeaveIfError(GetModIdByTechnology(aServer, (TPositionModuleInfo::ETechnologyTerminal | TPositionModuleInfo::ETechnologyAssisted), modId));
+
+ return modId;
+ }
+
+EXPORT_C TPositionModuleId T_LbsUtils::GetBadModuleId()
+ {
+ TPositionModuleId modId;
+
+ modId.iUid = BAD_MODULE_ID;
+
+ return modId;
+ }
+
+
+EXPORT_C TBool T_LbsUtils::Compare_ModuleInfo(TPositionModuleInfo& aModInfoSideA, TPositionModuleInfo& aModInfoSideB)
+ {
+ // Compare all module information items and quality.
+
+ // Compare module id.
+ if (aModInfoSideA.ModuleId() != aModInfoSideB.ModuleId())
+ {
+ return EFalse;
+ }
+
+ // Compare is available flag.
+ if (aModInfoSideA.IsAvailable() != aModInfoSideB.IsAvailable())
+ {
+ return EFalse;
+ }
+
+ // Compare technology type.
+ if (aModInfoSideA.TechnologyType() != aModInfoSideB.TechnologyType())
+ {
+ return EFalse;
+ }
+
+ // Compare device location.
+ if (aModInfoSideA.DeviceLocation() != aModInfoSideB.DeviceLocation())
+ {
+ return EFalse;
+ }
+
+ // Compare capabilities.
+ if (aModInfoSideA.Capabilities() != aModInfoSideB.Capabilities())
+ {
+ return EFalse;
+ }
+
+ // Compare each of the family classes. Use min and max enum values.
+ for (TInt i = EPositionInfoFamily; i <= EPositionUpdateOptionsFamily; i++)
+ {
+ if (aModInfoSideA.ClassesSupported(static_cast<TPositionClassFamily>(i)) != aModInfoSideB.ClassesSupported(static_cast<TPositionClassFamily>(i)))
+ {
+ return EFalse;
+ }
+ }
+
+ // Compare version.
+ if ((aModInfoSideA.Version().iMajor != aModInfoSideB.Version().iMajor) ||
+ (aModInfoSideA.Version().iMinor != aModInfoSideB.Version().iMinor) ||
+ (aModInfoSideA.Version().iBuild != aModInfoSideB.Version().iBuild))
+ {
+ return EFalse;
+ }
+
+ // Compare module name.
+ TBuf<KPositionMaxModuleName> modNameSideA;
+ TBuf<KPositionMaxModuleName> modNameSideB;
+
+ aModInfoSideA.GetModuleName(modNameSideA);
+ aModInfoSideB.GetModuleName(modNameSideB);
+ if (0 != modNameSideA.Compare(modNameSideB))
+ {
+ return EFalse;
+ }
+
+ // Compare module quality.
+ TPositionQuality qualitySideA;
+ TPositionQuality qualitySideB;
+
+ aModInfoSideA.GetPositionQuality(qualitySideA);
+ aModInfoSideB.GetPositionQuality(qualitySideB);
+
+ return Compare_PositionQuality(qualitySideA, qualitySideB);
+ }
+
+EXPORT_C TBool T_LbsUtils::Compare_ModuleStatus(TPositionModuleStatus& aModStatusSideA, TPositionModuleStatus& aModStatusSideB)
+ {
+ // Compare device status.
+ if (aModStatusSideA.DeviceStatus() != aModStatusSideB.DeviceStatus())
+ {
+ return EFalse;
+ }
+
+ // Compare quality status.
+ if (aModStatusSideA.DataQualityStatus() != aModStatusSideB.DataQualityStatus())
+ {
+ return EFalse;
+ }
+
+ return TRUE;
+ }
+
+
+EXPORT_C TBool Compare_ModuleUpdateOptions(TPositionUpdateOptions& aModUpdateOptsSideA, TPositionUpdateOptions& aModUpdateOptsSideB)
+ {
+ // Compare base class items.
+ if(aModUpdateOptsSideA.PositionClassSize() != aModUpdateOptsSideB.PositionClassSize())
+ {
+ return EFalse;
+ }
+
+ if(aModUpdateOptsSideA.PositionClassType() != aModUpdateOptsSideB.PositionClassType())
+ {
+ return EFalse;
+ }
+
+ // Compare interval option.
+ if(aModUpdateOptsSideA.UpdateInterval() != aModUpdateOptsSideB.UpdateInterval())
+ {
+ return EFalse;
+ }
+
+ // Compare timeout option.
+ if(aModUpdateOptsSideA.UpdateTimeOut() != aModUpdateOptsSideB.UpdateTimeOut())
+ {
+ return EFalse;
+ }
+
+ // Compare maxage option.
+ if(aModUpdateOptsSideA.MaxUpdateAge() != aModUpdateOptsSideB.MaxUpdateAge())
+ {
+ return EFalse;
+ }
+
+ // Compare partial update option.
+ if(aModUpdateOptsSideA.AcceptPartialUpdates() != aModUpdateOptsSideB.AcceptPartialUpdates())
+ {
+ return EFalse;
+ }
+
+ return ETrue;
+ }
+
+
+EXPORT_C TBool T_LbsUtils::Compare_PositionQuality(TPositionQuality& aQualitySideA, TPositionQuality& aQualitySideB)
+/** Compare two position quality structures.
+
+@param aQualitySideA
+@param aQualitySideB
+*/
+ {
+ // Check if each quality contains the same number of assigned quality items.
+ if (aQualitySideA.HighWaterMark() != aQualitySideB.HighWaterMark())
+ {
+ return EFalse;
+ }
+
+ // Compare each quality item.
+ TInt endId = aQualitySideA.HighWaterMark();
+
+ for (TInt i = 0; i <= endId; i++)
+ {
+ // Element for each side must be defined.
+ if (!aQualitySideA.IsDefined(i) || !aQualitySideB.IsDefined(i))
+ {
+ return EFalse;
+ }
+
+ // Now compare the actual element.
+ TPositionQualityItem::TResult res;
+ if (KErrNone != aQualitySideA.Compare(aQualitySideB, i, res))
+ {
+ return EFalse;
+ }
+ if (TPositionQualityItem::EIsEqual != res)
+ {
+ return EFalse;
+ }
+ }
+
+ return ETrue;
+ }
+
+
+/**
+ * Verifies that the supplied position is 'reasonable'
+ *
+ */
+EXPORT_C TBool T_LbsUtils::Verify_PositionIsValid(TPositionInfo& aPosInfo)
+ {
+ TBool valid = TRUE;
+ TPosition pos;
+ TReal32 alt;
+ TReal64 lat, longt;
+
+ aPosInfo.GetPosition(pos);
+
+ alt = pos.Altitude();
+ lat = pos.Latitude();
+ longt = pos.Longitude();
+
+ // TO DO figure out what values are reasonable here (in Milton somewhere!?)
+ // We could use the normal verify posinfo stuff, and check to see if the values are roughly equal.
+ // Either update this func (add a parameter) or new func like the compare posinfo func we have
+ if(alt == 0 || lat == 0 || longt == 0)
+ {
+ valid = FALSE;
+ }
+
+
+ return valid;
+ }
+
+
+// May not be required.
+//EXPORT_C void T_LbsUtils::CreateSimpleAssistanceData(/*TLbsAssistanceDataGroup aDataMask, RDataReaderRootBase& aGpsRefTimeReader*/)
+// {
+
+// }
+
+/** Ensure the simple assistance data is correct. Typically the data is given by the simple
+ assistance data provider module used by the Net Sim.
+
+@param aRefTimeReader The assistance data reader which holds the reference time data, the
+ reader must be opened (use OpenL()) before calling this function.
+*/
+EXPORT_C TBool T_LbsUtils::VerifySimpleAssistanceData(RUEPositioningGpsReferenceTimeReader& aRefTimeReader)
+ {
+ TUint week;
+ TUint tow1MSec;
+
+ // Access the reference time values.
+ aRefTimeReader.GetField(TUEPositioningGpsReferenceTime::EGpsWeek, week);
+ aRefTimeReader.GetField(TUEPositioningGpsReferenceTime::EGpsTow1Msec, tow1MSec);
+
+ // Verify the reference time values.
+ TBool passed = ETrue;
+
+ passed &= (week == KAssistanceData_RefTime_Week);
+ passed &= (tow1MSec == KAssistanceData_RefTime_Tow1MSec);
+
+ return passed;
+ }
+
+/** Create the module information depending on module id(i'e either agps_manager or network location manager)
+ Fills a module info class/structure with values depending on the module id.
+
+ @param aModuleId module id within the ini file
+ @param aModInfo The modified module info structure.
+*/
+EXPORT_C void T_LbsUtils::Create_ModuleInfoL(TPositionModuleId aModuleId, TPositionModuleInfo& aModInfo)
+
+ {
+ TPositionQuality posQuality;
+
+ // Use these values if the module is a-gps manager
+ if (aModuleId == (TUid::Uid(APGS_MODINFO_MODULE_ID)))
+ {
+ aModInfo.SetModuleId(TUid::Uid(APGS_MODINFO_MODULE_ID));
+ aModInfo.SetIsAvailable(AGPS_MODINFO_IS_AVAILABLE);
+ aModInfo.SetModuleName(AGPS_MODINFO_MOD_NAME);
+ aModInfo.SetTechnologyType(AGPS_MODINFO_TECHNOLOGY_TYPE);
+ aModInfo.SetDeviceLocation(AGPS_MODINFO_DEVICE_LOCATION);
+ aModInfo.SetCapabilities(AGPS_MODINFO_CAPABILITIES);
+
+ // Classes Supported - this is a binary bitmap, but support for each class
+ // has to be set individually.
+
+ TInt supportedClasses = AGPS_MODINFO_CLASSES_SUPPORTED_POSITION_FAMILY;
+ TPositionClassFamily currentClass = EPositionInfoFamily;
+ while(currentClass <= EPositionUpdateOptionsFamily)
+ {
+ aModInfo.SetClassesSupported(currentClass, supportedClasses & 1);
+ supportedClasses >>= 1;
+ currentClass = static_cast<TPositionClassFamily>(static_cast<TInt>(currentClass) + 1);
+ }
+
+ aModInfo.SetVersion(AGPS_MODINFO_VERSION);
+ posQuality.SetTimeToFirstFix(AGPS_MODINFO_TIME_TO_FIRST_FIX);
+ posQuality.SetTimeToNextFix(AGPS_MODINFO_TIME_TO_NEXT_FIX);
+ posQuality.SetHorizontalAccuracy(AGPS_MODINFO_HORIZONTAL_ACCURACY);
+ posQuality.SetVerticalAccuracy(AGPS_MODINFO_VERTICAL_ACCURACY);
+ posQuality.SetCostIndicator(AGPS_MODINFO_COST_INDICATOR);
+ posQuality.SetPowerConsumption(AGPS_MODINFO_POWER_CONSUMPTION);
+ aModInfo.SetPositionQuality(posQuality);
+ }
+
+ //need to change after network location manager module is avaliable
+ //Use these values if the module is network location manager
+ else if(aModuleId ==(TUid::Uid(NETWORK_MODINFO_MODULE_ID)))
+ {
+ aModInfo.SetModuleId(TUid::Uid(NETWORK_MODINFO_MODULE_ID));
+ aModInfo.SetIsAvailable(NETWORK_MODINFO_IS_AVAILABLE);
+ aModInfo.SetModuleName(NETWORK_MODINFO_MOD_NAME);
+ aModInfo.SetTechnologyType(NETWORK_MODINFO_TECHNOLOGY_TYPE);
+ aModInfo.SetDeviceLocation(NETWORK_MODINFO_DEVICE_LOCATION);
+ aModInfo.SetCapabilities(NETWORK_MODINFO_CAPABILITIES);
+ // Classes Supported - this is a binary bitmap, but support for each class
+ // has to be set individually.
+
+ TInt supportedClasses = NETWORK_MODINFO_CLASSES_SUPPORTED_POSITION_FAMILY;
+ TPositionClassFamily currentClass = EPositionInfoFamily;
+ while(currentClass <= EPositionUpdateOptionsFamily)
+ {
+ aModInfo.SetClassesSupported(currentClass, supportedClasses & 1);
+ supportedClasses >>= 1;
+ currentClass = static_cast<TPositionClassFamily>(static_cast<TInt>(currentClass) + 1);
+ }
+
+ aModInfo.SetVersion(NETWORK_MODINFO_VERSION);
+ posQuality.SetTimeToFirstFix(NETWORK_MODINFO_TIME_TO_FIRST_FIX);
+ posQuality.SetTimeToNextFix(NETWORK_MODINFO_TIME_TO_NEXT_FIX);
+ posQuality.SetHorizontalAccuracy(NETWORK_MODINFO_HORIZONTAL_ACCURACY);
+ posQuality.SetVerticalAccuracy(NETWORK_MODINFO_VERTICAL_ACCURACY);
+ posQuality.SetCostIndicator(NETWORK_MODINFO_COST_INDICATOR);
+ posQuality.SetPowerConsumption(NETWORK_MODINFO_POWER_CONSUMPTION);
+ aModInfo.SetPositionQuality(posQuality);
+ }
+ else
+ {
+ User::Leave(KErrArgument);
+
+ }
+ }
+
+TInt T_LbsUtils::GetModIdByTechnology(RPositionServer& aServer, TPositionModuleInfo::TTechnologyType aTechnologyType, TPositionModuleId& aModuleId)
+/** Searchs for a module which matches the required technology type. Once found the module id of the matched module
+ is given. The first module found which supports the technology will be returned.
+
+@param aServer A position server. A client must have a connection with the server.
+@param aTechnologyType The technology to match.
+@param aModuleId The returned module id of the module which supports the required technology.
+@return Err code: KErrNone it module found.
+ KErrNotFound if no module is found which matches the required technology.
+ Any other system errors.
+*/
+{
+ TInt err;
+ TUint numMods;
+
+ err = aServer.GetNumModules(numMods);
+ if (KErrNone == err)
+ {
+ TInt i = 0;
+ TPositionModuleInfo modInfo;
+
+ // Look at each module until we find the required technology type.
+ while (i < numMods)
+ {
+ err = aServer.GetModuleInfoByIndex(i, modInfo);
+
+ // Found it.
+ if (modInfo.TechnologyType() == aTechnologyType)
+ {
+ aModuleId = modInfo.ModuleId();
+
+ return err;
+ }
+ i++;
+ }
+ }
+
+ else
+ {
+ return err;
+ }
+
+ return KErrNotFound;
+}
+
+
+/**
+ * Method for comparing base class member variables in Logevent types
+ */
+TBool T_LbsUtils::Compare_LogBase(const CLbsLogEvent& aLogEventSideA, const CLbsLogEvent& aLogEventSideB)
+{
+ if(aLogEventSideA.Direction() != aLogEventSideB.Direction())
+ return EFalse;
+
+ if(aLogEventSideA.EventType() != aLogEventSideB.EventType())
+ return EFalse;
+
+ if(aLogEventSideA.RequestOutcome() != aLogEventSideB.RequestOutcome())
+ return EFalse;
+
+ if(aLogEventSideA.IsCostInformationAvailable() != aLogEventSideB.IsCostInformationAvailable())
+ return EFalse;
+ else
+ {
+ //check cost info for each side
+ if(aLogEventSideA.CostInformation() != aLogEventSideB.CostInformation())
+ return EFalse;
+ }
+
+ TPositionInfoBase* sideAPosInfo = reinterpret_cast<TPositionInfoBase*>(aLogEventSideA.PositionInfo());
+ TPositionInfoBase* sideBPosInfo = reinterpret_cast<TPositionInfoBase*>(aLogEventSideB.PositionInfo());
+ if(sideAPosInfo != NULL)
+ {
+ // If the actual log has a non-NULL posinfo...
+ if((*aLogEventSideA.PositionInfo()).ModuleId() != (*aLogEventSideB.PositionInfo()).ModuleId())
+ return EFalse;
+
+ if(!Compare_PosInfo(*aLogEventSideA.PositionInfo(), *aLogEventSideB.PositionInfo()))
+ return EFalse;
+ }
+ else
+ {
+ // else cheach that both sides have NULL
+ if(!(sideAPosInfo == NULL && sideBPosInfo == NULL))
+ return EFalse;
+ }
+
+
+
+return ETrue;
+}
+/**
+ * Method for comparing SelfLocateLog
+ */
+EXPORT_C TBool T_LbsUtils::Compare_SelfLocateLog(const CLbsSelfLocateLogEvent& aSelfLocateLogSideA, const CLbsSelfLocateLogEvent& aSelfLocateLogSideB)
+{
+ //Compare base class member variables
+ if(!Compare_LogBase(aSelfLocateLogSideA, aSelfLocateLogSideB))
+ return EFalse;
+
+ if(aSelfLocateLogSideA.LocalApp() != aSelfLocateLogSideB.LocalApp())
+ return EFalse;
+
+ return ETrue;
+}
+
+/**
+ * Method for comparing NetworkLocateLog
+ */
+EXPORT_C TBool T_LbsUtils::Compare_NetworkLocateLog(const CLbsNetworkLocateLogEvent& aNetworkLocateLogSideA, const CLbsNetworkLocateLogEvent& aNetworkLocateLogSideB)
+{
+ //Compare base class member variables
+ if(!Compare_LogBase(aNetworkLocateLogSideA, aNetworkLocateLogSideB))
+ return EFalse;
+
+ if(aNetworkLocateLogSideA.LocalApp() != aNetworkLocateLogSideB.LocalApp())
+ return EFalse;
+
+ return ETrue;
+}
+
+/**
+ * Method for comparing ExternalLocateLog
+ */
+EXPORT_C TBool T_LbsUtils::Compare_ExternalLocateLog(const CLbsExternalLocateLogEvent& aExternalLocateLogSideA, const CLbsExternalLocateLogEvent& aExternalLocateLogSideB)
+{
+ //Compare base class member variables
+ if(!Compare_LogBase(aExternalLocateLogSideA, aExternalLocateLogSideB))
+ return EFalse;
+
+ if(!Compare_PosInfo(*aExternalLocateLogSideA.ReferenceLocation(), *aExternalLocateLogSideB.ReferenceLocation()))
+ return EFalse;
+
+ if(aExternalLocateLogSideA.RequestOriginator() != aExternalLocateLogSideB.RequestOriginator())
+ return EFalse;
+
+ if(!Compare_ExternalRequestPrivacyRequestParams(aExternalLocateLogSideA.PrivacyRequestParams(), aExternalLocateLogSideB.PrivacyRequestParams()))
+ return EFalse;
+
+ if(!Compare_ExternalRequestPrivacyResponseParams(aExternalLocateLogSideA.PrivacyResponseParams(), aExternalLocateLogSideB.PrivacyResponseParams()))
+ return EFalse;
+
+return ETrue;
+}
+
+
+
+/**
+ * Method for comparing X3PLog
+ */
+EXPORT_C TBool T_LbsUtils::Compare_TransmitLocationLog(const CLbsTransmitLocationLogEvent& aX3PLogSideA, const CLbsTransmitLocationLogEvent& aX3PLogSideB)
+{
+ //Compare base class member variables
+ if(!Compare_LogBase(aX3PLogSideA, aX3PLogSideB))
+ return EFalse;
+
+ if(aX3PLogSideA.X3PApp() != aX3PLogSideB.X3PApp())
+ return EFalse;
+
+ if(!Compare_Destinations(aX3PLogSideA.Destination(), aX3PLogSideB.Destination()))
+ return EFalse;
+
+ return ETrue;
+}
+
+
+/**
+ * Method for comparing AssistanceDataLog
+ */
+EXPORT_C TBool T_LbsUtils::Compare_AssistanceDataLog(const CLbsAssistanceDataLogEvent& aAssistanceDataLogSideA, const CLbsAssistanceDataLogEvent& aAssistanceDataLogSideB)
+{
+ //Compare base class member variables
+ if(!Compare_LogBase(aAssistanceDataLogSideA, aAssistanceDataLogSideB))
+ return EFalse;
+
+ if(aAssistanceDataLogSideA.RequestAssistanceDataType() != aAssistanceDataLogSideB.RequestAssistanceDataType())
+ return EFalse;
+
+
+ if(aAssistanceDataLogSideA.ReceiveAssistanceDataType() != aAssistanceDataLogSideB.ReceiveAssistanceDataType())
+ return EFalse;
+
+ return ETrue;
+}
+
+
+/**
+ * Method needed to compare external locate logs.
+ */
+TBool T_LbsUtils::Compare_ExternalRequestPrivacyRequestParams(const TLbsLoggingPrivacyRequestParams& aLogPrivacyRequestParamsSideA, const TLbsLoggingPrivacyRequestParams& aLogPrivacyRequestParamsSideB)
+{
+ if(aLogPrivacyRequestParamsSideA.iSessionId != aLogPrivacyRequestParamsSideB.iSessionId)
+ return EFalse;
+
+ if(!Compare_ExternalRequestInfo(aLogPrivacyRequestParamsSideA.iRequestInfo, aLogPrivacyRequestParamsSideB.iRequestInfo))
+ return EFalse;
+
+ if(!Compare_ExternalRequestPrivacy(aLogPrivacyRequestParamsSideA.iRequestPrivacy, aLogPrivacyRequestParamsSideB.iRequestPrivacy))
+ return EFalse;
+
+
+
+ return ETrue;
+}
+
+
+/**
+ * Method needed to compare external locate logs.
+ * Compares TLbsExternalRequestInfo class.
+ */
+TBool T_LbsUtils::Compare_ExternalRequestInfo(const TLbsExternalRequestInfo& aExternalRequestInfoSideA, const TLbsExternalRequestInfo& aExternalRequestInfoSideB)
+{
+ TLbsRequesterId requesterIdSideA, requesterIdSideB;
+ TLbsClientName clientNameSideA, clientNameSideB;
+ TLbsClientExternalId clientExternalIdSideA, clientExternalIdSideB;
+
+ aExternalRequestInfoSideA.GetRequesterId(requesterIdSideA);
+ aExternalRequestInfoSideA.GetClientName(clientNameSideA);
+ aExternalRequestInfoSideA.GetClientExternalId(clientExternalIdSideA);
+
+ aExternalRequestInfoSideB.GetRequesterId(requesterIdSideB);
+ aExternalRequestInfoSideB.GetClientName(clientNameSideB);
+ aExternalRequestInfoSideB.GetClientExternalId(clientExternalIdSideB);
+
+ // If these values are different, then return false
+ if(requesterIdSideA.Compare(requesterIdSideB)) // Should return 0 if equal
+ return EFalse;
+
+ if(clientNameSideA.Compare(clientNameSideB))
+ return EFalse;
+
+ if(clientExternalIdSideA.Compare(clientExternalIdSideB))
+ return EFalse;
+
+
+ return ETrue;
+}
+
+
+/**
+ * Method needed to compare external locate logs.
+ * Compares TLbsNetPosRequestPrivacy class.
+ */
+TBool T_LbsUtils::Compare_ExternalRequestPrivacy(const TLbsNetPosRequestPrivacy& aExternalRequestPrivacySideA, const TLbsNetPosRequestPrivacy& aExternalRequestPrivacySideB)
+{
+ if(aExternalRequestPrivacySideA.RequestAdvice() != aExternalRequestPrivacySideB.RequestAdvice())
+ return EFalse;
+
+ if(aExternalRequestPrivacySideA.RequestAction() != aExternalRequestPrivacySideB.RequestAction())
+ return EFalse;
+
+ return ETrue;
+}
+
+
+/**
+ * Method needed to compare external locate logs.
+ * Compares TPrivacyResponseParams class.
+ */
+TBool T_LbsUtils::Compare_ExternalRequestPrivacyResponseParams(const TLbsLoggingPrivacyResponseParams& aExternalRequestPrivacyResponseSideA, const TLbsLoggingPrivacyResponseParams& aExternalRequestPrivacyResponseSideB)
+{
+ if(aExternalRequestPrivacyResponseSideA.iSessionId != aExternalRequestPrivacyResponseSideB.iSessionId)
+ return EFalse;
+
+ if(aExternalRequestPrivacyResponseSideA.iResult != aExternalRequestPrivacyResponseSideB.iResult)
+ return EFalse;
+
+ return ETrue;
+}
+
+/**
+ * Method needed to Transmit to 3rd party destinations
+ * Compares TDesC16.
+ */
+TBool T_LbsUtils::Compare_Destinations(TDesC16& aDestinationFromRealLog, TDesC16& aDestinationFromExpectedLog)
+ {
+ if(aDestinationFromRealLog != aDestinationFromExpectedLog)
+ return EFalse;
+
+ return ETrue;
+ }
+