diff -r 000000000000 -r 9cfd9a3ee49c lbstest/lbstestproduct/lbsx3p/src/ctlbsx3pstepcancel.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lbstest/lbstestproduct/lbsx3p/src/ctlbsx3pstepcancel.cpp Tue Feb 02 01:50:39 2010 +0200 @@ -0,0 +1,836 @@ +// 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 "Eclipse Public License v1.0" +// which accompanies this distribution, and is available +// at the URL "http://www.eclipse.org/legal/epl-v10.html". +// +// Initial Contributors: +// Nokia Corporation - initial contribution. +// +// Contributors: +// +// Description: +// @file ctlbsx3pstepcancel.cpp +// This is the class implementation for the Module Information Tests +// EPOC includes. +// +// + +// LBS includes. +#include +#include + +// LBS test includes. +#include +#include "ctlbsx3pstepcancel.h" +#include + +//const TTimeIntervalMicroSeconds32 KExtendedTimerInterval = 60*1000000; // 1 minute +//const TInt KLbsTestModuleTimeOut = 50*1000000; +//const TTimeIntervalMicroSeconds KLbsX3PTimeOut = 20*1000000; + +//const TInt KSimpleAssistanceDataProviderPluginUidValue = 0x10281D77; +//const TInt KSuplAssistanceDataProviderPluginUidValue = 0x1028225B; +//_LIT(KLbsRefPos, "RefPos"); + + +//TBool bConnected = EFalse; //To make sure that connected wouldnt get called twice - TBD +/** + * Destructor + */ +CT_LbsX3PStep_Cancel::~CT_LbsX3PStep_Cancel() + { + if(iDoTransmitPosAO != NULL) + delete iDoTransmitPosAO; + + if(iDoTransmitPosAO2 != NULL) + delete iDoTransmitPosAO2; + } + +/** + * Constructor + */ +CT_LbsX3PStep_Cancel::CT_LbsX3PStep_Cancel(CT_LbsX3PServer& aParent) : CT_LbsX3PStep(aParent) + { + SetTestStepName(KLbsX3PStep_Cancel); + //iCallbackFlags = 0; + } + + +/** +Static Constructor +*/ +CT_LbsX3PStep_Cancel* CT_LbsX3PStep_Cancel::New(CT_LbsX3PServer& aParent) + { + CT_LbsX3PStep_Cancel* testStep = new CT_LbsX3PStep_Cancel(aParent); + // Note the lack of ELeave. + // This means that having insufficient memory will return NULL; + + if (testStep) + { + TInt err = KErrNone; + + TRAP(err, testStep->ConstructL()); + if (err) + { + delete testStep; + testStep = NULL; + } + } + + return testStep; + } + +void CT_LbsX3PStep_Cancel::ConstructL() + { + //Call the base class c'tor to create timer. + CT_LbsX3PStep::ConstructL(); + } + + +/** + * @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_LbsX3PStep_Cancel::doTestStepL() + { + // Generic test step used to test the LBS Client Notify position update API. + INFO_PRINTF1(_L(">>CT_LbsX3PStep_Cancel::doTestStepL()")); + + if (TestStepResult() == EPass) + { + + TInt err = KErrNone; + RLbsTransmitPositionServer server; + + // Carry out common test actions (such as connecting to a server). + + User::LeaveIfError(server.Connect()); + CleanupClosePushL(server); + + INFO_PRINTF1(_L("server opened")); + + User::LeaveIfError(iTransmitPositioner.Open(server)); + CleanupClosePushL(iTransmitPositioner); + + // Create the active object to carry out the Transmit Position functionality. + iDoTransmitPosAO = CT_LbsX3PDoTransmitPos::NewL(this, iTransmitPositioner); + + //T_LbsUtils utils; + //TModuleDataIn modDataIn; // Used to send test information to the test module. + + iRefPosFlag = GetIntFromConfig(ConfigSection(), KLbsRefPos, iRefPosFlag); + + + // Carry out unique test actions. + if (GetIntFromConfig(ConfigSection(), KTestCaseId, iTestCaseId)) + { + switch (iTestCaseId) + { + // Test case LBS-X3P-Cancel-0001 + case 1: + { + //Try to cancel Transmition without X3P + iTransmitPositioner.CancelTransmitPosition(); + + //Below code might not be needed...added as Netsim panics if I dont start scheduler + iFlagsToHaltOn = KLbsCallback_NetSim_Got_Connect; + + } + break; + + // Test case LBS-X3P-Cancel-0002 + case 2: + { + iFlagsToHaltOn = KLbsCallback_NetSim_Got_Connect| + KLbsCallback_NetSim_Got_NotifyRegisterLcsMoLr | + KLbsCallback_NetSim_Got_NotifyReleaseLcsMoLr | + (iRefPosFlag? KLbsCallback_Got_NotifyDoTransmitReferencePos:0)| + KLbsCallback_Got_NotifyDoTransmitPos; + } + break; + + // Test case LBS-X3P-Cancel-0003 + case 3: + { + iFlagsToHaltOn = KLbsCallback_NetSim_Got_Connect | + KLbsCallback_NetSim_Got_NotifyRegisterLcsMoLr | + KLbsCallback_NetSim_Got_NotifyReleaseLcsMoLr | + (iRefPosFlag? KLbsCallback_Got_NotifyDoTransmitReferencePos:0)| + KLbsCallback_Got_NotifyDoTransmitPos; + } + break; + + // Test case LBS-X3P-Cancel-0004 + case 4: + { + //SetExtendedTimerInterval(30000000); + iFlagsToHaltOn = KLbsCallback_NetSim_Got_Connect | + KLbsCallback_NetSim_Got_NotifyRegisterLcsMoLr | + KLbsCallback_NetSim_Got_NotifyMeasurementControlLocation | + KLbsCallback_NetSim_Got_NotifyMeasurementReportLocation | + KLbsCallback_NetSim_Got_NotifyFacilityLcsMoLrResult | + KLbsCallback_NetSim_Got_NotifyReleaseLcsMoLr| + (iRefPosFlag? KLbsCallback_Got_NotifyDoTransmitReferencePos:0)| + KLbsCallback_Got_NotifyDoTransmitPos; + } + break; + + // Test case LBS-X3P-Cancel-0005 + case 5: + case 6: + { + iFlagsToHaltOn = KLbsCallback_NetSim_Got_Connect | + KLbsCallback_NetSim_Got_NotifyRegisterLcsMoLr | + KLbsCallback_NetSim_Got_NotifyMeasurementControlLocation | + KLbsCallback_NetSim_Got_NotifyMeasurementReportLocation | + KLbsCallback_NetSim_Got_NotifyFacilityLcsMoLrResult | + KLbsCallback_NetSim_Got_NotifyReleaseLcsMoLr| + (iRefPosFlag? KLbsCallback_Got_NotifyDoTransmitReferencePos:0)| + KLbsCallback_Got_NotifyDoTransmitPos; + } + break; + + + // Test case LBS-X3P-Cancel-0007 + case 7: + { + iFlagsToHaltOn = KLbsCallback_NetSim_Got_Connect | + KLbsCallback_NetSim_Got_NotifyRegisterLcsMoLr | + KLbsCallback_NetSim_Got_NotifyReleaseLcsMoLr | + (iRefPosFlag? KLbsCallback_Got_NotifyDoTransmitReferencePos:0); + + //Not sure how we will get status in this case when the request is cancelled from Cancel() - TBD + } + break; + + + // Test case LBS-X3P-Cancel-0009-0010 + case 8: + case 9: + { + User::LeaveIfError(iTransmitPositioner2.Open(server)); + CleanupClosePushL(iTransmitPositioner2); + + // Create the active object to carry out the Transmit Position functionality. + iDoTransmitPosAO2 = CT_LbsX3PDoTransmitPos::NewL(this, iTransmitPositioner2); + + iFlagsToHaltOn = KLbsCallback_NetSim_Got_Connect | + KLbsCallback_NetSim_Got_NotifyRegisterLcsMoLr | + KLbsCallback_NetSim_Got_NotifyMeasurementControlLocation | + KLbsCallback_NetSim_Got_NotifyMeasurementReportLocation | + KLbsCallback_NetSim_Got_NotifyFacilityLcsMoLrResult | + KLbsCallback_NetSim_Got_NotifyReleaseLcsMoLr| + (iRefPosFlag? KLbsCallback_Got_NotifyDoTransmitReferencePos:0)| + KLbsCallback_Got_NotifyDoTransmitPos; + } + break; + + + case 10: + { + //Cancel at NotifyMeasurementReportRequestMoreAssitanceData + + //Configure gps-test-module to request for more assitance data. + if(iParent.iSharedData->iTestModuleInUse) + { + T_LbsUtils utils; + TModuleDataIn modDataIn; // Used to send test information to the test module. + modDataIn.iRequestType = TModuleDataIn::EModuleRequestTestMode; + modDataIn.iAssDataEventType = TModuleDataIn::EAssDataEventExpectSingle; + modDataIn.iAssDataTestMode = TModuleDataIn::EModuleTestModeAssDataOn_SomeDataNotAvailable; + + utils.NotifyModuleOfConfigChangeL(modDataIn); + } + + iFlagsToHaltOn = KLbsCallback_NetSim_Got_Connect | + KLbsCallback_NetSim_Got_NotifyRegisterLcsMoLr | + KLbsCallback_NetSim_Got_NotifyMeasurementReportRequestMoreAssistanceData | + KLbsCallback_NetSim_Got_NotifyMeasurementReportControlFailure | + KLbsCallback_NetSim_Got_NotifyMeasurementControlLocation | + KLbsCallback_NetSim_Got_NotifyReleaseLcsMoLr| + (iRefPosFlag? KLbsCallback_Got_NotifyDoTransmitReferencePos:0)| + KLbsCallback_Got_NotifyDoTransmitPos; + } + break; + + case 11: + { + iFlagsToHaltOn = KLbsCallback_NetSim_Got_Connect | + KLbsCallback_NetSim_Got_NotifyRegisterLcsMoLr | + KLbsCallback_NetSim_Got_NotifyMeasurementControlLocation | + KLbsCallback_NetSim_Got_NotifyMeasurementReportLocation | + KLbsCallback_NetSim_Got_NotifyFacilityLcsMoLrResult | + KLbsCallback_NetSim_Got_NotifyReleaseLcsMoLr| + (iRefPosFlag? KLbsCallback_Got_NotifyDoTransmitReferencePos:0)| + KLbsCallback_Got_NotifyDoTransmitPos; + } + break; + + case 12: + { + + //Note sure which callbacks would be needed - TBD + if(iRefPosFlag) + { + iFlagsToHaltOn = KLbsCallback_NetSim_Got_Connect | + KLbsCallback_NetSim_Got_NotifyRegisterLcsMoLr | + KLbsCallback_NetSim_Got_NotifyMeasurementControlLocation | + KLbsCallback_NetSim_Got_NotifyMeasurementReportLocation | + KLbsCallback_NetSim_Got_NotifyFacilityLcsMoLrResult | + KLbsCallback_NetSim_Got_NotifyReleaseLcsMoLr| + KLbsCallback_Got_NotifyDoTransmitPos; + } + else + { + INFO_PRINTF2(_L("This test case is invalid for this interface: Testcase ID- %d"), iTestCaseId); + ASSERT(FALSE); + } + } + break; + + case 13: + { + if(iRefPosFlag) + { + iFlagsToHaltOn = KLbsCallback_NetSim_Got_Connect | + KLbsCallback_NetSim_Got_NotifyRegisterLcsMoLr | + KLbsCallback_NetSim_Got_NotifyMeasurementControlLocation | + KLbsCallback_NetSim_Got_NotifyMeasurementReportControlFailure | + KLbsCallback_NetSim_Got_NotifyReleaseLcsMoLr| + KLbsCallback_Got_NotifyDoTransmitReferencePos| + KLbsCallback_Got_NotifyDoTransmitPos; + } + else + { + INFO_PRINTF2(_L("This test case is invalid for this interface: Testcase ID- %d"), iTestCaseId); + ASSERT(FALSE); + } + } + break; + + default: + { + INFO_PRINTF2(_L("Unrecognised test case id %d"), iTestCaseId); + ASSERT(FALSE); + } + } + } + else + { + INFO_PRINTF1(_L("Error in reading config file")); + ASSERT(FALSE); + } + + RPointerArray& srcPosInfoArr = iParent.iSharedData->iVerifyPosInfoArr; + TPositionInfo* srcPosInfo = reinterpret_cast(srcPosInfoArr[0]); + TPosition srcPos; + srcPosInfo->GetPosition(srcPos); + + // Conect to the NetSim. + iNetSim.ConnectL(this); // Once we have connected, we will get NetSim callbacks. + //iNetSim.SetStepMode(ETrue); + + // Set plugin to use. + TUid pluginUid; + if(iParent.iSharedData->iTestModuleInUse) + { + pluginUid = TUid::Uid(KSimpleAssistanceDataProviderPluginUidValue); + } + else + { + pluginUid = TUid::Uid(KSuplAssistanceDataProviderPluginUidValue); + } + + if (!iNetSim.SetAssistanceDataProvider(pluginUid)) + { + INFO_PRINTF1(_L("Failed test, can't set NetSim's assistance data plugin uid.")); + SetTestStepResult(EFail); + iNetSim.Close(); + return TestStepResult(); + } + + if (!iNetSim.SetReferenceLocation(srcPos)) + { + INFO_PRINTF1(_L("Failed test, can't set NetSim's reference location.")); + SetTestStepResult(EFail); + iNetSim.Close(); + return TestStepResult(); + } + + // Set the MaxFix time required by the network. + TTimeIntervalMicroSeconds maxFixTime(150*1000000); + TLbsNetPosRequestQuality netPosQuality; + + netPosQuality.SetMaxFixTime(maxFixTime); + netPosQuality.SetMinHorizontalAccuracy(srcPos.HorizontalAccuracy()); + netPosQuality.SetMinVerticalAccuracy(srcPos.VerticalAccuracy()); + if (!iNetSim.SetQuality(netPosQuality)) + { + INFO_PRINTF1(_L("Failed test, can't set NetSim's quality.")); + SetTestStepResult(EFail); + iNetSim.Close(); + return TestStepResult(); + } + + //Timeout for Transmit Location + TLbsTransmitPositionOptions transmitOptions; + transmitOptions.SetTimeOut(120*1000000); + iTransmitPositioner.SetTransmitOptions(transmitOptions); + + // Kick off the keep alive timer. + TTimeIntervalMicroSeconds32 interval(KLbsKeepAlivePeriod); + iKeepAliveTimer->SetTimer(interval); + + if(iTestCaseId == 3) + { + const TInt32 time=1000; + iNetSim.SetResponseTime(time, ETrue); //TBD + } + + CActiveScheduler::Start(); + + err = iStatus.Int(); + switch(iTestCaseId) + { + case 1: + case 7: + break; + + case 2: + case 3: + case 10: + case 13: + { + if(KErrCancel != err) + { + INFO_PRINTF1(_L("CancelTransmitPosition() should have returned KErrCancel")); + SetTestStepResult(EFail); + } + } + break; + + case 4: + { + if(KErrCancel == err && !(iCallbackFlags & KLbsCallback_NetSim_Got_NotifyMeasurementReportControlFailure)) + { + INFO_PRINTF1(_L("Should have been completed with KErrCancel")); + SetTestStepResult(EFail); + } + } + //not using break as want to go ahead with below check. + + case 5: + case 11: + case 12: //TBD + // In testcases that cancel "late" in the X3P proceudure, cancellation may arrive to NRH before + // or after the session has finished. Therefore the error code will sometimes be + // KErrCancel (session cancelled) and other times KErrNone (nothing to cancel due to session complete). + // + { + if(!(KErrCancel == err || KErrNone == err)) + { + INFO_PRINTF1(_L("CancelTransmitPosition() should have returned KErrCancel or KErrNone")); + SetTestStepResult(EFail); + } + } + break; + + case 6: + case 8: + case 9: + { + if(KErrNone != err) + { + INFO_PRINTF1(_L("CancelTransmitPosition() should have returned KErrNone")); + SetTestStepResult(EFail); + } + } + break; + + default: + { + INFO_PRINTF2(_L("Unrecognised test case id %d"), iTestCaseId); + ASSERT(FALSE); + } + } + + // Clean up. + // Clear A-GPS timeout. + //if(iParent.iSharedData->iTestModuleInUse) + // { + // modDataIn.iRequestType = TModuleDataIn::EModuleRequestTimeOut; + // modDataIn.iTimeOut = 0; + // utils.NotifyModuleOfConfigChangeL(modDataIn); + // } + + iNetSim.ClearAssistanceDataFilters(); + iNetSim.Close(); + + if(iTestCaseId == 8 || iTestCaseId == 9) + { + CleanupStack::PopAndDestroy(&iTransmitPositioner2); + } + //CleanupStack::PopAndDestroy(iKeepAliveTimer); + CleanupStack::PopAndDestroy(&iTransmitPositioner); + CleanupStack::PopAndDestroy(&server); + + + if(iTestCaseId==13) //Wait while all activities in the PM stop and not interfere with the remaining tests + { + User::After(5000000); + } + } + + INFO_PRINTF1(_L("<<CT_LbsX3PStep_Cancel::doTestStepL()")); + + return TestStepResult(); + } + +void CT_LbsX3PStep_Cancel::MT_LbsX3PDoRefPosCallback(const TRequestStatus& aStatus,const TPositionInfo& aRefPosInfo) + { + //(void)aStatus; + (void)aRefPosInfo; + + INFO_PRINTF2(_L("Got - Transmit Position Reference Postion - Callback Event:: Status=%d"), aStatus.Int()); + + //if(iTestCaseId !=4) + { + SetCallbackFlag(KLbsCallback_Got_NotifyDoTransmitReferencePos); + } + + switch(iTestCaseId) + { + case 2: + case 3: + case 7: + { + if(aStatus != KErrCancel) + { + INFO_PRINTF1(_L(" MT_LbsX3PDoRefPosCallback should have been completed with KErrCancel")); + SetTestStepResult(EFail); + } + } + break; + + case 4: + { + if(aStatus != KErrCancel && aStatus != KErrNone) + { + INFO_PRINTF1(_L(" MT_LbsX3PDoRefPosCallback should have been completed with KErrCancel")); + SetTestStepResult(EFail); + } + } + break; + + case 13: + { + iTransmitPositioner.CancelTransmitPosition(); + } + break; + + default: + break; + } + } + + +/** Notify position update callback. + The notify position update as completed. We can mark as done in the callback flags. +**/ + +void CT_LbsX3PStep_Cancel::MT_LbsX3PDoTransmitPosCallback(TRequestStatus& aStatus, CT_LbsX3PDoTransmitPos* aDoTransmitPosAO) + { + (void)aDoTransmitPosAO; + INFO_PRINTF1(_L("Got - Transmit Position - Callback Event.")); + + //if(iTestCaseId == 18) + // { + // if(!(iCallbackFlags & KLbsCallback_NetSim_Got_NotifyMeasurementReportLocation)) + // { + // INFO_PRINTF1(_L(" TransmitPostion completed before ")); + // SetTestStepResult(EFail); + // } + // } + + iStatus = aStatus; + SetCallbackFlag(KLbsCallback_Got_NotifyDoTransmitPos); + } + +void CT_LbsX3PStep_Cancel::Connected() + { +// if(bConnected) +// return; + +// bConnected = ETrue; //probably a hack + + CT_LbsNetSimStep::Connected(); + + _LIT(KDestID, "07703125837"); + + TUint priority = X3P_PRIORITY_PUSH; + TPositionInfo* posInfo = NULL;; + RPointerArray& posInfoArr = iParent.iSharedData->iCurrentPosInfoArr; + posInfo = new(ELeave) TPositionInfo(); + + T_LbsUtils utils; + utils.ResetAndDestroy_PosInfoArr(posInfoArr); // Clear previous entries before new entry is appended. + posInfoArr.Append(posInfo); + + switch(iTestCaseId) + { + case 1: + //Do not start Transmit Position + break; + case 2: + { + // Request X3P + if(iRefPosFlag) + iDoTransmitPosAO->TransmitPositionReportingRefLoc( KDestID, priority, *posInfo); + else + iDoTransmitPosAO->TransmitPosition( KDestID, priority, *posInfo); + + //Is it good idea to wait for some time before starting cancel ....TBD + iTransmitPositioner.CancelTransmitPosition(); + + break; + } + case 3: + case 4: + case 5: + case 6: + case 10: + case 11: + { + if(iRefPosFlag) + iDoTransmitPosAO->TransmitPositionReportingRefLoc( KDestID, priority, *posInfo); + else + iDoTransmitPosAO->TransmitPosition( KDestID, priority, *posInfo); + } + break; + + case 7: + { + // Request X3P + if(iRefPosFlag) + iDoTransmitPosAO->TransmitPositionReportingRefLoc( KDestID, priority, *posInfo); + else + iDoTransmitPosAO->TransmitPosition( KDestID, priority, *posInfo); + + //Cancel the active object instead of calling CancelTransmitPosition() + iDoTransmitPosAO->Cancel(); + } + break; + + case 8: + { + + if(iRefPosFlag) + iDoTransmitPosAO->TransmitPositionReportingRefLoc( KDestID, priority, *posInfo); + else + iDoTransmitPosAO->TransmitPosition( KDestID, priority, *posInfo); + + //CancelTransmitPosition from different object + iTransmitPositioner2.CancelTransmitPosition(); + + } + break; + + case 9: + { + + if(iRefPosFlag) + iDoTransmitPosAO->TransmitPositionReportingRefLoc( KDestID, priority, *posInfo); + else + iDoTransmitPosAO->TransmitPosition( KDestID, priority, *posInfo); + + //Cancel() the other TransmitPostion Active Object + iDoTransmitPosAO2->Cancel(); + } + break; + + case 12: + case 13: + { + iDoTransmitPosAO->TransmitPositionReportingRefLoc( KDestID, priority, *posInfo); + } + break; + + default: + break; + } + } + +void CT_LbsX3PStep_Cancel::NotifyRegisterLcsMoLr(const TDesC& aData) + { + CT_LbsNetSimStep::NotifyRegisterLcsMoLr(aData); + + if(iTestCaseId==3) + { + iTransmitPositioner.CancelTransmitPosition(); + } + else if(iTestCaseId == 12) + { + iDoTransmitPosAO->GetRefLocWaiter()->Cancel(); + } + + //iNetSim.Next(KErrNone); + } + +void CT_LbsX3PStep_Cancel::NotifyMeasurementControlLocation(const TPositionInfo& aPosition, + const RLbsAssistanceDataBuilderSet& aData, + const TLbsNetPosRequestQuality& aQuality) + { + CT_LbsNetSimStep::NotifyMeasurementControlLocation(aPosition, aData, aQuality); + + //When we cancel the TransmitLocation request, it may happen that the ProcessAssistanceData request + //from a PM to the NG is sent before the cancel takes effect. + //If it happens we need to add KLbsCallback_NetSim_Got_NotifyMeasurementControlLocation to iFlagsToHaltOn + //to avoid the test hanging. + if(iTestCaseId==2 || iTestCaseId==7) + { + iFlagsToHaltOn |= KLbsCallback_NetSim_Got_NotifyMeasurementControlLocation; + } + + if(iTestCaseId==4) + { + iTransmitPositioner.CancelTransmitPosition(); + } + //iNetSim.Next(KErrNone); + } + +void CT_LbsX3PStep_Cancel::NotifyMeasurementReportLocation(const TPositionInfo& aPosition) + { + CT_LbsNetSimStep::NotifyMeasurementReportLocation(aPosition); + + if(iTestCaseId==5) + { + iTransmitPositioner.CancelTransmitPosition(); + } + + //iNetSim.Next(KErrNone); + } + +void CT_LbsX3PStep_Cancel::NotifyMeasurementReportControlFailure(TInt aReason) + { + CT_LbsNetSimStep::NotifyMeasurementReportControlFailure(aReason); + switch(iTestCaseId) + { + case 4: + //case 5: + //case 11: + { + iFlagsToHaltOn &= ~KLbsCallback_NetSim_Got_NotifyMeasurementReportLocation; + iFlagsToHaltOn &= ~KLbsCallback_NetSim_Got_NotifyFacilityLcsMoLrResult; + iFlagsToHaltOn |= KLbsCallback_NetSim_Got_NotifyMeasurementReportControlFailure; + + if(aReason != KErrCancel) + { + INFO_PRINTF1(_L("Should have returned KErrCancel")); + SetTestStepResult(EFail); + } + } + break; + case 2: + case 7: + iFlagsToHaltOn |= KLbsCallback_NetSim_Got_NotifyMeasurementReportControlFailure; + //break is ommited intentionally here + case 10: + case 13: + { + if(aReason != KErrCancel) + { + INFO_PRINTF1(_L("Should have returned KErrCancel")); + SetTestStepResult(EFail); + } + } + break; + + default: + ASSERT(FALSE); + break; + } + //iNetSim.Next(KErrNone); + } + + +void CT_LbsX3PStep_Cancel::NotifyFacilityLcsMoLrResult(TInt aReason, const TPositionInfo& aPosition) +{ + + CT_LbsNetSimStep::NotifyFacilityLcsMoLrResult(aReason,aPosition); + + switch(iTestCaseId) + { + case 11: + iTransmitPositioner.CancelTransmitPosition(); + break; + + default: + break; + } + + //iNetSim.Next(KErrNone); +} + + +void CT_LbsX3PStep_Cancel::NotifyReleaseLcsMoLr(TInt aReason) + { + CT_LbsNetSimStep::NotifyReleaseLcsMoLr(aReason); + + switch(iTestCaseId) + { + case 2: + case 3: + //case 4: + { + if(aReason != KErrCancel) + { + INFO_PRINTF1(_L("Should have returned KErrCancel")); + SetTestStepResult(EFail); + } + } + break; + + case 6: + // Add a very short delay here in order to ensure that the protocol module really has completed + // all the actions relating to the x3p operation. + User::After(100000); + iTransmitPositioner.CancelTransmitPosition(); + break; + + default: + break; + } + //iNetSim.Next(KErrNone); + } + +void CT_LbsX3PStep_Cancel::NotifyMeasurementReportRequestMoreAssistanceData(const TLbsAssistanceDataGroup& aFilter) + { + + switch (iTestCaseId) + { + case 10: + { + // Call base implementation. + CT_LbsNetSimStep::NotifyMeasurementReportRequestMoreAssistanceData(aFilter); + iTransmitPositioner.CancelTransmitPosition(); + // Add a short delay here in order to ensure that LBS has completed + // all the actions relating to the x3p cancel. + User::After(500000); + } + break; + + default: + //Note: In the case of real GPS, this message could come at anytime. + if(iParent.iSharedData->iTestModuleInUse) + { + INFO_PRINTF2(_L("Failed test, got un-expected request for more assistance data with filter value = %d."), aFilter); + SetTestStepResult(EFail); + } + break; + } + //iNetSim.Next(KErrNone); + }