diff -r 76f9aaeefbab -r e13acd883fbe common/tools/ats/smoketest/lbs/lbsclient/src/ctlbsclientstep.cpp --- /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(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(); + }