locationtriggering/tsrc/lbtengine_test/AdvancedTriggerSupervision/src/AdvancedTriggerSupervisionBlocks.cpp
branchRCL_3
changeset 44 2b4ea9893b66
parent 0 667063e416a2
child 45 6b6920c56e2f
--- a/locationtriggering/tsrc/lbtengine_test/AdvancedTriggerSupervision/src/AdvancedTriggerSupervisionBlocks.cpp	Thu Aug 19 10:20:18 2010 +0300
+++ b/locationtriggering/tsrc/lbtengine_test/AdvancedTriggerSupervision/src/AdvancedTriggerSupervisionBlocks.cpp	Tue Aug 31 15:37:04 2010 +0300
@@ -75,6 +75,9 @@
 #include <EPos_CPosModuleIdList.h>
 #include <EPos_CPosModules.h>
 #include <EPos_CPosModuleUpdate.h> // CPosModuleUpdate
+
+#include <MProEngEngine.h>
+#include <Profile.hrh>
 // EXTERNAL DATA STRUCTURES
 //extern  ?external_data;
 
@@ -174,6 +177,48 @@
     CleanupStack::PopAndDestroy( idList );
 	CleanupStack::PopAndDestroy( db );
     }
+
+// -----------------------------------------------------------------------------
+// CAdvancedTriggerSupervision::GetCurrentCoordinateL
+// Returns current position
+// -----------------------------------------------------------------------------
+//
+void CAdvancedTriggerSupervision::GetCurrentCoordinateL( TCoordinate& aCoordinate )
+    {
+    CTriggerFireObserver* notifier= CTriggerFireObserver::NewL();
+    CleanupStack::PushL( notifier );
+    CActiveSchedulerWait* wait = new ( ELeave ) CActiveSchedulerWait;
+    CleanupStack::PushL( wait );
+    TPositionInfo positionInfo;
+    // Ownership of wait is transferred to notifier
+    notifier->CurrentPositionL( positionInfo,wait );
+    CleanupStack::Pop( wait );
+    wait->Start();
+    TPosition position;
+    positionInfo.GetPosition( position );
+    aCoordinate.SetCoordinate( position.Latitude(),position.Longitude(),position.Altitude() );
+    CleanupStack::Pop( notifier ); // notifier
+    delete notifier;
+    }
+
+// -----------------------------------------------------------------------------
+// CAdvancedTriggerSupervision::SetProfileToOfflineL
+// -----------------------------------------------------------------------------
+void CAdvancedTriggerSupervision::SetProfileToOfflineL()
+    {
+    // Store current profile id.
+    iCurrentProfile =  iProEngine->ActiveProfileId();
+    // Change the active profile to Off-line
+    iProEngine->SetActiveProfileL( EProfileOffLineId );
+    }
+// -----------------------------------------------------------------------------
+// CAdvancedTriggerSupervision::RestoreProfileL
+// -----------------------------------------------------------------------------
+void CAdvancedTriggerSupervision::RestoreProfileL()
+    {
+    iProEngine->SetActiveProfileL( iCurrentProfile );
+    }
+
 // -----------------------------------------------------------------------------
 // CAdvancedTriggerSupervision::RunMethodL
 // Run specified method. Contains also table of test mothods and their names.
@@ -246,6 +291,11 @@
  	 User::LeaveIfError( lbt.Open(lbtserver));
  	 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 only simpsy
      EnableSimPSYL();
      //Clear all triggers
@@ -280,10 +330,10 @@
 	trig->SetRequestorL(ReqType,ReqFormat,ReqData);
     	// set condition
 
-    	TCoordinate coordinate(62.5285,23.9385);
-   	// TCoordinate coordinate(62.4438,23.9385);
-        coordinate.Move(90,2000);
-   	CLbtGeoCircle* circle=CLbtGeoCircle::NewL(coordinate,1000);
+    TCoordinate coordinate;
+    GetCurrentCoordinateL( coordinate );
+    coordinate.Move(90,200);
+   	CLbtGeoCircle* circle=CLbtGeoCircle::NewL(coordinate,100);
     	CleanupStack::PushL( circle );
     
          
@@ -314,10 +364,12 @@
     	TReal32 trigDistance;
     	TPosition firePosition;
     	FireInfo = notifier->GetFiredTrigger();
+    	iLog->Log(_L("GFT"));
     	FireInfo.iFiredPositionInfo.GetPosition(firePosition);
+    	iLog->Log(_L("GP"));
     	firePosition.Distance(coordinate,trigDistance);
