locationtriggering/tsrc/lbtengine_test/firingofstartuptriggerandlisttrigger/src/firingofstartuptriggerandlisttriggerblocks.cpp
branchRCL_3
changeset 44 2b4ea9893b66
parent 0 667063e416a2
child 45 6b6920c56e2f
--- a/locationtriggering/tsrc/lbtengine_test/firingofstartuptriggerandlisttrigger/src/firingofstartuptriggerandlisttriggerblocks.cpp	Thu Aug 19 10:20:18 2010 +0300
+++ b/locationtriggering/tsrc/lbtengine_test/firingofstartuptriggerandlisttrigger/src/firingofstartuptriggerandlisttriggerblocks.cpp	Tue Aug 31 15:37:04 2010 +0300
@@ -75,7 +75,15 @@
 //#include <epossimulationpsy.hrh>
 #include "firingofstartuptriggerandlisttrigger.h"
 #include "t_triggerfireobserver.h"
-#include <e32property.h>
+
+
+#include <EPos_MPosModulesObserver.h> 
+#include <EPos_CPosModuleIdList.h>
+#include <EPos_CPosModules.h>
+#include <EPos_CPosModuleUpdate.h>
+#include <MProEngEngine.h>
+#include <Profile.hrh>
+#include <ProEngFactory.h>
 
 // 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<KPositionMaxModuleName> 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<KLbtMaxNameLength> 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<KLbtMaxNameLength> 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<KLbtMaxNameLength> 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<KLbtMaxNameLength> 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<KLbtMaxNameLength> 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<KLbtMaxNameLength> 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 <CLbtStartupTrigger*>(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<KLbtMaxNameLength> 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());