DEADHEAD: Fixes for bug 2680 seem to be obsolete
- no remaining references to the empty bld.inf files
- networkprotocolmodules/suplprotocolmodule/sfgroup/bld.inf has been deleted
// 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 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 <lbs/test/tlbsutils.h>#include <lbs/test/ctlbsasyncwaiter.h>#include <lbs/EPos_CPosModules.h>#include <lbs/EPos_CPosModuleUpdate.h>#include "netpsy.hrh"/** * 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) { // Note the lack of ELeave. // This means that having insufficient memory will return NULL; CT_LbsClientStep_ModStat* testStep = new CT_LbsClientStep_ModStat(aParent); if (testStep) { TInt err = KErrNone; TRAP(err, testStep->ConstructL()); if (err) { delete testStep; testStep = NULL; } } return testStep; }void CT_LbsClientStep_ModStat::ConstructL() { // Re-enable the network PSY CPosModules* db = CPosModules::OpenL(); CleanupStack::PushL(db); CPosModuleUpdate* moduleUpdate = CPosModuleUpdate::NewLC(); moduleUpdate->SetUpdateAvailability(ETrue); moduleUpdate->SetUpdateVisibility(ETrue); TUid uid = TUid::Uid(KPosNETPSYImplUid); db->UpdateModuleL(uid, *moduleUpdate); CleanupStack::PopAndDestroy(moduleUpdate); CleanupStack::PopAndDestroy(db); }/** * 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: { if(iExpectedApiBehaviour == EApiVariant2) { T_LbsUtils utils; TPositionModuleId modId; modId = utils.GetAGpsModuleIdL(iServer); User::LeaveIfError(iPositioner.Open(iServer, modId)); CleanupClosePushL(iPositioner); } TPositionModuleStatus& testmodStatus = iParent.iSharedData->iCurrentModuleStatus; // Get device status events for ANY module: if(!DoRequestAndVerifyModStatusEventsL(TPositionModuleStatusEvent::EEventDeviceStatus, testmodStatus)) { SetTestStepResult(EFail); } if(iExpectedApiBehaviour == EApiVariant2) { CleanupStack::PopAndDestroy(&iPositioner); } } break; // LBS-Mod-Status-Event-0003 case 23: { if(iExpectedApiBehaviour == EApiVariant2) { T_LbsUtils utils; TPositionModuleId modId; modId = utils.GetAGpsModuleIdL(iServer); User::LeaveIfError(iPositioner.Open(iServer, modId)); CleanupClosePushL(iPositioner); } TPositionModuleStatus& testmodStatus = iParent.iSharedData->iCurrentModuleStatus; // Get device status events for (test) agps module if(!DoRequestAndVerifyAGPSModStatusEventsL(TPositionModuleStatusEvent::EEventDeviceStatus, testmodStatus)) { SetTestStepResult(EFail); } if(iExpectedApiBehaviour == EApiVariant1)// on variant2 we don't see any other status updates (expected) { // Get device status events for ALL modules if(!DoRequestAndVerifyModStatusEventsL(TPositionModuleStatusEvent::EEventDeviceStatus, testmodStatus)) { SetTestStepResult(EFail); } } else { CleanupStack::PopAndDestroy(&iPositioner); } } break; // LBS-Mod-Status-Event-0004 case 24: { if(iExpectedApiBehaviour == EApiVariant2) { T_LbsUtils utils; TPositionModuleId modId; modId = utils.GetAGpsModuleIdL(iServer); User::LeaveIfError(iPositioner.Open(iServer, modId)); CleanupClosePushL(iPositioner); } TPositionModuleStatus& testmodStatus = iParent.iSharedData->iCurrentModuleStatus; // Get AGPS device status events if(!DoRequestAndVerifyAGPSModStatusEventsL(TPositionModuleStatusEvent::EEventDeviceStatus, testmodStatus)) { SetTestStepResult(EFail); } } if(iExpectedApiBehaviour == EApiVariant2) { CleanupStack::PopAndDestroy(&iPositioner); } break; // LBS-Mod-Status-Event-0005 case 25: { if(iExpectedApiBehaviour == EApiVariant2) { T_LbsUtils utils; TPositionModuleId modId; modId = utils.GetAGpsModuleIdL(iServer); User::LeaveIfError(iPositioner.Open(iServer, modId)); CleanupClosePushL(iPositioner); } TPositionModuleStatus& testmodStatus = iParent.iSharedData->iCurrentModuleStatus; // Get device status events if(!DoRequestAndVerifyAGPSModStatusEventsL(TPositionModuleStatusEvent::EEventDataQualityStatus, testmodStatus)) { SetTestStepResult(EFail); } if(iExpectedApiBehaviour == EApiVariant2) { CleanupStack::PopAndDestroy(&iPositioner); } } break; // LBS-Mod-Status-Event-0009 case 29: { if(iExpectedApiBehaviour == EApiVariant2) { T_LbsUtils utils; TPositionModuleId modId; modId = utils.GetAGpsModuleIdL(iServer); User::LeaveIfError(iPositioner.Open(iServer, modId)); CleanupClosePushL(iPositioner); } 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); } if(iExpectedApiBehaviour == EApiVariant2) { CleanupStack::PopAndDestroy(&iPositioner); } } 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); if(iExpectedApiBehaviour == EApiVariant1) { // Verify that the module status is ready before we make any requests. DoVerifyModStatus(TPositionModuleStatus::EDeviceReady,modId); } else // on S60 the device starts off in 'inactive' state { // Verify that the module status is ready before we make any requests. DoVerifyModStatus(TPositionModuleStatus::EDeviceInactive,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(); TPositionModuleStatusEvent::TModuleEvent eventsExpected; if(iExpectedApiBehaviour == EApiVariant1) { // Check that the change that happened was the correct thing. eventsExpected = TPositionModuleStatusEvent::EEventDeviceStatus; } else // on s60 we also get a data quality status because this doesn't get reported until the PSY is loaded { eventsExpected = TPositionModuleStatusEvent::EEventDeviceStatus | TPositionModuleStatusEvent::EEventDataQualityStatus; } 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(); }