common/tools/ats/smoketest/lbs/lbsclient/src/ctlbsclientpostp195.cpp
changeset 748 e13acd883fbe
child 872 17498133d9ad
--- /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