-     
-    	if( trigDistance<=1000 && FireInfo.iTriggerId==trigId )
+    	RestoreProfileL();
+    	if( FireInfo.iTriggerId==trigId )
     	{
     
 	  	CleanupStack::PopAndDestroy( notifier );
@@ -364,6 +416,11 @@
  	 User::LeaveIfError( lbt.Open(lbtserver));
  	 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 only simpsy
      EnableSimPSYL();
      //Clear all triggers
@@ -400,10 +457,10 @@
 	trig->SetRequestorL(ReqType,ReqFormat,ReqData);
     	// set condition
 
-    	TCoordinate coordinate(62.5285,23.9385);
-   	// TCoordinate coordinate(62.4438,23.9385);
-    coordinate.Move(90,510);
-   	CLbtGeoCircle* circle=CLbtGeoCircle::NewL(coordinate,1000);
+    	TCoordinate coordinate;
+    	GetCurrentCoordinateL( coordinate );
+    coordinate.Move(90,110);
+   	CLbtGeoCircle* circle=CLbtGeoCircle::NewL(coordinate,200);
     	CleanupStack::PushL( circle );
     
          
@@ -436,8 +493,8 @@
     	FireInfo = notifier->GetFiredTrigger();
     	FireInfo.iFiredPositionInfo.GetPosition(firePosition);
     	firePosition.Distance(coordinate,trigDistance);
-     
-    	if( trigDistance<=1000 && FireInfo.iTriggerId==trigId)
+    	RestoreProfileL();
+    	if( FireInfo.iTriggerId==trigId)
     	{
     
 	  	CleanupStack::PopAndDestroy( notifier );
@@ -485,6 +542,11 @@
  	 User::LeaveIfError( lbt.Open(lbtserver));
  	 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 only simpsy
      EnableSimPSYL();
      //Clear all triggers
@@ -521,10 +583,10 @@
 	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);
+   	CLbtGeoCircle* circle=CLbtGeoCircle::NewL(coordinate,100);
     	CleanupStack::PushL( circle );
     
          
@@ -557,8 +619,8 @@
     	FireInfo = notifier->GetFiredTrigger();
     	FireInfo.iFiredPositionInfo.GetPosition(firePosition);
     	firePosition.Distance(coordinate,trigDistance);
-     
-    	if( trigDistance<=1000 && FireInfo.iTriggerId==trigId)
+    	RestoreProfileL();
+    	if( FireInfo.iTriggerId==trigId)
     	{
   
 	  	CleanupStack::PopAndDestroy( notifier );
@@ -605,6 +667,11 @@
  	 User::LeaveIfError( lbt.Open(lbtserver));
  	 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 only simpsy
      EnableSimPSYL();
      //Clear all triggers
@@ -639,10 +706,10 @@
 	trig->SetRequestorL(ReqType,ReqFormat,ReqData);	
     	// set condition
 
-    	TCoordinate coordinate(62.5285,23.9385);
-   	// TCoordinate coordinate(62.4438,23.9385);
-    coordinate.Move(90,2000);
-   	CLbtGeoCircle* circle=CLbtGeoCircle::NewL(coordinate,1000);
+    TCoordinate coordinate;
+    GetCurrentCoordinateL( coordinate );
+    coordinate.Move(90,200);
+   	CLbtGeoCircle* circle=CLbtGeoCircle::NewL(coordinate,100);
     	CleanupStack::PushL( circle );
     
          
@@ -675,8 +742,8 @@
     	FireInfo = notifier->GetFiredTrigger();
     	FireInfo.iFiredPositionInfo.GetPosition(firePosition);
     	firePosition.Distance(coordinate,trigDistance);
-     
-    	if( trigDistance>=1000 && FireInfo.iTriggerId==trigId)
+    	RestoreProfileL();
+    	if( FireInfo.iTriggerId==trigId)
     	{
    
 	  	CleanupStack::PopAndDestroy( notifier );
@@ -724,6 +791,11 @@
  	 User::LeaveIfError( lbt.Open(lbtserver));
  	 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 only simpsy
      EnableSimPSYL();
      //Clear all triggers
@@ -760,10 +832,10 @@
 	trig->SetRequestorL(ReqType,ReqFormat,ReqData);
     	// set condition
 
-    	TCoordinate coordinate(62.5285,23.9385);
-   	// TCoordinate coordinate(62.4438,23.9385);
-    coordinate.Move(90,1010);
-   	CLbtGeoCircle* circle=CLbtGeoCircle::NewL(coordinate,1000);
+    TCoordinate coordinate;
+    GetCurrentCoordinateL( coordinate );
+    coordinate.Move(90,110);
+   	CLbtGeoCircle* circle=CLbtGeoCircle::NewL(coordinate,100);
     	CleanupStack::PushL( circle );
     
          
@@ -796,8 +868,9 @@
     	FireInfo = notifier->GetFiredTrigger();
     	FireInfo.iFiredPositionInfo.GetPosition(firePosition);
     	firePosition.Distance(coordinate,trigDistance);
-     
-    	if( trigDistance>=1000 && FireInfo.iTriggerId==trigId)
+    	
+    	RestoreProfileL();
+    	if(  FireInfo.iTriggerId==trigId)
     	{
    
 	  	CleanupStack::PopAndDestroy( notifier );
@@ -845,6 +918,11 @@
  	 User::LeaveIfError( lbt.Open(lbtserver));
  	 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 only simpsy
      EnableSimPSYL();
      //Clear all triggers
@@ -881,10 +959,10 @@
 	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);
+   	CLbtGeoCircle* circle=CLbtGeoCircle::NewL(coordinate,100);
     	CleanupStack::PushL( circle );
     
          
@@ -917,8 +995,9 @@
     	FireInfo = notifier->GetFiredTrigger();
     	FireInfo.iFiredPositionInfo.GetPosition(firePosition);
     	firePosition.Distance(coordinate,trigDistance);
-     
-    	if( trigDistance>=1000 && FireInfo.iTriggerId==trigId)
+    	
+    	RestoreProfileL();
+    	if( FireInfo.iTriggerId==trigId)
     	{
   
 	  	CleanupStack::PopAndDestroy( notifier );
@@ -953,117 +1032,122 @@
 TInt CAdvancedTriggerSupervision::ATSTest7L( CStifItemParser& aItem )
     {
 
-    	iLog->Log(_L("Entering Test1"));
-      _LIT( KSimulationFile,"c:\\system\\data\\simu_move1.sps" );
- // _LIT( KSimulationFile0,"c:\\system\\data\\simu_move2.sps" );
+
+    iLog->Log(_L("Entering Test1"));
+  _LIT( KSimulationFile,"c:\\system\\data\\simu_move3.sps" );
+// _LIT( KSimulationFile0,"c:\\system\\data\\simu_move2.sps" );
+
+ RLbtServer lbtserver;
+ RLbt lbt;
+ iLog->Log(_L("Before connecting"));
+ 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 );
+ 
+     // Set profile to offline mode.This is required to avoid movement detection blocking the 
+     // trigger firing.
+     SetProfileToOfflineL();
+     
+ //Enable only simpsy
+ EnableSimPSYL();
+ //Clear all triggers
+ TRAP_IGNORE(lbt.DeleteTriggersL()) ;       
+ CRepository* repository = CRepository::NewLC(KCRUidSimulationPSY);
+ iLog->Log(_L("Simulation PSY Repository object created"));
+//   User::LeaveIfError(repository->Set(KCRKeySimPSYSimulationFile, KSimulationFile0));
+ User::LeaveIfError(repository->Set(KCRKeySimPSYSimulationFile, KSimulationFile));
+ iLog->Log(_L("Simulation input file set "));
+ CleanupStack::PopAndDestroy(repository);
+ 
+  //Construct a startup trigger
+     CLbtStartupTrigger* trig = CLbtStartupTrigger::NewL();
 
- 	 RLbtServer lbtserver;
- 	 RLbt lbt;
- 	 iLog->Log(_L("Before connecting"));
- 	 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 );
- 	 //Enable only simpsy
-     EnableSimPSYL();
-     //Clear all triggers
- 	 TRAP_IGNORE(lbt.DeleteTriggersL()) ;       
- 	 
- 	 CRepository* repository = CRepository::NewLC(KCRUidSimulationPSY);
- 	 iLog->Log(_L("Simulation PSY Repository object created"));
-//	 User::LeaveIfError(repository->Set(KCRKeySimPSYSimulationFile, KSimulationFile0));
-	 User::LeaveIfError(repository->Set(KCRKeySimPSYSimulationFile, KSimulationFile));
-	 iLog->Log(_L("Simulation input file set "));
-	 CleanupStack::PopAndDestroy(repository);
-	 
-	  //Construct a startup 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"));
-    	trig->SetNameL(_L("abc"));
-    	_LIT( KMyTriggerHandlingProcessName, "About.exe");
-   	//  _LIT( KMyTriggerHandlingProcessName, "TestServerStarter.exe");
-   	// _LIT( KMyTriggerHandlingProcessName, "ConsoleUI.exe");
-    
-    	TSecureId secureid;
-    	trig->SetProcessId(KMyTriggerHandlingProcessName,secureid);
-       
-    	//set Requestor     
-    CRequestorBase::TRequestorType ReqType=CRequestorBase::ERequestorUnknown;
-	CRequestorBase::_TRequestorFormat ReqFormat=CRequestorBase::EFormatUnknown;
-	TBuf<KLbtMaxNameLength> ReqData=_L("");
-	trig->SetRequestorL(ReqType,ReqFormat,ReqData);
-    	// set condition
+    //Push to cleanup stack
+    CleanupStack::PushL( trig );
+    iLog->Log(_L("Startup Trigger Entry Created "));
+
+    // Set Name
+    trig->SetNameL(_L("Trigger1"));
+    trig->SetNameL(_L("abc"));
+    _LIT( KMyTriggerHandlingProcessName, "About.exe");
+//  _LIT( KMyTriggerHandlingProcessName, "TestServerStarter.exe");
+// _LIT( KMyTriggerHandlingProcessName, "ConsoleUI.exe");
 
-    	TCoordinate coordinate(62.5285,23.9385);
-   	// TCoordinate coordinate(62.4438,23.9385);
-    
-   		CLbtGeoCircle* circle=CLbtGeoCircle::NewL(coordinate,1000);
-    	CleanupStack::PushL( circle );
+    TSecureId secureid;
+    trig->SetProcessId(KMyTriggerHandlingProcessName,secureid);
+   
+    //set Requestor     
+CRequestorBase::TRequestorType ReqType=CRequestorBase::ERequestorUnknown;
+CRequestorBase::_TRequestorFormat ReqFormat=CRequestorBase::EFormatUnknown;
+TBuf<KLbtMaxNameLength> ReqData=_L("");
+trig->SetRequestorL(ReqType,ReqFormat,ReqData);
+    // set condition
+
+TCoordinate coordinate;
+GetCurrentCoordinateL( coordinate );
+
+    CLbtGeoCircle* circle=CLbtGeoCircle::NewL(coordinate,200);
+    CleanupStack::PushL( circle );
+
+     
+    // ownership of circle object transferred to the condition object
+    CLbtTriggerConditionArea* condition=CLbtTriggerConditionArea::NewL(
+                                            circle,
+                                            CLbtTriggerConditionArea::EFireOnEnter);
     
-         
-    	// ownership of circle object transferred to the condition object
-    	CLbtTriggerConditionArea* condition=CLbtTriggerConditionArea::NewL(
-                                                circle,
-                                                CLbtTriggerConditionArea::EFireOnEnter);
-        
-    	CleanupStack::Pop( circle );
+    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;
     
-    	trig->SetCondition(condition); // ownership transferred to object
-
-    	TLbtTriggerId trigId;
-        
-        
-    	CTriggerFireObserver* notifier= CTriggerFireObserver::NewL( lbt,coordinate);
-    	CleanupStack::PushL( notifier );
+    notifier->CreateTriggers( lbt,*trig,trigId,ETrue,wait );
+    wait->Start( );
+    CLbtGeoCircle* circle2=CLbtGeoCircle::NewL(coordinate,100);
+    circle2->SetRadius(500);
+    CLbtTriggerConditionArea* condition2=CLbtTriggerConditionArea::NewL(
+                                            circle2,
+                                            CLbtTriggerConditionArea::EFireOnEnter);
+    
+    trig->SetCondition(condition2);
+    notifier->CreateTriggers( lbt,*trig,trigId,ETrue,wait );
+    wait->Start( );
     
-    	CActiveSchedulerWait* wait=new(ELeave)CActiveSchedulerWait;
-        
-    	notifier->CreateTriggers( lbt,*trig,trigId,ETrue,wait );
-    	wait->Start( );
-    	CLbtGeoCircle* circle2=CLbtGeoCircle::NewL(coordinate,500);
-    	circle2->SetRadius(500);
-    	CLbtTriggerConditionArea* condition2=CLbtTriggerConditionArea::NewL(
-                                                circle2,
-                                                CLbtTriggerConditionArea::EFireOnEnter);
-    	
-    	trig->SetCondition(condition2);
-    	notifier->CreateTriggers( lbt,*trig,trigId,ETrue,wait );
-    	wait->Start( );
-    	
-    	iLog->Log(_L("Triggers Created"));
-   // 	notifier->StartNotification( wait );
-  	//	wait->Start( );
-  		notifier->StartNotification( wait );
-  		wait->Start( );
-	  	notifier->After(120000000);
-	  	wait->Start( );
-  		RArray<TLbtTriggerFireInfo> Firedtriggers;
-  		lbt.GetFiredTriggersL(Firedtriggers);
-  		if(Firedtriggers.Count()==2)
-  		{
-  				CleanupStack::PopAndDestroy( notifier );
-	   CleanupStack::PopAndDestroy( trig );
-	   CleanupStack::Pop( &lbt );
-	   CleanupStack::PopAndDestroy( &lbtserver );
-  			return KErrNone;
-  		}
-  		else
-  		{
-  				CleanupStack::PopAndDestroy( notifier );
-	   CleanupStack::PopAndDestroy( trig );
-	   CleanupStack::Pop( &lbt );
-	   CleanupStack::PopAndDestroy( &lbtserver );
-  			return -99;
-  		}
-    	
+    iLog->Log(_L("Triggers Created"));
+    notifier->StartNotification( wait );
+    wait->Start( );
+    wait->Start( );
+    RArray<TLbtTriggerFireInfo> Firedtriggers;
+    lbt.GetFiredTriggersL(Firedtriggers);
+    RestoreProfileL();
+    if(Firedtriggers.Count()==2)
+    {
+        CleanupStack::PopAndDestroy( notifier );
+   CleanupStack::PopAndDestroy( trig );
+   CleanupStack::Pop( &lbt );
+   CleanupStack::PopAndDestroy( &lbtserver );
+        return KErrNone;
+    }
+    else
+    {
+        CleanupStack::PopAndDestroy( notifier );
+   CleanupStack::PopAndDestroy( trig );
+   CleanupStack::Pop( &lbt );
+   CleanupStack::PopAndDestroy( &lbtserver );
+        return -99;
+    }
+
+//  return KErrNone; 
+
     }
 
 
@@ -1092,6 +1176,10 @@
  	 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 only simpsy
      EnableSimPSYL();
      //Clear all triggers
@@ -1127,10 +1215,10 @@
 	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);
+   		CLbtGeoCircle* circle=CLbtGeoCircle::NewL(coordinate,200);
     	CleanupStack::PushL( circle );
     
          
@@ -1153,7 +1241,7 @@
         
     	notifier->CreateTriggers( lbt,*trig,trigId,ETrue,wait );
     	wait->Start( );
-    	CLbtGeoCircle* circle2=CLbtGeoCircle::NewL(coordinate,500);
+    	CLbtGeoCircle* circle2=CLbtGeoCircle::NewL(coordinate,100);
     	circle2->SetRadius(500);
     	CLbtTriggerConditionArea* condition2=CLbtTriggerConditionArea::NewL(
                                                 circle2,
@@ -1166,12 +1254,10 @@
     	iLog->Log(_L("Triggers Created"));
     	notifier->StartNotification( wait );
   		wait->Start( );
-  	//	notifier->StartNotification( wait );
-  	//	wait->Start( );
-  		notifier->After(1200000000);
   		wait->Start( );
   		RArray<TLbtTriggerFireInfo> Firedtriggers;
   		lbt.GetFiredTriggersL(Firedtriggers);
+  		RestoreProfileL();
   		if(Firedtriggers.Count()==2)
   		{
   			CleanupStack::PopAndDestroy( notifier );
@@ -1219,6 +1305,10 @@
  	 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 only simpsy
      EnableSimPSYL();
      //Clear all triggers
@@ -1254,10 +1344,10 @@
 		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,500);
+   		CLbtGeoCircle* circle=CLbtGeoCircle::NewL(coordinate,200);
     	CleanupStack::PushL( circle );
     
          
@@ -1280,8 +1370,7 @@
         
     	notifier->CreateTriggers( lbt,*trig,trigId,ETrue,wait );
     	wait->Start( );
-    	CLbtGeoCircle* circle2=CLbtGeoCircle::NewL(coordinate,500);
-    	circle2->SetRadius(250);
+    	CLbtGeoCircle* circle2=CLbtGeoCircle::NewL(coordinate,200);
     	CLbtTriggerConditionArea* condition2=CLbtTriggerConditionArea::NewL(
                                                 circle2,
                                                 CLbtTriggerConditionArea::EFireOnEnter);
@@ -1293,11 +1382,8 @@
     	iLog->Log(_L("Triggers Created"));
     	notifier->StartNotification( wait );
   		wait->Start( );
-  	//	notifier->StartNotification( wait );
-  	//	wait->Start( );
+  	    wait->Start( );
   		
-  		notifier->After(120000000);
-  		wait->Start( );
   		RArray<TLbtTriggerFireInfo> Firedtriggers;
   		lbt.GetFiredTriggersL(Firedtriggers);
   		CleanupStack::PopAndDestroy( notifier );
@@ -1305,6 +1391,7 @@
 	    CleanupStack::Pop( &lbt );
 	    CleanupStack::PopAndDestroy( &lbtserver );
 	    //delete wait;
+	    RestoreProfileL();
   		if(Firedtriggers.Count()==2)
   		{
   			return KErrNone;
@@ -1341,6 +1428,11 @@
  	 User::LeaveIfError( lbt.Open(lbtserver));
  	 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 only simpsy
      EnableSimPSYL();
      //Clear all triggers
@@ -1377,9 +1469,10 @@
 	trig->SetRequestorL(ReqType,ReqFormat,ReqData);
     	// set condition
 
-    	TCoordinate coordinate(62.5285,23.9385);
+    TCoordinate coordinate;
+    GetCurrentCoordinateL( coordinate );
    		    
-   		CLbtGeoCircle* circle=CLbtGeoCircle::NewL(coordinate,500);
+   		CLbtGeoCircle* circle=CLbtGeoCircle::NewL(coordinate,100);
     	CleanupStack::PushL( circle );
     
          
@@ -1402,9 +1495,8 @@
         
     	notifier->CreateTriggers( lbt,*trig,trigId,ETrue,wait );
     	wait->Start( );
-    	CLbtGeoCircle* circle2=CLbtGeoCircle::NewL(coordinate,500);
-    	circle2->SetRadius(500);
-    	coordinate.Move(90,1000);
+    	CLbtGeoCircle* circle2=CLbtGeoCircle::NewL(coordinate,100);
+    	coordinate.Move(90,200);
     	circle2->SetCenter(coordinate);
     	CLbtTriggerConditionArea* condition2=CLbtTriggerConditionArea::NewL(
                                                 circle2,
@@ -1417,12 +1509,10 @@
     	iLog->Log(_L("Triggers Created"));
     	notifier->StartNotification( wait );
   		wait->Start( );
-  	//	notifier->StartNotification( wait );
-  	//	wait->Start( );
-  		notifier->After(120000000);
   		wait->Start( );
   		RArray<TLbtTriggerFireInfo> Firedtriggers;
   		lbt.GetFiredTriggersL(Firedtriggers);
+  		RestoreProfileL();
   		if(Firedtriggers.Count()==2)
   		{
   			CleanupStack::PopAndDestroy( notifier );
@@ -1469,6 +1559,11 @@
  	 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 only simpsy
      EnableSimPSYL();
      //Clear all triggers
@@ -1505,9 +1600,10 @@
 	trig->SetRequestorL(ReqType,ReqFormat,ReqData);
     	// set condition
 
-    	TCoordinate coordinate(62.5285,23.9385);
+    TCoordinate coordinate;
+    GetCurrentCoordinateL( coordinate );
    		    
-   		CLbtGeoCircle* circle=CLbtGeoCircle::NewL(coordinate,500);
+   		CLbtGeoCircle* circle=CLbtGeoCircle::NewL(coordinate,100);
     	CleanupStack::PushL( circle );
     
          
@@ -1531,8 +1627,8 @@
     	notifier->CreateTriggers( lbt,*trig,trigId,ETrue,wait );
     	wait->Start( );
     	
-       	coordinate.Move(90,500);
-       	CLbtGeoCircle* circle2=CLbtGeoCircle::NewL(coordinate,500);
+       	coordinate.Move(90,100);
+       	CLbtGeoCircle* circle2=CLbtGeoCircle::NewL(coordinate,100);
     	circle2->SetCenter(coordinate);
     	CLbtTriggerConditionArea* condition2=CLbtTriggerConditionArea::NewL(
                                                 circle2,
@@ -1545,11 +1641,12 @@
     	iLog->Log(_L("Triggers Created"));
     	notifier->StartNotification( wait );
   		wait->Start( );
-  		notifier->After(120000000);
-  		wait->Start( );
+        wait->Start( );
+
     	iLog->Log(_L("Trigger Fired"));
     	RArray<TLbtTriggerFireInfo> Firedtriggers;
   		lbt.GetFiredTriggersL(Firedtriggers);
+  		RestoreProfileL();
   		if(Firedtriggers.Count()==2)
   		{
   			CleanupStack::PopAndDestroy( notifier );
@@ -1581,7 +1678,7 @@
     {
 
         	iLog->Log(_L("Entering Test1"));
-      _LIT( KSimulationFile,"c:\\system\\data\\test3.nme" );
+     _LIT( KSimulationFile,"c:\\system\\data\\simu_move2.sps" );
  // _LIT( KSimulationFile0,"c:\\system\\data\\simu_move2.sps" );
 
  	 RLbtServer lbtserver;
@@ -1594,6 +1691,10 @@
  	 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 only simpsy
      EnableSimPSYL();
      //Clear all triggers
@@ -1630,9 +1731,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,100);
     	CleanupStack::PushL( circle );
     
          
@@ -1655,21 +1757,18 @@
         
     	notifier->CreateTriggers( lbt,*trig,trigId,ETrue,wait );
     	wait->Start( );
-   	 TCoordinate coordinates[10]=
+    	TCoordinate movCoordinates( coordinate.Latitude(),coordinate.Longitude() );
+    	
+    	TCoordinate coordinates[4];
+    	// Initialise the coordinate
+    	for( TInt i=0;i<4;i++ )
    		{
- 		TCoordinate(62.5285,23.9385) ,
-		TCoordinate(62.5267,23.9636),
-		TCoordinate(62.5167,23.9528),	
-	/*	TCoordinate(62.5141,23.9312),
-		TCoordinate(62.5296,23.9514),
-	    TCoordinate(62.5269,23.9331),
-		TCoordinate(62.518,23.9401),
-		TCoordinate(62.5394,23.9439),
-		TCoordinate(62.5275,23.9223),*/
-		TCoordinate(62.5331,23.9551)};
+   		movCoordinates.Move( 90,300 );
+   		coordinates[i] = movCoordinates;
+   		}
     	for(int i=0;i<4;i++)
     	{
-    	CLbtGeoCircle* circle=CLbtGeoCircle::NewL(coordinate,500);	
+    	CLbtGeoCircle* circle=CLbtGeoCircle::NewL(coordinate,100);	
       //	coordinate.Move(45,100);
     	circle->SetCenter(coordinates[i]);
     	if(i%2==0)
@@ -1697,11 +1796,15 @@
     	
     	notifier->StartNotification( wait );
   		wait->Start( );
-  		notifier->After(600000000);
-  		wait->Start( );
+        wait->Start( );
+        wait->Start( );
+        wait->Start( );
+
+
   		RArray<TLbtTriggerFireInfo> Firedtriggers;
   		lbt.GetFiredTriggersL(Firedtriggers);
-  		if(Firedtriggers.Count()==3)
+  		RestoreProfileL();
+  		if(Firedtriggers.Count()==4)
   		{
   			CleanupStack::PopAndDestroy( notifier );
 	   CleanupStack::PopAndDestroy( trig );
@@ -1744,6 +1847,11 @@
  	 User::LeaveIfError( lbt.Open(lbtserver));
  	 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 only simpsy
      EnableSimPSYL();
      //Clear all triggers
@@ -1778,10 +1886,10 @@
 	trig->SetRequestorL(ReqType,ReqFormat,ReqData);
     	// set condition
 
-    	TCoordinate coordinate(62.5285,23.9385);
-   	// TCoordinate coordinate(62.4438,23.9385);
-    	coordinate.Move(90,5000);
-   	CLbtGeoCircle* circle=CLbtGeoCircle::NewL(coordinate,10000);
+    TCoordinate coordinate;
+    GetCurrentCoordinateL( coordinate );
+    	coordinate.Move(90,1000);
+   	CLbtGeoCircle* circle=CLbtGeoCircle::NewL(coordinate,2000);
     	CleanupStack::PushL( circle );
     
          
@@ -1814,8 +1922,8 @@
     	FireInfo = notifier->GetFiredTrigger();
        	FireInfo.iFiredPositionInfo.GetPosition(firePosition);
     	firePosition.Distance(coordinate,trigDistance);
-     
-    	if( trigDistance<=11500 && FireInfo.iTriggerId==trigId)
+    	RestoreProfileL();
+    	if( FireInfo.iTriggerId==trigId)
     	{
   
 	  	CleanupStack::PopAndDestroy( notifier );
@@ -1864,6 +1972,11 @@
  	 User::LeaveIfError( lbt.Open(lbtserver));
  	 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 only simpsy
      EnableSimPSYL();
      //Clear all triggers
@@ -1899,9 +2012,10 @@
 	trig->SetRequestorL(ReqType,ReqFormat,ReqData);
     	// set condition
 
-    	TCoordinate coordinate(62.5285,23.9385);
+    TCoordinate coordinate;
+    GetCurrentCoordinateL( coordinate );
    		    
-   		CLbtGeoCircle* circle=CLbtGeoCircle::NewL(coordinate,1000);
+   		CLbtGeoCircle* circle=CLbtGeoCircle::NewL(coordinate,100);
     	CleanupStack::PushL( circle );
     
          
@@ -1925,8 +2039,8 @@
     	notifier->CreateTriggers( lbt,*trig,trigId,ETrue,wait );
     	wait->Start( );
     	
-       	coordinate.Move(90,2000);
-       	CLbtGeoCircle* circle2=CLbtGeoCircle::NewL(coordinate,500);
+       	coordinate.Move(90,500);
+       	CLbtGeoCircle* circle2=CLbtGeoCircle::NewL(coordinate,100);
     	circle2->SetCenter(coordinate);
     	CLbtTriggerConditionArea* condition2=CLbtTriggerConditionArea::NewL(
                                                 circle2,
@@ -1945,6 +2059,7 @@
     	TReal32 trigDistance;
     	TPosition firePosition;
     	FireInfo = notifier->GetFiredTrigger();
+    	RestoreProfileL();
     	if(FireInfo.iTriggerId!=trigId)
     	{
     //	notifier->StartNotification( wait );
@@ -1954,7 +2069,7 @@
     	FireInfo.iFiredPositionInfo.GetPosition(firePosition);
     	firePosition.Distance(coordinate,trigDistance);
      
-    	if( trigDistance<=1000 && FireInfo.iTriggerId==trigId)
+    	if( FireInfo.iTriggerId==trigId)
     	{
     
 	  	CleanupStack::PopAndDestroy( notifier );
@@ -2007,6 +2122,11 @@
  	 User::LeaveIfError( lbt.Open(lbtserver));
  	 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 only simpsy
      EnableSimPSYL();
      //Clear all triggers
@@ -2044,9 +2164,10 @@
 	trig->SetRequestorL(ReqType,ReqFormat,ReqData);
     	// set condition
 
-    	TCoordinate coordinate(62.5285,23.9385);
+    TCoordinate coordinate;
+    GetCurrentCoordinateL( coordinate );
    		    
-   		CLbtGeoCircle* circle=CLbtGeoCircle::NewL(coordinate,500);
+   		CLbtGeoCircle* circle=CLbtGeoCircle::NewL(coordinate,100);
     	CleanupStack::PushL( circle );
     
          
@@ -2070,8 +2191,8 @@
     	notifier->CreateTriggers( lbt,*trig,trigId,ETrue,wait );
     	wait->Start( );
     	
-       	coordinate.Move(90,2000);
-       	CLbtGeoCircle* circle2=CLbtGeoCircle::NewL(coordinate,800);
+       	coordinate.Move(90,300);
+       	CLbtGeoCircle* circle2=CLbtGeoCircle::NewL(coordinate,100);
     	circle2->SetCenter(coordinate);
     	CLbtTriggerConditionArea* condition2=CLbtTriggerConditionArea::NewL(
                                                 circle2,
@@ -2081,8 +2202,8 @@
     	notifier->CreateTriggers( lbt,*trig,trigIdtochange,ETrue,wait );
     	wait->Start( );
     	
-    	coordinate.Move(90,2000);
-    	CLbtGeoCircle* circle3=CLbtGeoCircle::NewL(coordinate,700);
+    	coordinate.Move(90,400);
+    	CLbtGeoCircle* circle3=CLbtGeoCircle::NewL(coordinate,100);
     	circle3->SetCenter(coordinate);
     	CLbtTriggerConditionArea* condition3=CLbtTriggerConditionArea::NewL(
                                                 circle3,
@@ -2107,6 +2228,7 @@
     	FireInfo = notifier->GetFiredTrigger();
     	FireInfo.iFiredPositionInfo.GetPosition(firePosition);
     	firePosition.Distance(coordinate,trigDistance);
+    	RestoreProfileL();
      	if(FireInfo.iTriggerId ==trigIdtochange)
      	{
      		
@@ -2158,6 +2280,11 @@
  	 User::LeaveIfError( lbt1.Open(lbtserver));
  	 iLog->Log(_L("Subsession opened "));
  	 CleanupClosePushL( lbt1 );
+ 	 
+     // Set profile to offline mode.This is required to avoid movement detection blocking the 
+     // trigger firing.
+     SetProfileToOfflineL();
+ 	 
  	 //Enable only simpsy
      EnableSimPSYL();
      //Clear all triggers
@@ -2194,9 +2321,10 @@
 	trig->SetRequestorL(ReqType,ReqFormat,ReqData);
     	// set condition
 
-    	TCoordinate coordinate(62.5285,23.9385);
+    TCoordinate coordinate;
+    GetCurrentCoordinateL( coordinate );
    		    
-   		CLbtGeoCircle* circle=CLbtGeoCircle::NewL(coordinate,1000);
+   		CLbtGeoCircle* circle=CLbtGeoCircle::NewL(coordinate,100);
     	CleanupStack::PushL( circle );
     
          
@@ -2220,8 +2348,8 @@
     	notifier->CreateTriggers( lbt,*trig,trigId,ETrue,wait );
     	wait->Start( );
     	
-       	coordinate.Move(90,10000);
-       	CLbtGeoCircle* circle2=CLbtGeoCircle::NewL(coordinate,500);
+       	coordinate.Move(90,500);
+       	CLbtGeoCircle* circle2=CLbtGeoCircle::NewL(coordinate,100);
     	circle2->SetCenter(coordinate);
     	CLbtTriggerConditionArea* condition2=CLbtTriggerConditionArea::NewL(
                                                 circle2,
@@ -2235,8 +2363,8 @@
     //	User::LeaveIfError(repository->Set(KCRKeySimPSYSimulationFile, KSimulationFile));
     //	notifier->After(3000000);
     //	wait->Start( );
-    	coordinate.Move(270,5000);
-    	CLbtGeoCircle* circle3=CLbtGeoCircle::NewL(coordinate,500);
+    	coordinate.Move(270,200);
+    	CLbtGeoCircle* circle3=CLbtGeoCircle::NewL(coordinate,100);
     	circle3->SetCenter(coordinate);
     	CLbtTriggerConditionArea* condition3=CLbtTriggerConditionArea::NewL(
                                                 circle3,
@@ -2260,7 +2388,7 @@
     	FireInfo = notifier->GetFiredTrigger();
     	FireInfo.iFiredPositionInfo.GetPosition(firePosition);
     	firePosition.Distance(coordinate,trigDistance);
-     
+    	RestoreProfileL();
      	if(FireInfo.iTriggerId ==trigIdtochange)
      	{
      		CleanupStack::PopAndDestroy( notifier );
@@ -2311,6 +2439,11 @@
  	 User::LeaveIfError( lbt.Open(lbtserver));
  	 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 only simpsy
      EnableSimPSYL();
      //Clear all triggers
@@ -2347,9 +2480,10 @@
 	trig->SetRequestorL(ReqType,ReqFormat,ReqData);
     	// set condition
 
-    	TCoordinate coordinate(62.5285,23.9385);
+    TCoordinate coordinate;
+    GetCurrentCoordinateL( coordinate );
    		    
-   		CLbtGeoCircle* circle=CLbtGeoCircle::NewL(coordinate,1000);
+   		CLbtGeoCircle* circle=CLbtGeoCircle::NewL(coordinate,100);
     	CleanupStack::PushL( circle );
     
          
@@ -2373,8 +2507,8 @@
     	notifier->CreateTriggers( lbt,*trig,trigId,ETrue,wait );
     	wait->Start( );
     	
-       	coordinate.Move(90,5000);
-       	CLbtGeoCircle* circle3=CLbtGeoCircle::NewL(coordinate,500);
+       	coordinate.Move(90,500);
+       	CLbtGeoCircle* circle3=CLbtGeoCircle::NewL(coordinate,100);
     	circle3->SetCenter(coordinate);
     	CLbtTriggerConditionArea* condition2=CLbtTriggerConditionArea::NewL(
                                                 circle3,
@@ -2384,8 +2518,8 @@
     	notifier->CreateTriggers( lbt,*trig,trigIdtochange,ETrue,wait );
     	wait->Start( );
     	
-    	coordinate.Move(90,5000);
-    	CLbtGeoCircle* circle2=CLbtGeoCircle::NewL(coordinate,500);
+    	coordinate.Move(90,500);
+    	CLbtGeoCircle* circle2=CLbtGeoCircle::NewL(coordinate,100);
     	circle2->SetCenter(coordinate);
     	CLbtTriggerConditionArea* condition3=CLbtTriggerConditionArea::NewL(
                                                 circle2,
@@ -2410,6 +2544,7 @@
     	FireInfo = notifier->GetFiredTrigger();
     	FireInfo.iFiredPositionInfo.GetPosition(firePosition);
     	firePosition.Distance(coordinate,trigDistance);
+    	RestoreProfileL();
      	if(FireInfo.iTriggerId ==trigIdtochange)
      	{
      		CleanupStack::PopAndDestroy( notifier );
@@ -2458,6 +2593,11 @@
  	 User::LeaveIfError( lbt.Open(lbtserver));
  	 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 only simpsy
      EnableSimPSYL();
      //Clear all triggers
@@ -2561,6 +2701,7 @@
     	FireInfo = notifier->GetFiredTrigger();
     	FireInfo.iFiredPositionInfo.GetPosition(firePosition);
     	firePosition.Distance(coordinate,trigDistance);
+    	RestoreProfileL();
     	if( trigDistance>=1000)
     	{
     	_LIT(KProcessToSearch, "About"); 
@@ -2626,6 +2767,11 @@
  	 User::LeaveIfError( lbt.Open( lbtserver ) );
  	 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 only simpsy
      EnableSimPSYL();
      //Clear all triggers
@@ -2710,6 +2856,7 @@
     FireInfo = notifier->GetFiredTrigger();
     FireInfo.iFiredPositionInfo.GetPosition(firePosition);
     firePosition.Distance(coordinate,trigDistance);
+    RestoreProfileL();
     if( trigDistance<=1000 &&notifier->iTriggerFireCount ==2)
     {
     	CleanupStack::PopAndDestroy( notifier );
@@ -2754,6 +2901,11 @@
  	 User::LeaveIfError( lbt.Open( lbtserver ) );
  	 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 only simpsy
      EnableSimPSYL();
      //Clear all triggers
@@ -2834,6 +2986,7 @@
     FireInfo = notifier->GetFiredTrigger();
     FireInfo.iFiredPositionInfo.GetPosition(firePosition);
     firePosition.Distance(coordinate,trigDistance);
+    RestoreProfileL();
     if( trigDistance>=1000 &&notifier->iTriggerFireCount ==2)
     {
     	CleanupStack::PopAndDestroy( notifier );
@@ -2877,6 +3030,11 @@
  	 User::LeaveIfError( lbt.Open( lbtserver ) );
  	 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 only simpsy
      EnableSimPSYL();
      //Clear all triggers
@@ -2956,6 +3114,7 @@
     FireInfo = notifier->GetFiredTrigger();
     FireInfo.iFiredPositionInfo.GetPosition(firePosition);
     firePosition.Distance(coordinate,trigDistance);
+    RestoreProfileL();
     if( trigDistance<=1000 &&notifier->iTriggerFireCount ==2)
     {
     	CleanupStack::PopAndDestroy( notifier );