common/tools/ats/smoketest/lbs/lbsclient/src/ctlbsclientstep.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/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();	
+	}