diff -r 834e27cad510 -r 16118e24b93b locationtriggering/tsrc/lbtengine_test/firingofstartuptriggerandlisttrigger/src/firingofstartuptriggerandlisttriggerblocks.cpp --- a/locationtriggering/tsrc/lbtengine_test/firingofstartuptriggerandlisttrigger/src/firingofstartuptriggerandlisttriggerblocks.cpp Tue Jul 06 14:44:11 2010 +0300 +++ b/locationtriggering/tsrc/lbtengine_test/firingofstartuptriggerandlisttrigger/src/firingofstartuptriggerandlisttriggerblocks.cpp Wed Aug 18 10:11:45 2010 +0300 @@ -75,7 +75,15 @@ //#include #include "firingofstartuptriggerandlisttrigger.h" #include "t_triggerfireobserver.h" -#include + + +#include +#include +#include +#include +#include +#include +#include // EXTERNAL DATA STRUCTURES //extern ?external_data; @@ -139,6 +147,82 @@ } +void CFiringofStartupTriggerAndListTrigger::EnableSimPSYL() + { + CPosModules* db = CPosModules::OpenL(); + CleanupStack::PushL( db ); + + // List entries + CPosModuleIdList* idList = db->ModuleIdListLC(); + CPosModuleUpdate* updateParams = CPosModuleUpdate::NewLC(); + + // Get the display name and status of each installed positioning plug-in + for (TInt i = 0; i < idList->Count(); i++) + { + // get PSY info + TPositionModuleInfo moduleInfo; + db->GetModuleInfoL( (*idList)[i], moduleInfo ); + + if ( moduleInfo.IsAvailable() ) + { + // read PSY’s name + TBuf moduleName; + moduleInfo.GetModuleName( moduleName ); + TPositionModuleId id = moduleInfo.ModuleId(); + + updateParams->SetUpdateAvailability( EFalse ); + db->UpdateModuleL( id, *updateParams ); + } + } + TPositionModuleId id2 = {0x101F7A81}; + updateParams->SetUpdateAvailability( ETrue ); + db->UpdateModuleL( id2, *updateParams ); + + CleanupStack::PopAndDestroy( updateParams ); + CleanupStack::PopAndDestroy( idList ); + CleanupStack::PopAndDestroy( db ); + } + +void CFiringofStartupTriggerAndListTrigger::SetProfileToOfflineL() + { + if( !iProEngine ) + iProEngine= ProEngFactory::NewEngineL(); + // Store current profile id. + iCurrentProfile = iProEngine->ActiveProfileId(); + // Change the active profile to Off-line + iProEngine->SetActiveProfileL( EProfileOffLineId ); + } + +void CFiringofStartupTriggerAndListTrigger::RestoreProfileL() + { + if( !iProEngine ) + iProEngine = ProEngFactory::NewEngineL(); + iProEngine->SetActiveProfileL( iCurrentProfile ); + } + +//------------------------------------------------------------------------------ +//CFiringofStartupTriggerAndListTrigger::GetCurrentCoordinateL +//------------------------------------------------------------------------------ +void CFiringofStartupTriggerAndListTrigger::GetCurrentCoordinateL( TCoordinate& aCoordinate ) + { + CTriggerFireObserver* notifier= CTriggerFireObserver::NewL(); + CleanupStack::PushL( notifier ); + CActiveSchedulerWait* wait = new ( ELeave ) CActiveSchedulerWait; + CleanupStack::PushL( wait ); + + TPositionInfo positionInfo; + // Ownership of wait is taken by notifier + notifier->CurrentPositionL( positionInfo,wait ); + CleanupStack::Pop( wait ); + wait->Start(); + TPosition position; + positionInfo.GetPosition( position ); + aCoordinate.SetCoordinate( position.Latitude(),position.Longitude(),position.Altitude() ); + CleanupStack::PopAndDestroy( notifier ); + } + + + // ----------------------------------------------------------------------------- // CFiringofStartupTriggerAndListTrigger::RunMethodL // Run specified method. Contains also table of test mothods and their names. @@ -155,53 +239,47 @@ // Second is the actual implementation member function. ENTRY( "test01", CFiringofStartupTriggerAndListTrigger::TCLBTFW001_testL ), - ENTRY( "test02", CFiringofStartupTriggerAndListTrigger::TCLBTFW002_testL ), - ENTRY( "test03", CFiringofStartupTriggerAndListTrigger::TCLBTFW003_testL ), - ENTRY( "test04", CFiringofStartupTriggerAndListTrigger::TCLBTFW004_testL ), - ENTRY( "test05", CFiringofStartupTriggerAndListTrigger::TCLBTFW005_testL ), - ENTRY( "test06", CFiringofStartupTriggerAndListTrigger::TCLBTFW006_testL ), - ENTRY( "test07", CFiringofStartupTriggerAndListTrigger::TCLBTFW007_testL ), - ENTRY( "test08", CFiringofStartupTriggerAndListTrigger::TCLBTFW008_testL ), - ENTRY( "test09", CFiringofStartupTriggerAndListTrigger::TCLBTFW009_testL ), - ENTRY( "test10", CFiringofStartupTriggerAndListTrigger::TCLBTFW010_testL ), - ENTRY( "test11", CFiringofStartupTriggerAndListTrigger::TCLBTFW011_testL ), - ENTRY( "test12", CFiringofStartupTriggerAndListTrigger::TCLBTFW012_testL ), - ENTRY( "test13", CFiringofStartupTriggerAndListTrigger::TCLBTFW013_testL ), - ENTRY( "test14", CFiringofStartupTriggerAndListTrigger::TCLBTFW014_testL ), - ENTRY( "test15", CFiringofStartupTriggerAndListTrigger::TCLBTFW015_testL ), - ENTRY( "test16", CFiringofStartupTriggerAndListTrigger::TCLBTFW016_testL ), - ENTRY( "test17", CFiringofStartupTriggerAndListTrigger::TCLBTFW017_testL ), - ENTRY( "test18", CFiringofStartupTriggerAndListTrigger::TCLBTFW018_testL ), - - ENTRY( "test70", CFiringofStartupTriggerAndListTrigger::TCLBTFW070_testL ), - ENTRY( "test71", CFiringofStartupTriggerAndListTrigger::TCLBTFW071_testL ), - ENTRY( "test72", CFiringofStartupTriggerAndListTrigger::TCLBTFW072_testL ), - ENTRY( "test73", CFiringofStartupTriggerAndListTrigger::TCLBTFW073_testL ), - ENTRY( "test74", CFiringofStartupTriggerAndListTrigger::TCLBTFW074_testL ), - ENTRY( "test75", CFiringofStartupTriggerAndListTrigger::TCLBTFW075_testL ), - ENTRY( "test76", CFiringofStartupTriggerAndListTrigger::TCLBTFW076_testL ), - ENTRY( "test77", CFiringofStartupTriggerAndListTrigger::TCLBTFW077_testL ), - ENTRY( "test78", CFiringofStartupTriggerAndListTrigger::TCLBTFW078_testL ), - ENTRY( "test79", CFiringofStartupTriggerAndListTrigger::TCLBTFW079_testL ), - ENTRY( "test80", CFiringofStartupTriggerAndListTrigger::TCLBTFW080_testL ), - ENTRY( "test81", CFiringofStartupTriggerAndListTrigger::TCLBTFW081_testL ), - ENTRY( "test82", CFiringofStartupTriggerAndListTrigger::TCLBTFW082_testL ), - ENTRY( "test83", CFiringofStartupTriggerAndListTrigger::TCLBTFW083_testL ), - ENTRY( "test84", CFiringofStartupTriggerAndListTrigger::TCLBTFW084_testL ), - ENTRY( "test85", CFiringofStartupTriggerAndListTrigger::TCLBTFW085_testL ), - ENTRY( "test86", CFiringofStartupTriggerAndListTrigger::TCLBTFW086_testL ), - ENTRY( "test87", CFiringofStartupTriggerAndListTrigger::TCLBTFW087_testL ), - ENTRY( "test88", CFiringofStartupTriggerAndListTrigger::TCLBTFW088_testL ), - ENTRY( "test89", CFiringofStartupTriggerAndListTrigger::TCLBTFW089_testL ), - ENTRY( "test90", CFiringofStartupTriggerAndListTrigger::TCLBTFW090_testL ), - ENTRY( "test91", CFiringofStartupTriggerAndListTrigger::TCLBTFW091_testL ), - ENTRY( "test92", CFiringofStartupTriggerAndListTrigger::TCLBTFW092_testL ), - ENTRY( "test93", CFiringofStartupTriggerAndListTrigger::TCLBTFW093_testL ), - ENTRY( "test94", CFiringofStartupTriggerAndListTrigger::TCLBTFW094_testL ), - ENTRY( "test95", CFiringofStartupTriggerAndListTrigger::TCLBTFW095_testL ), - - - + ENTRY( "test02", CFiringofStartupTriggerAndListTrigger::TCLBTFW002_testL ), + ENTRY( "test03", CFiringofStartupTriggerAndListTrigger::TCLBTFW003_testL ), + ENTRY( "test04", CFiringofStartupTriggerAndListTrigger::TCLBTFW004_testL ), + ENTRY( "test05", CFiringofStartupTriggerAndListTrigger::TCLBTFW005_testL ), + ENTRY( "test06", CFiringofStartupTriggerAndListTrigger::TCLBTFW006_testL ), + ENTRY( "test07", CFiringofStartupTriggerAndListTrigger::TCLBTFW007_testL ), + ENTRY( "test08", CFiringofStartupTriggerAndListTrigger::TCLBTFW008_testL ), + ENTRY( "test09", CFiringofStartupTriggerAndListTrigger::TCLBTFW009_testL ), + ENTRY( "test10", CFiringofStartupTriggerAndListTrigger::TCLBTFW010_testL ), + ENTRY( "test11", CFiringofStartupTriggerAndListTrigger::TCLBTFW011_testL ), + ENTRY( "test12", CFiringofStartupTriggerAndListTrigger::TCLBTFW012_testL ), + ENTRY( "test13", CFiringofStartupTriggerAndListTrigger::TCLBTFW013_testL ), + ENTRY( "test14", CFiringofStartupTriggerAndListTrigger::TCLBTFW014_testL ), + ENTRY( "test15", CFiringofStartupTriggerAndListTrigger::TCLBTFW015_testL ), + + ENTRY( "test70", CFiringofStartupTriggerAndListTrigger::TCLBTFW070_testL ), + ENTRY( "test71", CFiringofStartupTriggerAndListTrigger::TCLBTFW071_testL ), + ENTRY( "test72", CFiringofStartupTriggerAndListTrigger::TCLBTFW072_testL ), + ENTRY( "test73", CFiringofStartupTriggerAndListTrigger::TCLBTFW073_testL ), + ENTRY( "test74", CFiringofStartupTriggerAndListTrigger::TCLBTFW074_testL ), + ENTRY( "test75", CFiringofStartupTriggerAndListTrigger::TCLBTFW075_testL ), + ENTRY( "test76", CFiringofStartupTriggerAndListTrigger::TCLBTFW076_testL ), + ENTRY( "test77", CFiringofStartupTriggerAndListTrigger::TCLBTFW077_testL ), + ENTRY( "test78", CFiringofStartupTriggerAndListTrigger::TCLBTFW078_testL ), + ENTRY( "test79", CFiringofStartupTriggerAndListTrigger::TCLBTFW079_testL ), + ENTRY( "test80", CFiringofStartupTriggerAndListTrigger::TCLBTFW080_testL ), + ENTRY( "test81", CFiringofStartupTriggerAndListTrigger::TCLBTFW081_testL ), + ENTRY( "test82", CFiringofStartupTriggerAndListTrigger::TCLBTFW082_testL ), + ENTRY( "test83", CFiringofStartupTriggerAndListTrigger::TCLBTFW083_testL ), + ENTRY( "test84", CFiringofStartupTriggerAndListTrigger::TCLBTFW084_testL ), + ENTRY( "test85", CFiringofStartupTriggerAndListTrigger::TCLBTFW085_testL ), + ENTRY( "test86", CFiringofStartupTriggerAndListTrigger::TCLBTFW086_testL ), + ENTRY( "test87", CFiringofStartupTriggerAndListTrigger::TCLBTFW087_testL ), + ENTRY( "test88", CFiringofStartupTriggerAndListTrigger::TCLBTFW088_testL ), + ENTRY( "test89", CFiringofStartupTriggerAndListTrigger::TCLBTFW089_testL ), + ENTRY( "test90", CFiringofStartupTriggerAndListTrigger::TCLBTFW090_testL ), + ENTRY( "test91", CFiringofStartupTriggerAndListTrigger::TCLBTFW091_testL ), + ENTRY( "test92", CFiringofStartupTriggerAndListTrigger::TCLBTFW092_testL ), + ENTRY( "test93", CFiringofStartupTriggerAndListTrigger::TCLBTFW093_testL ), + ENTRY( "test94", CFiringofStartupTriggerAndListTrigger::TCLBTFW094_testL ), + ENTRY( "test95", CFiringofStartupTriggerAndListTrigger::TCLBTFW095_testL ), }; const TInt count = sizeof( KFunctions ) / @@ -224,18 +302,14 @@ { iLog->Log(_L("Entering Test1")); - _LIT( KSimulationFile,"c:\\system\\data\\simu_move1.sps" ); - // _LIT( KSimulationFile0,"c:\\system\\data\\simu_move2.sps" ); - RPositionServer iLocationServer; - RPositioner iPositioner; - - // Connect to the location server - User::LeaveIfError(iLocationServer.Connect()); - - // Open the positioner - User::LeaveIfError(iPositioner.Open(iLocationServer));//,KPosSimulationPsyImplUid)); - - RLbtServer lbtserver; + _LIT( KSimulationFile,"c:\\system\\data\\simu_move1.sps" ); + + // Set profile to offline mode.This is required to avoid movement detection blocking the + // trigger firing. + SetProfileToOfflineL(); + // Enable simulation psy + EnableSimPSYL(); + RLbtServer lbtserver; RLbt lbt; iLog->Log(_L("Before connecting")); User::LeaveIfError( lbtserver.Connect() ); @@ -278,8 +352,8 @@ trig->SetRequestorL(ReqType,ReqFormat,ReqData); // set condition - TCoordinate coordinate(62.5285,23.9385); - // TCoordinate coordinate(62.4438,23.9385); + TCoordinate coordinate; + GetCurrentCoordinateL( coordinate ); CLbtGeoCircle* circle=CLbtGeoCircle::NewL(coordinate,1000); CleanupStack::PushL( circle ); @@ -316,8 +390,7 @@ firePosition.Distance(coordinate,trigDistance); //close sim psy - iPositioner.Close(); - iLocationServer.Close(); + RestoreProfileL(); if( trigDistance<=1000 && FireInfo.iTriggerId==trigId ) { lbt.DeleteTriggerL(trigId); @@ -355,7 +428,13 @@ RLbt lbt; RPositionServer iLocationServer; RPositioner iPositioner; - + + // Set profile to offline mode.This is required to avoid movement detection blocking the + // trigger firing. + SetProfileToOfflineL(); + // Enable simulation psy + EnableSimPSYL(); + // Connect to the location server User::LeaveIfError(iLocationServer.Connect()); @@ -396,9 +475,10 @@ trig->SetRequestorL(ReqType,ReqFormat,ReqData); // set condition - TCoordinate coordinate(62.5285,23.9385); - - CLbtGeoCircle* circle=CLbtGeoCircle::NewL(coordinate,1000); + TCoordinate coordinate; + GetCurrentCoordinateL( coordinate ); + + CLbtGeoCircle* circle=CLbtGeoCircle::NewL(coordinate,200); CleanupStack::PushL( circle ); @@ -424,10 +504,12 @@ notifier->StartNotification( wait ); wait->Start( ); + iLog->Log(_L("Trigger fired")); TLbtTriggerFireInfo FireInfo; TReal32 trigDistance; TPosition firePosition; FireInfo = notifier->GetFiredTrigger(); + iLog->Log(_L("Trigger fired")); FireInfo.iFiredPositionInfo.GetPosition(firePosition); firePosition.Distance(coordinate,trigDistance); @@ -435,7 +517,8 @@ iPositioner.Close(); iLocationServer.Close(); - if( trigDistance>=1000 && FireInfo.iTriggerId==trigId ) + RestoreProfileL(); + if( FireInfo.iTriggerId==trigId ) { lbt.DeleteTriggerL(trigId); CleanupStack::PopAndDestroy( notifier ); @@ -453,7 +536,7 @@ CleanupStack::Pop( &lbt ); CleanupStack::PopAndDestroy( &lbtserver ); delete wait; - + iLog->Log(_L("Test case passed ")); return -99; } @@ -471,13 +554,12 @@ RPositionServer iLocationServer; RPositioner iPositioner; - // Connect to the location server - User::LeaveIfError(iLocationServer.Connect()); - - // Open the positioner - User::LeaveIfError(iPositioner.Open(iLocationServer));//,KPosSimulationPsyImplUid)); - - + // Set profile to offline mode.This is required to avoid movement detection blocking the + // trigger firing. + SetProfileToOfflineL(); + // Enable simulation psy + EnableSimPSYL(); + User::LeaveIfError( lbtserver.Connect() ); CleanupClosePushL( lbtserver ); User::LeaveIfError( lbt.Open( lbtserver ) ); @@ -512,9 +594,10 @@ trig->SetRequestorL(ReqType,ReqFormat,ReqData); // set condition - TCoordinate coordinate(62.5285,23.9385); - - CLbtGeoCircle* circle=CLbtGeoCircle::NewL(coordinate,1000); + TCoordinate coordinate; + GetCurrentCoordinateL( coordinate ); + + CLbtGeoCircle* circle=CLbtGeoCircle::NewL(coordinate,200); CleanupStack::PushL( circle ); @@ -538,15 +621,13 @@ notifier->CreateTriggers( lbt,*trig,trigId,ETrue,wait ); wait->Start( ); - /* notifier->StartNotification( wait ); - wait->Start( );*/ + RestoreProfileL(); CleanupStack::PopAndDestroy( notifier ); CleanupStack::PopAndDestroy( trig ); CleanupStack::Pop( &lbt ); CleanupStack::PopAndDestroy( &lbtserver ); delete wait; - User::Exit(0); return KErrNone; } @@ -566,6 +647,12 @@ RPositionServer iLocationServer; RPositioner iPositioner; + // Set profile to offline mode.This is required to avoid movement detection blocking the + // trigger firing. + SetProfileToOfflineL(); + // Enable simulation psy + EnableSimPSYL(); + // Connect to the location server User::LeaveIfError(iLocationServer.Connect()); @@ -605,7 +692,8 @@ trig->SetRequestorL(ReqType,ReqFormat,ReqData); // set condition - TCoordinate coordinate(62.5285,23.9385); + TCoordinate coordinate; + GetCurrentCoordinateL( coordinate ); CLbtGeoCircle* circle=CLbtGeoCircle::NewL(coordinate,1000); CleanupStack::PushL( circle ); @@ -645,7 +733,8 @@ iPositioner.Close(); iLocationServer.Close(); - if( trigDistance<=1000 && FireInfo.iTriggerId==trigId ) + RestoreProfileL(); + if( FireInfo.iTriggerId==trigId ) { lbt.DeleteTriggerL(trigId); CleanupStack::PopAndDestroy( notifier ); @@ -689,6 +778,11 @@ // Open the positioner User::LeaveIfError(iPositioner.Open(iLocationServer));//,KPosSimulationPsyImplUid)); + // Set profile to offline mode.This is required to avoid movement detection blocking the + // trigger firing. + SetProfileToOfflineL(); + // Enable simulation psy + EnableSimPSYL(); User::LeaveIfError( lbtserver.Connect() ); CleanupClosePushL( lbtserver ); @@ -727,7 +821,8 @@ trig->SetRequestorL(ReqType,ReqFormat,ReqData); // set condition - TCoordinate coordinate(62.5285,23.9385); + TCoordinate coordinate; + GetCurrentCoordinateL( coordinate ); CLbtGeoCircle* circle=CLbtGeoCircle::NewL(coordinate,1000); CleanupStack::PushL( circle ); @@ -763,6 +858,7 @@ // User::After(60000000); iPositioner.Close(); iLocationServer.Close(); + RestoreProfileL(); if(notifier->iTriggerFireCount> 0) { CleanupStack::PopAndDestroy( notifier ); @@ -804,6 +900,11 @@ // Open the positioner User::LeaveIfError(iPositioner.Open(iLocationServer));//,KPosSimulationPsyImplUid)); + // Set profile to offline mode.This is required to avoid movement detection blocking the + // trigger firing. + SetProfileToOfflineL(); + // Enable simulation psy + EnableSimPSYL(); User::LeaveIfError( lbtserver.Connect() ); CleanupClosePushL( lbtserver ); @@ -842,8 +943,8 @@ trig->SetRequestorL(ReqType,ReqFormat,ReqData); // set condition - TCoordinate coordinate(62.5285,23.9385); - // TCoordinate coordinate(62.4438,23.9385); + TCoordinate coordinate; + GetCurrentCoordinateL( coordinate ); CLbtGeoCircle* circle=CLbtGeoCircle::NewL(coordinate,1000); CleanupStack::PushL( circle ); @@ -880,6 +981,7 @@ firePosition.Distance(coordinate,trigDistance); iPositioner.Close(); iLocationServer.Close(); + RestoreProfileL(); if(trigDistance<=1000 && FireInfo.iTriggerId==trigId ) { @@ -894,7 +996,7 @@ } else { - CleanupStack::PopAndDestroy( notifier ); + CleanupStack::PopAndDestroy( notifier ); CleanupStack::PopAndDestroy( trig ); CleanupStack::Pop( &lbt ); CleanupStack::PopAndDestroy( &lbtserver ); @@ -930,6 +1032,12 @@ User::LeaveIfError( lbt.Open( lbtserver ) ); CleanupClosePushL( lbt ); + // Set profile to offline mode.This is required to avoid movement detection blocking the + // trigger firing. + SetProfileToOfflineL(); + // Enable simulation psy + EnableSimPSYL(); + //Delete all the existing trggers TRAP_IGNORE(lbt.DeleteTriggersL()); @@ -957,7 +1065,8 @@ trig->SetRequestorL(ReqType,ReqFormat,ReqData); // set condition - TCoordinate coordinate(62.5285,23.9385); + TCoordinate coordinate; + GetCurrentCoordinateL( coordinate ); CLbtGeoCircle* circle=CLbtGeoCircle::NewL(coordinate,1000); CleanupStack::PushL( circle ); @@ -994,6 +1103,7 @@ firePosition.Distance(coordinate,trigDistance); iPositioner.Close(); iLocationServer.Close(); + RestoreProfileL(); if(trigDistance==0 && FireInfo.iTriggerId==trigId ) { @@ -1043,6 +1153,12 @@ User::LeaveIfError( lbt.Open( lbtserver ) ); CleanupClosePushL( lbt ); + // Set profile to offline mode.This is required to avoid movement detection blocking the + // trigger firing. + SetProfileToOfflineL(); + // Enable simulation psy + EnableSimPSYL(); + //Delete all the existing trggers TRAP_IGNORE(lbt.DeleteTriggersL()); @@ -1069,7 +1185,8 @@ trig->SetRequestorL(ReqType,ReqFormat,ReqData); // set condition - TCoordinate coordinate(62.5285,23.9385); + TCoordinate coordinate; + GetCurrentCoordinateL( coordinate ); coordinate.Move(90,2000); CLbtGeoCircle* circle=CLbtGeoCircle::NewL(coordinate,1000); CleanupStack::PushL( circle ); @@ -1106,6 +1223,7 @@ firePosition.Distance(coordinate,trigDistance); iPositioner.Close(); iLocationServer.Close(); + RestoreProfileL(); if( trigDistance>=1000 && FireInfo.iTriggerId==trigId ) { @@ -1152,6 +1270,12 @@ User::LeaveIfError( lbt.Open( lbtserver ) ); CleanupClosePushL( lbt ); + // Set profile to offline mode.This is required to avoid movement detection blocking the + // trigger firing. + SetProfileToOfflineL(); + // Enable simulation psy + EnableSimPSYL(); + //Delete all the existing trggers TRAP_IGNORE(lbt.DeleteTriggersL()); @@ -1178,7 +1302,8 @@ trig->SetRequestorL(ReqType,ReqFormat,ReqData); // set condition - TCoordinate coordinate(62.5285,23.9385); + TCoordinate coordinate; + GetCurrentCoordinateL( coordinate ); CLbtGeoCircle* circle=CLbtGeoCircle::NewL(coordinate,1000); CleanupStack::PushL( circle ); @@ -1213,6 +1338,7 @@ wait->Start( ); iPositioner.Close(); iLocationServer.Close(); + RestoreProfileL(); if(notifier->iTriggerFireCount== 0) { CleanupStack::PopAndDestroy( notifier ); @@ -1262,6 +1388,11 @@ User::LeaveIfError( lbt.Open( lbtserver ) ); CleanupClosePushL( lbt ); + // Set profile to offline mode.This is required to avoid movement detection blocking the + // trigger firing. + SetProfileToOfflineL(); + // Enable simulation psy + EnableSimPSYL(); //Delete all the existing trggers TRAP_IGNORE(lbt.DeleteTriggersL()); @@ -1288,7 +1419,8 @@ trig->SetRequestorL(ReqType,ReqFormat,ReqData); // set condition - TCoordinate coordinate(62.5285,23.9385); + TCoordinate coordinate; + GetCurrentCoordinateL( coordinate ); coordinate.Move(90,1100); CLbtGeoCircle* circle=CLbtGeoCircle::NewL(coordinate,1000); CleanupStack::PushL( circle ); @@ -1321,6 +1453,7 @@ wait->Start( ); iPositioner.Close(); iLocationServer.Close(); + RestoreProfileL(); if(notifier->iTriggerFireCount== 0) { CleanupStack::PopAndDestroy( notifier ); @@ -1356,7 +1489,8 @@ User::LeaveIfError( lbtserver.Connect() ); CleanupClosePushL( lbtserver ); - TCoordinate coordinate(62.4438,23.9385); + TCoordinate coordinate; + GetCurrentCoordinateL( coordinate ); TestModuleIf().SetExitReason( CTestModuleIf::EPanic, 2); CTriggerFireObserver* notifier= CTriggerFireObserver::NewL( lbt,coordinate ); CActiveSchedulerWait* wait=new(ELeave)CActiveSchedulerWait; @@ -1422,7 +1556,8 @@ trig->SetRequestorL(ReqType,ReqFormat,ReqData); // set condition - TCoordinate coordinate(62.5285,23.9385); + TCoordinate coordinate; + GetCurrentCoordinateL( coordinate ); CLbtGeoCircle* circle=CLbtGeoCircle::NewL(coordinate,1000); CleanupStack::PushL( circle ); @@ -1486,6 +1621,11 @@ User::LeaveIfError( lbt.Open( lbtserver ) ); CleanupClosePushL( lbt ); + // Set profile to offline mode.This is required to avoid movement detection blocking the + // trigger firing. + SetProfileToOfflineL(); + // Enable simulation psy + EnableSimPSYL(); //Delete all the existing trggers TRAP_IGNORE(lbt.DeleteTriggersL()); @@ -1513,7 +1653,8 @@ trig->SetRequestorL(ReqType,ReqFormat,ReqData); // set condition - TCoordinate coordinate(62.5285,23.9385); + TCoordinate coordinate; + GetCurrentCoordinateL( coordinate ); CLbtGeoCircle* circle=CLbtGeoCircle::NewL(coordinate,10000); CleanupStack::PushL( circle ); @@ -1564,6 +1705,7 @@ wait->Start( ); iPositioner.Close(); iLocationServer.Close(); + RestoreProfileL(); if(notifier->iTriggerFireCount > 0) { lbt.DeleteTriggerL(trigId); @@ -1590,371 +1732,10 @@ } - // Testing the hysteresis condition for entry type of trigger - -TInt CFiringofStartupTriggerAndListTrigger::TCLBTFW014_testL( CStifItemParser& /* aItem */ ) - { - - _LIT( KSimulationFile,"c:\\system\\data\\test1.nme" ); - - RLbtServer lbtserver; - RLbt lbt; - RPositionServer iLocationServer; - RPositioner iPositioner; - - // Connect to the location server - User::LeaveIfError(iLocationServer.Connect()); - - // Open the positioner - User::LeaveIfError(iPositioner.Open(iLocationServer));//,KPosSimulationPsyImplUid)); - - - User::LeaveIfError( lbtserver.Connect() ); - CleanupClosePushL( lbtserver ); - iLog->Log(_L("Connection to RLbtServer Passed ")); - User::LeaveIfError( lbt.Open( lbtserver ) ); - iLog->Log(_L("Subsession opened ")); - CleanupClosePushL( lbt ); - - //Delete all the existing trggers - TRAP_IGNORE(lbt.DeleteTriggersL()); - - CRepository* repository = CRepository::NewLC(KCRUidSimulationPSY); - iLog->Log(_L("Simulation PSY Repository object created")); - User::LeaveIfError(repository->Set(KCRKeySimPSYSimulationFile, KSimulationFile)); - iLog->Log(_L("Simulation input file set ")); - CleanupStack::PopAndDestroy(repository); - - //Construct a session trigger - CLbtStartupTrigger* trig = CLbtStartupTrigger::NewL(); - - //Push to cleanup stack - CleanupStack::PushL( trig ); - iLog->Log(_L("Startup Trigger Entry Created ")); - - // Set Name - trig->SetNameL(_L("Trigger1")); - // _LIT( KMyTriggerHandlingProcessName, "About.exe"); - _LIT( KMyTriggerHandlingProcessName, "ConsoleUI.exe"); - - TSecureId secureid; - trig->SetProcessId(KMyTriggerHandlingProcessName,secureid); - //Set Requestor - CRequestorBase::TRequestorType ReqType=CRequestorBase::ERequestorUnknown; - CRequestorBase::_TRequestorFormat ReqFormat=CRequestorBase::EFormatUnknown; - TBuf ReqData=_L(""); - trig->SetRequestorL(ReqType,ReqFormat,ReqData); - // set condition - - TCoordinate coordinate(65.5285,23.9385); - // TCoordinate coordinate(62.4438,23.9385); - - CLbtGeoCircle* circle=CLbtGeoCircle::NewL(coordinate,1000); - CleanupStack::PushL( circle ); - - - // ownership of circle object transferred to the condition object - CLbtTriggerConditionArea* condition=CLbtTriggerConditionArea::NewL( - circle, - CLbtTriggerConditionArea::EFireOnEnter); - - CleanupStack::Pop( circle ); - - trig->SetCondition(condition); // ownership transferred to object - - TLbtTriggerId trigId; - - - CTriggerFireObserver* notifier= CTriggerFireObserver::NewL( lbt,coordinate); - CleanupStack::PushL( notifier ); - - CActiveSchedulerWait* wait=new(ELeave)CActiveSchedulerWait; - - notifier->CreateTriggers( lbt,*trig,trigId,ETrue,wait ); - wait->Start( ); - iLog->Log(_L("Trigger Created")); - notifier->StartNotification( wait ); - wait->Start( ); - // time_t time1,time2; - // Time(); - // notifier->StartNotification( wait ); - // wait->Start( ); - - // notifier->StartNotification( wait ); - wait->Start( ); - notifier->iWaitStatus = KRequestPending; - - // notifier->StartNotification( wait ); - notifier->After(1000000); - wait->Start( ); - - iLog->Log(_L("Trigger Fired")); - TLbtTriggerFireInfo FireInfo; - TReal32 trigDistance; - TPosition firePosition; - FireInfo = notifier->GetFiredTrigger(); - FireInfo.iFiredPositionInfo.GetPosition(firePosition); - firePosition.Distance(coordinate,trigDistance); - iPositioner.Close(); - iLocationServer.Close(); - lbt.DeleteTriggerL(trigId); - if(notifier->iTriggerFireCount ==2) - { - CleanupStack::PopAndDestroy( notifier ); - CleanupStack::PopAndDestroy( trig ); - CleanupStack::Pop( &lbt ); - CleanupStack::PopAndDestroy( &lbtserver ); - delete wait; - - return KErrNone; - } - else - { - CleanupStack::PopAndDestroy( notifier ); - CleanupStack::PopAndDestroy( trig ); - CleanupStack::Pop( &lbt ); - CleanupStack::PopAndDestroy( &lbtserver ); - delete wait; - - return -99; - } - } - - //Testing the hysteresis condition for exit type of trigger - - TInt CFiringofStartupTriggerAndListTrigger::TCLBTFW015_testL( CStifItemParser& /* aItem */ ) - { - - _LIT( KSimulationFile,"c:\\system\\data\\test2.nme" ); - - RLbtServer lbtserver; - RLbt lbt; - RPositionServer iLocationServer; - RPositioner iPositioner; - - // Connect to the location server - User::LeaveIfError(iLocationServer.Connect()); - - // Open the positioner - User::LeaveIfError(iPositioner.Open(iLocationServer));//,KPosSimulationPsyImplUid)); - - - User::LeaveIfError( lbtserver.Connect() ); - CleanupClosePushL( lbtserver ); - iLog->Log(_L("Connection to RLbtServer Passed ")); - User::LeaveIfError( lbt.Open( lbtserver ) ); - iLog->Log(_L("Subsession opened ")); - CleanupClosePushL( lbt ); - - //Delete all the existing trggers - TRAP_IGNORE(lbt.DeleteTriggersL()); - - CRepository* repository = CRepository::NewLC(KCRUidSimulationPSY); - iLog->Log(_L("Simulation PSY Repository object created")); - User::LeaveIfError(repository->Set(KCRKeySimPSYSimulationFile, KSimulationFile)); - iLog->Log(_L("Simulation input file set ")); - CleanupStack::PopAndDestroy(repository); - - //Construct a session trigger - CLbtStartupTrigger* trig = CLbtStartupTrigger::NewL(); - - //Push to cleanup stack - CleanupStack::PushL( trig ); - iLog->Log(_L("Startup Trigger Entry Created ")); - - // Set Name - trig->SetNameL(_L("Trigger1")); - // _LIT( KMyTriggerHandlingProcessName, "About.exe"); - _LIT( KMyTriggerHandlingProcessName, "ConsoleUI.exe"); - - TSecureId secureid; - trig->SetProcessId(KMyTriggerHandlingProcessName,secureid); - //Set Requestor - CRequestorBase::TRequestorType ReqType=CRequestorBase::ERequestorUnknown; - CRequestorBase::_TRequestorFormat ReqFormat=CRequestorBase::EFormatUnknown; - TBuf ReqData=_L(""); - trig->SetRequestorL(ReqType,ReqFormat,ReqData); - // set condition - - TCoordinate coordinate(65.5285,23.9385); - // TCoordinate coordinate(62.4438,23.9385); - - CLbtGeoCircle* circle=CLbtGeoCircle::NewL(coordinate,1000); - CleanupStack::PushL( circle ); - - - // ownership of circle object transferred to the condition object - CLbtTriggerConditionArea* condition=CLbtTriggerConditionArea::NewL( - circle, - CLbtTriggerConditionArea::EFireOnExit); - - CleanupStack::Pop( circle ); - - trig->SetCondition(condition); // ownership transferred to object - - TLbtTriggerId trigId; - - - CTriggerFireObserver* notifier= CTriggerFireObserver::NewL( lbt,coordinate); - CleanupStack::PushL( notifier ); - - CActiveSchedulerWait* wait=new(ELeave)CActiveSchedulerWait; - - notifier->CreateTriggers( lbt,*trig,trigId,ETrue,wait ); - wait->Start( ); - iLog->Log(_L("Trigger Created")); - notifier->StartNotification( wait ); - wait->Start( ); - // notifier->StartNotification( wait ); - wait->Start( ); - // notifier->StartNotification( wait ); - // wait->Start( ); - notifier->iWaitStatus = KRequestPending; - - // notifier->StartNotification( wait ); - notifier->After(15000000); - wait->Start( ); - iLog->Log(_L("Trigger Fired")); - TLbtTriggerFireInfo FireInfo; - TReal32 trigDistance; - TPosition firePosition; - FireInfo = notifier->GetFiredTrigger(); - FireInfo.iFiredPositionInfo.GetPosition(firePosition); - firePosition.Distance(coordinate,trigDistance); - iPositioner.Close(); - iLocationServer.Close(); - lbt.DeleteTriggerL(trigId); - if( notifier->iTriggerFireCount ==2) - { - CleanupStack::PopAndDestroy( notifier ); - CleanupStack::PopAndDestroy( trig ); - CleanupStack::Pop( &lbt ); - CleanupStack::PopAndDestroy( &lbtserver ); - delete wait; - - return KErrNone; - } - else - { - CleanupStack::PopAndDestroy( notifier ); - CleanupStack::PopAndDestroy( trig ); - CleanupStack::Pop( &lbt ); - CleanupStack::PopAndDestroy( &lbtserver ); - delete wait; - - return -99; - } - } - - - //Registering for trigger fire notification after trigger fires multiple times - TInt CFiringofStartupTriggerAndListTrigger::TCLBTFW016_testL( CStifItemParser& /* aItem */ ) - { - - _LIT( KSimulationFile,"c:\\system\\data\\test3.nme" ); - - RLbtServer lbtserver; - RLbt lbt; - RPositionServer iLocationServer; - RPositioner iPositioner; - - // Connect to the location server - User::LeaveIfError(iLocationServer.Connect()); - - // Open the positioner - User::LeaveIfError(iPositioner.Open(iLocationServer));//,KPosSimulationPsyImplUid)); - - - User::LeaveIfError( lbtserver.Connect() ); - CleanupClosePushL( lbtserver ); - iLog->Log(_L("Connection to RLbtServer Passed ")); - User::LeaveIfError( lbt.Open( lbtserver ) ); - iLog->Log(_L("Subsession opened ")); - CleanupClosePushL( lbt ); - - //Delete all the existing trggers - TRAP_IGNORE(lbt.DeleteTriggersL()); - - CRepository* repository = CRepository::NewLC(KCRUidSimulationPSY); - iLog->Log(_L("Simulation PSY Repository object created")); - User::LeaveIfError(repository->Set(KCRKeySimPSYSimulationFile, KSimulationFile)); - iLog->Log(_L("Simulation input file set ")); - CleanupStack::PopAndDestroy(repository); - - //Construct a session trigger - CLbtStartupTrigger* trig = CLbtStartupTrigger::NewL(); - - //Push to cleanup stack - CleanupStack::PushL( trig ); - iLog->Log(_L("Startup Trigger Entry Created ")); - - // Set Name - trig->SetNameL(_L("Trigger1")); - // _LIT( KMyTriggerHandlingProcessName, "About.exe"); - _LIT( KMyTriggerHandlingProcessName, "ConsoleUI.exe"); - - TSecureId secureid; - trig->SetProcessId(KMyTriggerHandlingProcessName,secureid); - //Set Requestor - CRequestorBase::TRequestorType ReqType=CRequestorBase::ERequestorUnknown; - CRequestorBase::_TRequestorFormat ReqFormat=CRequestorBase::EFormatUnknown; - TBuf ReqData=_L(""); - trig->SetRequestorL(ReqType,ReqFormat,ReqData); - // set condition - - TCoordinate coordinate(62.5285,23.9385); - // TCoordinate coordinate(62.4438,23.9385); - - CLbtGeoCircle* circle=CLbtGeoCircle::NewL(coordinate,1000); - CleanupStack::PushL( circle ); - - - // ownership of circle object transferred to the condition object - CLbtTriggerConditionArea* condition=CLbtTriggerConditionArea::NewL( - circle, - CLbtTriggerConditionArea::EFireOnEnter); - - CleanupStack::Pop( circle ); - - trig->SetCondition(condition); // ownership transferred to object - - TLbtTriggerId trigId; - - - CTriggerFireObserver* notifier= CTriggerFireObserver::NewL( lbt,coordinate); - CleanupStack::PushL( notifier ); - - CActiveSchedulerWait* wait=new(ELeave)CActiveSchedulerWait; - - notifier->CreateTriggers( lbt,*trig,trigId,ETrue,wait ); - wait->Start( ); - iLog->Log(_L("Trigger Created")); - notifier->After(50000000); - notifier->StartNotification(wait); - wait->Start( ); - iLog->Log(_L("Trigger Fired")); - TLbtTriggerFireInfo FireInfo; - TReal32 trigDistance; - TPosition firePosition; - FireInfo = notifier->GetFiredTrigger(); - FireInfo.iFiredPositionInfo.GetPosition(firePosition); - firePosition.Distance(coordinate,trigDistance); - iPositioner.Close(); - iLocationServer.Close(); - - CleanupStack::PopAndDestroy( notifier ); - CleanupStack::PopAndDestroy( trig ); - CleanupStack::Pop( &lbt ); - CleanupStack::PopAndDestroy( &lbtserver ); - delete wait; - - return KErrNone; - - } //Firing of startup trigger when trigger handling process not found in the system - TInt CFiringofStartupTriggerAndListTrigger::TCLBTFW017_testL( CStifItemParser& /* aItem */ ) + TInt CFiringofStartupTriggerAndListTrigger::TCLBTFW014_testL( CStifItemParser& /* aItem */ ) { _LIT( KSimulationFile,"c:\\system\\data\\simu_move1.sps" ); @@ -1978,6 +1759,12 @@ iLog->Log(_L("Subsession opened ")); CleanupClosePushL( lbt ); + // Set profile to offline mode.This is required to avoid movement detection blocking the + // trigger firing. + SetProfileToOfflineL(); + // Enable simulation psy + EnableSimPSYL(); + //Delete all the existing trggers TRAP_IGNORE(lbt.DeleteTriggersL()); @@ -2008,8 +1795,8 @@ // set condition - TCoordinate coordinate(62.5285,23.9385); - // TCoordinate coordinate(62.4438,23.9385); + TCoordinate coordinate; + GetCurrentCoordinateL( coordinate ); CLbtGeoCircle* circle=CLbtGeoCircle::NewL(coordinate,1000); CleanupStack::PushL( circle ); @@ -2046,7 +1833,7 @@ firePosition.Distance(coordinate,trigDistance); iPositioner.Close(); iLocationServer.Close(); - + RestoreProfileL(); CleanupStack::PopAndDestroy( notifier ); CleanupStack::PopAndDestroy( trig ); CleanupStack::Pop( &lbt ); @@ -2060,7 +1847,7 @@ //Firing of multiple Entry type startup triggers -TInt CFiringofStartupTriggerAndListTrigger::TCLBTFW018_testL( CStifItemParser& /* aItem */ ) +TInt CFiringofStartupTriggerAndListTrigger::TCLBTFW015_testL( CStifItemParser& /* aItem */ ) { _LIT( KSimulationFile,"c:\\system\\data\\simu_move1.sps" ); @@ -2075,6 +1862,12 @@ iLog->Log(_L("Subsession opened ")); CleanupClosePushL( lbt ); + // Set profile to offline mode.This is required to avoid movement detection blocking the + // trigger firing. + SetProfileToOfflineL(); + // Enable simulation psy + EnableSimPSYL(); + //Delete all the existing trggers TRAP_IGNORE(lbt.DeleteTriggersL()); @@ -2111,8 +1904,8 @@ trig2->SetRequestorL(ReqType,ReqFormat,ReqData); // set condition - TCoordinate coordinate(62.5285,23.9385); - // TCoordinate coordinate(62.4438,23.9385); + TCoordinate coordinate; + GetCurrentCoordinateL( coordinate ); CLbtGeoCircle* circle=CLbtGeoCircle::NewL(coordinate,1000); CleanupStack::PushL( circle ); @@ -2143,13 +1936,15 @@ notifier->StartNotification( wait ); wait->Start( ); iLog->Log(_L("Triggers Fired")); + wait->Start( ); + iLog->Log(_L("Triggers Fired")); TLbtTriggerFireInfo FireInfo; TReal32 trigDistance; TPosition firePosition; FireInfo = notifier->GetFiredTrigger(); FireInfo.iFiredPositionInfo.GetPosition(firePosition); firePosition.Distance(coordinate,trigDistance); - + RestoreProfileL(); CleanupStack::PopAndDestroy( notifier ); CleanupStack::PopAndDestroy( trig2); CleanupStack::Pop( trig1 ); @@ -2162,6 +1957,369 @@ } + +// Testing the hysteresis condition for entry type of trigger + +TInt CFiringofStartupTriggerAndListTrigger::TCLBTFW016_testL( CStifItemParser& /* aItem */ ) + { + +_LIT( KSimulationFile,"c:\\system\\data\\test1.nme" ); + + RLbtServer lbtserver; + RLbt lbt; + RPositionServer iLocationServer; + RPositioner iPositioner; + + // Connect to the location server + User::LeaveIfError(iLocationServer.Connect()); + + // Open the positioner + User::LeaveIfError(iPositioner.Open(iLocationServer));//,KPosSimulationPsyImplUid)); + + + User::LeaveIfError( lbtserver.Connect() ); + CleanupClosePushL( lbtserver ); + iLog->Log(_L("Connection to RLbtServer Passed ")); + User::LeaveIfError( lbt.Open( lbtserver ) ); + iLog->Log(_L("Subsession opened ")); + CleanupClosePushL( lbt ); + + //Delete all the existing trggers + TRAP_IGNORE(lbt.DeleteTriggersL()); + + CRepository* repository = CRepository::NewLC(KCRUidSimulationPSY); + iLog->Log(_L("Simulation PSY Repository object created")); + User::LeaveIfError(repository->Set(KCRKeySimPSYSimulationFile, KSimulationFile)); + iLog->Log(_L("Simulation input file set ")); + CleanupStack::PopAndDestroy(repository); + + //Construct a session trigger + CLbtStartupTrigger* trig = CLbtStartupTrigger::NewL(); + + //Push to cleanup stack + CleanupStack::PushL( trig ); + iLog->Log(_L("Startup Trigger Entry Created ")); + + // Set Name + trig->SetNameL(_L("Trigger1")); + // _LIT( KMyTriggerHandlingProcessName, "About.exe"); + _LIT( KMyTriggerHandlingProcessName, "ConsoleUI.exe"); + + TSecureId secureid; + trig->SetProcessId(KMyTriggerHandlingProcessName,secureid); + //Set Requestor + CRequestorBase::TRequestorType ReqType=CRequestorBase::ERequestorUnknown; + CRequestorBase::_TRequestorFormat ReqFormat=CRequestorBase::EFormatUnknown; + TBuf ReqData=_L(""); + trig->SetRequestorL(ReqType,ReqFormat,ReqData); + // set condition + + TCoordinate coordinate(65.5285,23.9385); + // TCoordinate coordinate(62.4438,23.9385); + + CLbtGeoCircle* circle=CLbtGeoCircle::NewL(coordinate,1000); + CleanupStack::PushL( circle ); + + + // ownership of circle object transferred to the condition object + CLbtTriggerConditionArea* condition=CLbtTriggerConditionArea::NewL( + circle, + CLbtTriggerConditionArea::EFireOnEnter); + + CleanupStack::Pop( circle ); + + trig->SetCondition(condition); // ownership transferred to object + + TLbtTriggerId trigId; + + + CTriggerFireObserver* notifier= CTriggerFireObserver::NewL( lbt,coordinate); + CleanupStack::PushL( notifier ); + + CActiveSchedulerWait* wait=new(ELeave)CActiveSchedulerWait; + + notifier->CreateTriggers( lbt,*trig,trigId,ETrue,wait ); + wait->Start( ); + iLog->Log(_L("Trigger Created")); + notifier->StartNotification( wait ); + wait->Start( ); + // time_t time1,time2; + // Time(); + // notifier->StartNotification( wait ); + // wait->Start( ); + +// notifier->StartNotification( wait ); + wait->Start( ); + notifier->iWaitStatus = KRequestPending; + +// notifier->StartNotification( wait ); + notifier->After(1000000); + wait->Start( ); + + iLog->Log(_L("Trigger Fired")); + TLbtTriggerFireInfo FireInfo; + TReal32 trigDistance; + TPosition firePosition; + FireInfo = notifier->GetFiredTrigger(); + FireInfo.iFiredPositionInfo.GetPosition(firePosition); + firePosition.Distance(coordinate,trigDistance); + iPositioner.Close(); + iLocationServer.Close(); + lbt.DeleteTriggerL(trigId); + if(notifier->iTriggerFireCount ==2) + { + CleanupStack::PopAndDestroy( notifier ); + CleanupStack::PopAndDestroy( trig ); + CleanupStack::Pop( &lbt ); + CleanupStack::PopAndDestroy( &lbtserver ); + delete wait; + + return KErrNone; + } + else + { + CleanupStack::PopAndDestroy( notifier ); + CleanupStack::PopAndDestroy( trig ); + CleanupStack::Pop( &lbt ); + CleanupStack::PopAndDestroy( &lbtserver ); + delete wait; + + return -99; + } + } + + //Testing the hysteresis condition for exit type of trigger + + TInt CFiringofStartupTriggerAndListTrigger::TCLBTFW017_testL( CStifItemParser& /* aItem */ ) + { + +_LIT( KSimulationFile,"c:\\system\\data\\test2.nme" ); + + RLbtServer lbtserver; + RLbt lbt; + RPositionServer iLocationServer; + RPositioner iPositioner; + + // Connect to the location server + User::LeaveIfError(iLocationServer.Connect()); + + // Open the positioner + User::LeaveIfError(iPositioner.Open(iLocationServer));//,KPosSimulationPsyImplUid)); + + + User::LeaveIfError( lbtserver.Connect() ); + CleanupClosePushL( lbtserver ); + iLog->Log(_L("Connection to RLbtServer Passed ")); + User::LeaveIfError( lbt.Open( lbtserver ) ); + iLog->Log(_L("Subsession opened ")); + CleanupClosePushL( lbt ); + + //Delete all the existing trggers + TRAP_IGNORE(lbt.DeleteTriggersL()); + + CRepository* repository = CRepository::NewLC(KCRUidSimulationPSY); + iLog->Log(_L("Simulation PSY Repository object created")); + User::LeaveIfError(repository->Set(KCRKeySimPSYSimulationFile, KSimulationFile)); + iLog->Log(_L("Simulation input file set ")); + CleanupStack::PopAndDestroy(repository); + + //Construct a session trigger + CLbtStartupTrigger* trig = CLbtStartupTrigger::NewL(); + + //Push to cleanup stack + CleanupStack::PushL( trig ); + iLog->Log(_L("Startup Trigger Entry Created ")); + + // Set Name + trig->SetNameL(_L("Trigger1")); + // _LIT( KMyTriggerHandlingProcessName, "About.exe"); + _LIT( KMyTriggerHandlingProcessName, "ConsoleUI.exe"); + + TSecureId secureid; + trig->SetProcessId(KMyTriggerHandlingProcessName,secureid); + //Set Requestor + CRequestorBase::TRequestorType ReqType=CRequestorBase::ERequestorUnknown; + CRequestorBase::_TRequestorFormat ReqFormat=CRequestorBase::EFormatUnknown; + TBuf ReqData=_L(""); + trig->SetRequestorL(ReqType,ReqFormat,ReqData); + // set condition + + TCoordinate coordinate(65.5285,23.9385); + // TCoordinate coordinate(62.4438,23.9385); + + CLbtGeoCircle* circle=CLbtGeoCircle::NewL(coordinate,1000); + CleanupStack::PushL( circle ); + + + // ownership of circle object transferred to the condition object + CLbtTriggerConditionArea* condition=CLbtTriggerConditionArea::NewL( + circle, + CLbtTriggerConditionArea::EFireOnExit); + + CleanupStack::Pop( circle ); + + trig->SetCondition(condition); // ownership transferred to object + + TLbtTriggerId trigId; + + + CTriggerFireObserver* notifier= CTriggerFireObserver::NewL( lbt,coordinate); + CleanupStack::PushL( notifier ); + + CActiveSchedulerWait* wait=new(ELeave)CActiveSchedulerWait; + + notifier->CreateTriggers( lbt,*trig,trigId,ETrue,wait ); + wait->Start( ); + iLog->Log(_L("Trigger Created")); + notifier->StartNotification( wait ); + wait->Start( ); +// notifier->StartNotification( wait ); + wait->Start( ); +// notifier->StartNotification( wait ); + // wait->Start( ); + notifier->iWaitStatus = KRequestPending; + + // notifier->StartNotification( wait ); + notifier->After(15000000); + wait->Start( ); + iLog->Log(_L("Trigger Fired")); + TLbtTriggerFireInfo FireInfo; + TReal32 trigDistance; + TPosition firePosition; + FireInfo = notifier->GetFiredTrigger(); + FireInfo.iFiredPositionInfo.GetPosition(firePosition); + firePosition.Distance(coordinate,trigDistance); + iPositioner.Close(); + iLocationServer.Close(); + lbt.DeleteTriggerL(trigId); + if( notifier->iTriggerFireCount ==2) + { + CleanupStack::PopAndDestroy( notifier ); + CleanupStack::PopAndDestroy( trig ); + CleanupStack::Pop( &lbt ); + CleanupStack::PopAndDestroy( &lbtserver ); + delete wait; + + return KErrNone; + } + else + { + CleanupStack::PopAndDestroy( notifier ); + CleanupStack::PopAndDestroy( trig ); + CleanupStack::Pop( &lbt ); + CleanupStack::PopAndDestroy( &lbtserver ); + delete wait; + + return -99; + } + } + + + //Registering for trigger fire notification after trigger fires multiple times + TInt CFiringofStartupTriggerAndListTrigger::TCLBTFW018_testL( CStifItemParser& /* aItem */ ) + { + +_LIT( KSimulationFile,"c:\\system\\data\\test3.nme" ); + + RLbtServer lbtserver; + RLbt lbt; + RPositionServer iLocationServer; + RPositioner iPositioner; + + // Connect to the location server + User::LeaveIfError(iLocationServer.Connect()); + + // Open the positioner + User::LeaveIfError(iPositioner.Open(iLocationServer));//,KPosSimulationPsyImplUid)); + + + User::LeaveIfError( lbtserver.Connect() ); + CleanupClosePushL( lbtserver ); + iLog->Log(_L("Connection to RLbtServer Passed ")); + User::LeaveIfError( lbt.Open( lbtserver ) ); + iLog->Log(_L("Subsession opened ")); + CleanupClosePushL( lbt ); + + //Delete all the existing trggers + TRAP_IGNORE(lbt.DeleteTriggersL()); + + CRepository* repository = CRepository::NewLC(KCRUidSimulationPSY); + iLog->Log(_L("Simulation PSY Repository object created")); + User::LeaveIfError(repository->Set(KCRKeySimPSYSimulationFile, KSimulationFile)); + iLog->Log(_L("Simulation input file set ")); + CleanupStack::PopAndDestroy(repository); + + //Construct a session trigger + CLbtStartupTrigger* trig = CLbtStartupTrigger::NewL(); + + //Push to cleanup stack + CleanupStack::PushL( trig ); + iLog->Log(_L("Startup Trigger Entry Created ")); + + // Set Name + trig->SetNameL(_L("Trigger1")); + // _LIT( KMyTriggerHandlingProcessName, "About.exe"); + _LIT( KMyTriggerHandlingProcessName, "ConsoleUI.exe"); + + TSecureId secureid; + trig->SetProcessId(KMyTriggerHandlingProcessName,secureid); + //Set Requestor + CRequestorBase::TRequestorType ReqType=CRequestorBase::ERequestorUnknown; + CRequestorBase::_TRequestorFormat ReqFormat=CRequestorBase::EFormatUnknown; + TBuf ReqData=_L(""); + trig->SetRequestorL(ReqType,ReqFormat,ReqData); + // set condition + + TCoordinate coordinate(62.5285,23.9385); + // TCoordinate coordinate(62.4438,23.9385); + + CLbtGeoCircle* circle=CLbtGeoCircle::NewL(coordinate,1000); + CleanupStack::PushL( circle ); + + + // ownership of circle object transferred to the condition object + CLbtTriggerConditionArea* condition=CLbtTriggerConditionArea::NewL( + circle, + CLbtTriggerConditionArea::EFireOnEnter); + + CleanupStack::Pop( circle ); + + trig->SetCondition(condition); // ownership transferred to object + + TLbtTriggerId trigId; + + + CTriggerFireObserver* notifier= CTriggerFireObserver::NewL( lbt,coordinate); + CleanupStack::PushL( notifier ); + + CActiveSchedulerWait* wait=new(ELeave)CActiveSchedulerWait; + + notifier->CreateTriggers( lbt,*trig,trigId,ETrue,wait ); + wait->Start( ); + iLog->Log(_L("Trigger Created")); + notifier->After(50000000); + notifier->StartNotification(wait); + wait->Start( ); + iLog->Log(_L("Trigger Fired")); + TLbtTriggerFireInfo FireInfo; + TReal32 trigDistance; + TPosition firePosition; + FireInfo = notifier->GetFiredTrigger(); + FireInfo.iFiredPositionInfo.GetPosition(firePosition); + firePosition.Distance(coordinate,trigDistance); + iPositioner.Close(); + iLocationServer.Close(); + + CleanupStack::PopAndDestroy( notifier ); + CleanupStack::PopAndDestroy( trig ); + CleanupStack::Pop( &lbt ); + CleanupStack::PopAndDestroy( &lbtserver ); + delete wait; + + return KErrNone; + + } + //List Trigger Test cases @@ -2184,12 +2342,12 @@ /*CRepository* repository = CRepository::NewLC(KCRUidSimulationPSY); User::LeaveIfError(repository->Set(KCRKeySimPSYSimulationFile, KSimulationFile)); CleanupStack::PopAndDestroy(repository);*/ - + //Construct a startup trigger CLbtStartupTrigger* trig = CLbtStartupTrigger::NewL(); //Push to cleanup stack - // CleanupStack::PushL( trig ); + CleanupStack::PushL( trig ); // Set Name trig->SetNameL(_L("Trigger1")); @@ -2230,10 +2388,9 @@ notifier->CreateTriggers( lbt,*trig,trigId,EFalse,wait ); wait->Start( ); //User::After(5000000); - CLbtTriggerInfo *Triginfo = CLbtTriggerInfo::NewL(); + iLog->Log(_L("Before GetTriggerLC ")); - - Triginfo = lbt.GetTriggerLC(trigId); + CLbtTriggerInfo *Triginfo = lbt.GetTriggerLC(trigId); iLog->Log(_L("After GetTriggerLC ")); CLbtStartupTrigger *TrigEntry = static_cast (Triginfo->TriggerEntry()); @@ -2287,6 +2444,7 @@ { return -99; } + //Check requestors RRequestorStack aRequestors,aRequestors2 ; TrigEntry->GetRequestorsL(aRequestors2); @@ -2308,6 +2466,9 @@ } } + aRequestors.ResetAndDestroy(); + aRequestors2.ResetAndDestroy(); + //Check trigger Id trigId2 = TrigEntry->Id(); if(trigId !=trigId2) @@ -2343,12 +2504,15 @@ { return -99; }*/ + CleanupStack::PopAndDestroy(1 );//list options CleanupStack::PopAndDestroy( notifier ); + CleanupStack::PopAndDestroy( trig ); CleanupStack::PopAndDestroy( &lbt ); CleanupStack::PopAndDestroy( &lbtserver ); - // delete wait; + delete wait; iLog->Log(_L("Test passed ")); + return KErrNone; } @@ -3108,19 +3272,15 @@ _LIT( KFilename,"CreateTest.exe" ); RProcess proc; TInt retVal =proc.Create(KFilename,KNullDesC); + TInt triggerId = KLbtNullTriggerId; if(retVal == KErrNone) - { + { proc.Resume(); TRequestStatus status = KRequestPending; proc.Rendezvous(status); User::WaitForRequest(status); - } - TInt triggerId=0; - RProperty iProperty; - User::LeaveIfError(iProperty.Get( - KPSUidTriggerIdInfo, - KLbttesttriggerid, - triggerId)); + triggerId = status.Int(); + } TRAPD(error, lbt.GetTriggerLC(triggerId); CleanupStack::PopAndDestroy( );); CleanupStack::PopAndDestroy( &lbt ); @@ -3156,23 +3316,18 @@ lbt.DeleteTriggersL(); iLog->Log(_L("Before Create Trigger")); _LIT( KFilename,"CreateTest.exe" ); - RProcess proc; - TInt retVal =proc.Create(KFilename,KNullDesC); - if(retVal == KErrNone) - { - proc.Resume(); - TRequestStatus status = KRequestPending; - proc.Rendezvous(status); - User::WaitForRequest(status); - } - iLog->Log(_L("Trigger Created")); - TInt triggerId=0; - RProperty iProperty; - User::LeaveIfError(iProperty.Get( - KPSUidTriggerIdInfo, - KLbttesttriggerid, - triggerId)); - //create another trigger + RProcess proc; + TInt retVal =proc.Create(KFilename,KNullDesC); + TInt triggerId = KLbtNullTriggerId; + if(retVal == KErrNone) + { + proc.Resume(); + TRequestStatus status = KRequestPending; + proc.Rendezvous(status); + User::WaitForRequest(status); + triggerId = status.Int(); + } + //create another trigger //Construct a startup trigger CLbtStartupTrigger* trig = CLbtStartupTrigger::NewL(); @@ -4171,23 +4326,19 @@ TBuf ReqData=_L(""); trig->SetRequestorL(ReqType,ReqFormat,ReqData); _LIT( KFilename,"CreateTest.exe" ); + RProcess proc; TInt retVal =proc.Create(KFilename,KNullDesC); + TInt triggerId = KLbtNullTriggerId; if(retVal == KErrNone) - { - proc.Resume(); - TRequestStatus status = KRequestPending; - proc.Rendezvous(status); - User::WaitForRequest(status); - } - - TInt triggerId=0; - RProperty iProperty; - User::LeaveIfError(iProperty.Get( - KPSUidTriggerIdInfo, - KLbttesttriggerid, - triggerId)); - User::After(5000000); + { + proc.Resume(); + TRequestStatus status = KRequestPending; + proc.Rendezvous(status); + User::WaitForRequest(status); + triggerId = status.Int(); + } + RPointerArray < CLbtTriggerInfo > trigInfoList; CTriggerFireObserver* notifier= CTriggerFireObserver::NewL( lbt,coordinate ); @@ -4270,21 +4421,15 @@ _LIT( KFilename,"CreateTest.exe" ); RProcess proc; TInt retVal =proc.Create(KFilename,KNullDesC); + TInt triggerId = KLbtNullTriggerId; if(retVal == KErrNone) - { - proc.Resume(); - TRequestStatus status = KRequestPending; - proc.Rendezvous(status); - User::WaitForRequest(status); - } - User::After(5000000); - TInt triggerId=0; - RProperty iProperty; - User::LeaveIfError(iProperty.Get( - KPSUidTriggerIdInfo, - KLbttesttriggerid, - triggerId)); - + { + proc.Resume(); + TRequestStatus status = KRequestPending; + proc.Rendezvous(status); + User::WaitForRequest(status); + triggerId = status.Int(); + } //create another trigger //Construct a startup trigger CLbtStartupTrigger* trig = CLbtStartupTrigger::NewL(); @@ -4373,20 +4518,16 @@ _LIT( KFilename,"CreateTest.exe" ); RProcess proc; TInt retVal =proc.Create(KFilename,KNullDesC); + TInt triggerId = KLbtNullTriggerId; if(retVal == KErrNone) - { - proc.Resume(); - TRequestStatus status = KRequestPending; - proc.Rendezvous(status); - User::WaitForRequest(status); - } - User::After(5000000); - TInt triggerId=0; - RProperty iProperty; - User::LeaveIfError(iProperty.Get( - KPSUidTriggerIdInfo, - KLbttesttriggerid, - triggerId)); + { + proc.Resume(); + TRequestStatus status = KRequestPending; + proc.Rendezvous(status); + User::WaitForRequest(status); + triggerId = status.Int(); + } + RArray< TLbtTriggerId> aTriggerIdList; TRAP_IGNORE(lbt.DeleteTriggersL());