locationtriggering/tsrc/lbtengine_test/firingofstartuptriggerandlisttrigger/src/firingofstartuptriggerandlisttriggerblocks.cpp
changeset 0 667063e416a2
child 39 3efc7a0e8755
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/locationtriggering/tsrc/lbtengine_test/firingofstartuptriggerandlisttrigger/src/firingofstartuptriggerandlisttriggerblocks.cpp	Tue Feb 02 01:06:48 2010 +0200
@@ -0,0 +1,5057 @@
+/*
+* Copyright (c) 2002 - 2007 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:    Test module to implement Firing of startup trigger and Listing of trigger related test cases
+*
+*/
+
+
+
+
+
+
+// INCLUDE FILES
+#include <e32svr.h>
+#include <StifParser.h>
+#include <Stiftestinterface.h>
+#include <e32cmn.h>
+#include <e32des16.h>
+#include <e32base.h>
+#include <s32mem.h>
+#include <e32math.h> 
+#include <centralrepository.h>
+#include <lbs/SimulationPSYInternalCRKeys.h>
+//#include <time.h>
+
+
+
+
+// LT API
+
+#include <lbtcommon.h>
+#include <lbterrors.h>
+#include <lbtgeoareabase.h>
+#include <lbtgeocircle.h>
+#include <lbtgeorect.h>
+#include <lbtlisttriggeroptions.h>
+#include <lbtsessiontrigger.h>
+#include <lbtstartuptrigger.h>
+#include <lbtserver.h>
+#include <lbttriggerchangeevent.h>
+#include <lbttriggerchangeeventnotifier.h>
+#include <lbttriggerchangeeventobserver.h>
+#include <lbttriggerconditionarea.h>
+#include <lbttriggerconditionbase.h>
+#include <lbttriggerdynamicinfo.h>
+#include <lbttriggerentry.h>
+#include <lbttriggerfilterbase.h>
+#include <lbttriggerfilterbyarea.h>
+#include <lbttriggerfilterbyattribute.h>
+#include <lbttriggerfiltercomposite.h>
+#include <lbttriggerfiringeventnotifier.h>
+#include <lbttriggerfiringeventobserver.h>
+#include <lbttriggerinfo.h>
+#include <lbttriggeringsystemsettings.h>
+#include <lbttriggeringsystemsettingschangeeventnotifier.h>
+#include <lbttriggeringsystemsettingschangeeventobserver.h>
+
+// Location aquisition API 
+
+#include <lbscommon.h>
+#include <LbsRequestor.h>
+#include <LbsPosition.h>
+#include <LbsPositionInfo.h>
+#include <lbs.h>
+//#include <epossimulationpsy.hrh>
+#include "firingofstartuptriggerandlisttrigger.h"
+#include "t_triggerfireobserver.h"
+#include <e32property.h>
+
+// EXTERNAL DATA STRUCTURES
+//extern  ?external_data;
+
+// EXTERNAL FUNCTION PROTOTYPES  
+//extern ?external_function( ?arg_type,?arg_type );
+
+// CONSTANTS
+//const ?type ?constant_var = ?constant;
+
+// MACROS
+//#define ?macro ?macro_def
+
+// LOCAL CONSTANTS AND MACROS
+//const ?type ?constant_var = ?constant;
+//#define ?macro_name ?macro_def
+
+// MODULE DATA STRUCTURES
+//enum ?declaration
+//typedef ?declaration
+
+// LOCAL FUNCTION PROTOTYPES
+//?type ?function_name( ?arg_type, ?arg_type );
+
+// FORWARD DECLARATIONS
+//class ?FORWARD_CLASSNAME;
+
+// ============================= LOCAL FUNCTIONS ===============================
+
+// -----------------------------------------------------------------------------
+// ?function_name ?description.
+// ?description
+// Returns: ?value_1: ?description
+//          ?value_n: ?description_line1
+//                    ?description_line2
+// -----------------------------------------------------------------------------
+//
+/*
+?type ?function_name(
+    ?arg_type arg,  // ?description
+    ?arg_type arg)  // ?description
+    {
+
+    ?code  // ?comment
+
+    // ?comment
+    ?code
+    }
+*/
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+// -----------------------------------------------------------------------------
+// CFiringofStartupTriggerAndListTrigger::Delete
+// Delete here all resources allocated and opened from test methods. 
+// Called from destructor. 
+// -----------------------------------------------------------------------------
+//
+void CFiringofStartupTriggerAndListTrigger::Delete() 
+    {
+
+    }
+
+// -----------------------------------------------------------------------------
+// CFiringofStartupTriggerAndListTrigger::RunMethodL
+// Run specified method. Contains also table of test mothods and their names.
+// -----------------------------------------------------------------------------
+//
+TInt CFiringofStartupTriggerAndListTrigger::RunMethodL( 
+    CStifItemParser& aItem ) 
+    {
+
+    static TStifFunctionInfo const KFunctions[] =
+        {  
+        // Copy this line for every implemented function.
+        // First string is the function name used in TestScripter script file.
+        // 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 ),
+				
+
+
+        };
+
+    const TInt count = sizeof( KFunctions ) / 
+                        sizeof( TStifFunctionInfo );
+
+    return RunInternalL( KFunctions, count, aItem );
+
+    }
+
+// -----------------------------------------------------------------------------
+// CFiringofStartupTriggerAndListTrigger::ExampleL
+// Example test method function.
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+
+//Firing of single Entry type startup trigger
+
+TInt CFiringofStartupTriggerAndListTrigger::TCLBTFW001_testL( CStifItemParser& /* aItem */ )
+    {
+   	
+	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;
+ 	 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 );
+ 	 //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, KSimulationFile0));
+	 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"));
+    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
+
+    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->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);
+      //close sim psy
+    
+    iPositioner.Close();
+    iLocationServer.Close();
+    if( trigDistance<=1000 && FireInfo.iTriggerId==trigId )
+    {
+    	lbt.DeleteTriggerL(trigId);
+	   	CleanupStack::PopAndDestroy( notifier );
+	    CleanupStack::PopAndDestroy( trig );
+	    CleanupStack::Pop( &lbt );
+	    CleanupStack::PopAndDestroy( &lbtserver );
+	    delete wait;
+	    iLog->Log(_L("Test case passed "));
+	   
+	    return KErrNone;
+    }
+    else
+    {
+    	CleanupStack::PopAndDestroy( notifier );
+	    CleanupStack::PopAndDestroy( trig );
+	    CleanupStack::Pop( &lbt );
+	    CleanupStack::PopAndDestroy( &lbtserver );
+	    delete wait;
+	    
+	    return -99; 
+    }
+   //  return KErrNone; 
+    }
+   
+   //Firing of single Exit type Startup Trigger
+   
+    TInt CFiringofStartupTriggerAndListTrigger::TCLBTFW002_testL( CStifItemParser& /* aItem */ )
+    {
+
+   
+    _LIT( KSimulationFile,"c:\\system\\data\\simu_move2.sps" );
+
+ 	 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 );
+ 	 User::LeaveIfError( lbt.Open( lbtserver ) );
+ 	 CleanupClosePushL( lbt );
+ 	 //Delete all the existing trggers
+ 	// lbt.DeleteTriggersL();
+ 	 CRepository* repository = CRepository::NewLC(KCRUidSimulationPSY);
+	 User::LeaveIfError(repository->Set(KCRKeySimPSYSimulationFile, KSimulationFile));
+	 CleanupStack::PopAndDestroy(repository);
+	 
+	 //Delete all the existing trggers
+ 	 TRAP_IGNORE(lbt.DeleteTriggersL());
+	  //Construct a session trigger
+    CLbtStartupTrigger* trig = CLbtStartupTrigger::NewL();
+    
+    //Push to cleanup stack
+    CleanupStack::PushL( trig );
+    
+    // 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);
+    
+    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( );
+    
+    notifier->StartNotification( wait );
+    wait->Start( );
+     TLbtTriggerFireInfo FireInfo;
+    TReal32 trigDistance;
+    TPosition firePosition;
+    FireInfo = notifier->GetFiredTrigger();
+    FireInfo.iFiredPositionInfo.GetPosition(firePosition);
+    firePosition.Distance(coordinate,trigDistance);
+    
+     //close sim psy
+    
+    iPositioner.Close();
+    iLocationServer.Close();
+    if( trigDistance>=1000 && FireInfo.iTriggerId==trigId )
+    {
+    	lbt.DeleteTriggerL(trigId);
+	   	CleanupStack::PopAndDestroy( notifier );
+	    CleanupStack::PopAndDestroy( trig );
+	    CleanupStack::Pop( &lbt );
+	    CleanupStack::PopAndDestroy( &lbtserver );
+	    delete wait;
+	    iLog->Log(_L("Test case passed "));
+	    return KErrNone;
+    }
+    else
+    {
+    	CleanupStack::PopAndDestroy( notifier );
+    CleanupStack::PopAndDestroy( trig );
+    CleanupStack::Pop( &lbt );
+    CleanupStack::PopAndDestroy( &lbtserver );
+    delete wait;
+    
+    return -99; 
+    }
+	
+    }
+    
+    // Firing of startup trigger when owner application of the trigger is not running
+    
+    TInt CFiringofStartupTriggerAndListTrigger::TCLBTFW003_testL( CStifItemParser& /* aItem */ )
+    {
+
+   _LIT( KSimulationFile,"c:\\system\\data\\simu_move2.sps" );
+
+ 	 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 );
+ 	 User::LeaveIfError( lbt.Open( lbtserver ) );
+ 	 CleanupClosePushL( lbt );
+ 	 
+ 	 //Delete all the existing trggers
+ 	 TRAP_IGNORE(lbt.DeleteTriggersL());
+ 	
+ 	 CRepository* repository = CRepository::NewLC(KCRUidSimulationPSY);
+	 User::LeaveIfError(repository->Set(KCRKeySimPSYSimulationFile, KSimulationFile));
+	 CleanupStack::PopAndDestroy(repository);
+	 
+	  //Construct a session trigger
+    CLbtStartupTrigger* trig = CLbtStartupTrigger::NewL();
+    
+    //Push to cleanup stack
+    CleanupStack::PushL( trig );
+    
+    // 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);
+    
+    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( );
+    
+   /* notifier->StartNotification( wait );
+    wait->Start( );*/
+    
+    CleanupStack::PopAndDestroy( notifier );
+    CleanupStack::PopAndDestroy( trig );
+    CleanupStack::Pop( &lbt );
+    CleanupStack::PopAndDestroy( &lbtserver );
+    delete wait;
+    User::Exit(0);
+    return KErrNone; 
+      
+    }
+    
+    
+    
+    //Firing of  startup trigger when trigger handling process is same as the owner of the trigger
+    TInt CFiringofStartupTriggerAndListTrigger::TCLBTFW004_testL( CStifItemParser& /* aItem */ )
+    {
+
+    
+    _LIT( KSimulationFile,"c:\\system\\data\\simu_move2.sps" );
+
+ 	 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 );
+ 	 User::LeaveIfError( lbt.Open( lbtserver ) );
+ 	 CleanupClosePushL( lbt );
+ 	 
+ 	
+ 	 //Delete all the existing trggers
+ 	 TRAP_IGNORE(lbt.DeleteTriggersL());
+ 	 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 );
+    
+    // Set Name
+    trig->SetNameL(_L("Trigger1"));
+    
+   // _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
+    
+    TCoordinate coordinate(62.5285,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( );
+    
+    notifier->StartNotification( wait );
+    wait->Start( );
+    
+    TLbtTriggerFireInfo FireInfo;
+    TReal32 trigDistance;
+    TPosition firePosition;
+    FireInfo = notifier->GetFiredTrigger();
+    FireInfo.iFiredPositionInfo.GetPosition(firePosition);
+    firePosition.Distance(coordinate,trigDistance);
+    
+    //close sim psy
+    
+    iPositioner.Close();
+    iLocationServer.Close();
+    if( trigDistance<=1000 && FireInfo.iTriggerId==trigId )
+    {
+    	lbt.DeleteTriggerL(trigId);
+	   	CleanupStack::PopAndDestroy( notifier );
+	    CleanupStack::PopAndDestroy( trig );
+	    CleanupStack::Pop( &lbt );
+	    CleanupStack::PopAndDestroy( &lbtserver );
+	    delete wait;
+	    iLog->Log(_L("Test case passed "));
+	    return KErrNone;
+    }
+    else
+    {
+    
+    	CleanupStack::PopAndDestroy( notifier );
+    CleanupStack::PopAndDestroy( trig );
+    CleanupStack::Pop( &lbt );
+    CleanupStack::PopAndDestroy( &lbtserver );
+    delete wait;
+    
+    return -99; 
+    }
+
+    }
+    
+    
+    //Testing of trigger firing when trigger is in disabled state
+    
+    TInt CFiringofStartupTriggerAndListTrigger::TCLBTFW005_testL( CStifItemParser& /* aItem */ )
+    {
+
+       _LIT( KSimulationFile,"c:\\system\\data\\simu_move2.sps" );
+
+ 	 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 );
+ 	 User::LeaveIfError( lbt.Open( lbtserver ) );
+ 	 CleanupClosePushL( lbt );
+ 	 
+ 	 //Delete all the existing trggers
+ 	 TRAP_IGNORE(lbt.DeleteTriggersL());
+ 	
+ 	 CRepository* repository = CRepository::NewLC(KCRUidSimulationPSY);
+	 User::LeaveIfError(repository->Set(KCRKeySimPSYSimulationFile, KSimulationFile));
+	 CleanupStack::PopAndDestroy(repository);
+	 
+	  //Construct a session trigger
+    CLbtStartupTrigger* trig = CLbtStartupTrigger::NewL();
+    
+    //Push to cleanup stack
+    CleanupStack::PushL( trig );
+    
+    // Set Name
+    trig->SetNameL(_L("Trigger1"));
+    
+     CLbtTriggerEntry::TLbtTriggerState aState ;
+    aState = CLbtTriggerEntry::EStateDisabled;
+    trig->SetState(aState);
+    
+    // _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);
+    
+    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( );
+    
+    notifier->StartNotification( wait );
+  //  wait->Start( );
+    notifier->iWaitStatus = KRequestPending;
+    
+   // notifier->StartNotification( wait );
+	notifier->After(1500000);
+	wait->Start( );
+  //  User::After(60000000);
+  iPositioner.Close();
+    iLocationServer.Close();
+     if(notifier->iTriggerFireCount> 0)
+    {
+    CleanupStack::PopAndDestroy( notifier );
+    CleanupStack::PopAndDestroy( trig );
+    CleanupStack::PopAndDestroy( &lbt );
+    CleanupStack::PopAndDestroy( &lbtserver );
+  //  notifier->iTimer.Cancel();
+    delete wait;
+    return -99; 
+    }
+    else 
+   {
+    CleanupStack::PopAndDestroy( notifier );
+    CleanupStack::PopAndDestroy( trig );
+    CleanupStack::PopAndDestroy( &lbt );
+    CleanupStack::PopAndDestroy( &lbtserver );
+   // notifier->iTimer.Cancel();
+    delete wait;
+    
+    return KErrNone; 
+    }
+    }
+    
+    
+    //Firing of  startup trigger when trigger handling process is already running
+    TInt CFiringofStartupTriggerAndListTrigger::TCLBTFW006_testL( CStifItemParser& /* aItem */ )
+    {
+
+    _LIT( KSimulationFile,"c:\\system\\data\\simu_move2.sps" );
+
+ 	 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->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();
+    if(trigDistance<=1000 && FireInfo.iTriggerId==trigId )
+    {
+    
+	   	CleanupStack::PopAndDestroy( notifier );
+	    CleanupStack::PopAndDestroy( trig );
+	    CleanupStack::Pop( &lbt );
+	    CleanupStack::PopAndDestroy( &lbtserver );
+	    delete wait;
+	    iLog->Log(_L("Test case passed "));
+	    
+	    return KErrNone;
+    }
+    else
+    {
+    	CleanupStack::PopAndDestroy( notifier );
+    CleanupStack::PopAndDestroy( trig );
+    CleanupStack::Pop( &lbt );
+    CleanupStack::PopAndDestroy( &lbtserver );
+    delete wait;
+    
+    return -99; 
+    }
+      
+
+    }
+    
+   
+   //Firing of entry type trigger when FireOnCreation flag set as true 
+    TInt CFiringofStartupTriggerAndListTrigger::TCLBTFW007_testL( CStifItemParser& /* aItem */ )
+    {
+
+     _LIT( KSimulationFile,"c:\\system\\data\\simu_move2.sps" );
+
+ 	 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 );
+ 	 User::LeaveIfError( lbt.Open( lbtserver ) );
+ 	 CleanupClosePushL( lbt );
+ 	 
+ 	 //Delete all the existing trggers
+ 	 TRAP_IGNORE(lbt.DeleteTriggersL());
+ 	
+ 	 CRepository* repository = CRepository::NewLC(KCRUidSimulationPSY);
+	 User::LeaveIfError(repository->Set(KCRKeySimPSYSimulationFile, KSimulationFile));
+	 CleanupStack::PopAndDestroy(repository);
+	 
+	  //Construct a session trigger
+    CLbtStartupTrigger* trig = CLbtStartupTrigger::NewL();
+    
+    //Push to cleanup stack
+    CleanupStack::PushL( trig );
+    
+    // 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);
+    
+    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( );
+    
+    notifier->StartNotification( wait );
+    wait->Start( );
+    
+     TLbtTriggerFireInfo FireInfo;
+    TReal32 trigDistance;
+    TPosition firePosition;
+    FireInfo = notifier->GetFiredTrigger();
+    FireInfo.iFiredPositionInfo.GetPosition(firePosition);
+    firePosition.Distance(coordinate,trigDistance);
+    iPositioner.Close();
+    iLocationServer.Close();
+    if(trigDistance==0 && FireInfo.iTriggerId==trigId )
+    {
+    
+	   	CleanupStack::PopAndDestroy( notifier );
+	    CleanupStack::PopAndDestroy( trig );
+	    CleanupStack::Pop( &lbt );
+	    CleanupStack::PopAndDestroy( &lbtserver );
+	    delete wait;
+	    iLog->Log(_L("Test case passed "));
+	    return KErrNone;
+    }
+    else
+    {
+    	CleanupStack::PopAndDestroy( notifier );
+    CleanupStack::PopAndDestroy( trig );
+    CleanupStack::Pop( &lbt );
+    CleanupStack::PopAndDestroy( &lbtserver );
+    delete wait;
+    
+    return -99; 
+    }
+      
+    }
+
+//Firing of exit type trigger when FireOnCreation flag set as true
+
+TInt CFiringofStartupTriggerAndListTrigger::TCLBTFW008_testL( CStifItemParser& /* aItem */ )
+    {
+
+    
+    _LIT( KSimulationFile,"c:\\system\\data\\simu_move2.sps" );
+
+ 	 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 );
+ 	 User::LeaveIfError( lbt.Open( lbtserver ) );
+ 	 CleanupClosePushL( lbt );
+ 	 
+ 	 //Delete all the existing trggers
+ 	 TRAP_IGNORE(lbt.DeleteTriggersL());
+ 	
+ 	 CRepository* repository = CRepository::NewLC(KCRUidSimulationPSY);
+	 User::LeaveIfError(repository->Set(KCRKeySimPSYSimulationFile, KSimulationFile));
+	 CleanupStack::PopAndDestroy(repository);
+	 
+	  //Construct a session trigger
+    CLbtStartupTrigger* trig = CLbtStartupTrigger::NewL();
+    
+    //Push to cleanup stack
+    CleanupStack::PushL( trig );
+    
+    // Set Name
+    trig->SetNameL(_L("Trigger1"));
+    _LIT( KMyTriggerHandlingProcessName, "About.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);
+    coordinate.Move(90,2000);
+    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( );
+    
+    notifier->StartNotification( wait );
+    wait->Start( );
+    
+     TLbtTriggerFireInfo FireInfo;
+    TReal32 trigDistance;
+    TPosition firePosition;
+    FireInfo = notifier->GetFiredTrigger();
+    FireInfo.iFiredPositionInfo.GetPosition(firePosition);
+    firePosition.Distance(coordinate,trigDistance);
+    iPositioner.Close();
+    iLocationServer.Close();
+    if( trigDistance>=1000 && FireInfo.iTriggerId==trigId )
+    {
+    
+	   	CleanupStack::PopAndDestroy( notifier );
+	    CleanupStack::PopAndDestroy( trig );
+	    CleanupStack::Pop( &lbt );
+	    CleanupStack::PopAndDestroy( &lbtserver );
+	    delete wait;
+	    iLog->Log(_L("Test case passed "));
+	    return KErrNone;
+    }
+    else
+    {
+    	CleanupStack::PopAndDestroy( notifier );
+    CleanupStack::PopAndDestroy( trig );
+    CleanupStack::Pop( &lbt );
+    CleanupStack::PopAndDestroy( &lbtserver );
+    delete wait;
+    
+    return -99; 
+    }
+    }
+ 
+ 
+ //Firing of entry type trigger when FireOnCreation flag set as false   
+TInt CFiringofStartupTriggerAndListTrigger::TCLBTFW009_testL( CStifItemParser& /* aItem */ )
+    {
+ _LIT( KSimulationFile,"c:\\system\\data\\simu_move2.sps" );
+
+ 	 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 );
+ 	 User::LeaveIfError( lbt.Open( lbtserver ) );
+ 	 CleanupClosePushL( lbt );
+ 	 
+ 	 //Delete all the existing trggers
+ 	 TRAP_IGNORE(lbt.DeleteTriggersL());
+ 	
+ 	 CRepository* repository = CRepository::NewLC(KCRUidSimulationPSY);
+	 User::LeaveIfError(repository->Set(KCRKeySimPSYSimulationFile, KSimulationFile));
+	 CleanupStack::PopAndDestroy(repository);
+	 
+	  //Construct a session trigger
+    CLbtStartupTrigger* trig = CLbtStartupTrigger::NewL();
+    
+    //Push to cleanup stack
+    CleanupStack::PushL( trig );
+    
+    // Set Name
+    trig->SetNameL(_L("Trigger1"));
+    _LIT( KMyTriggerHandlingProcessName, "TrigHandlingProcess.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);
+    
+    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,EFalse,wait );
+    wait->Start( );
+    
+   // notifier->StartNotification( wait );
+    //  wait->Start( );
+  //  notifier->iWaitStatus = KRequestPending;
+    
+    notifier->StartNotification( wait );
+	notifier->After(5000000);
+	wait->Start( );
+    iPositioner.Close();
+    iLocationServer.Close();
+       if(notifier->iTriggerFireCount== 0)
+    {
+    CleanupStack::PopAndDestroy( notifier );
+    CleanupStack::PopAndDestroy( trig );
+    CleanupStack::PopAndDestroy( &lbt );
+    CleanupStack::PopAndDestroy( &lbtserver );
+  //  notifier->iTimer.Cancel();
+    delete wait;
+    return KErrNone; 
+    }
+    else 
+   {
+    CleanupStack::PopAndDestroy( notifier );
+    CleanupStack::PopAndDestroy( trig );
+    CleanupStack::PopAndDestroy( &lbt );
+    CleanupStack::PopAndDestroy( &lbtserver );
+   // notifier->iTimer.Cancel();
+    delete wait;
+    
+    return -99; 
+    }
+      
+    }
+    
+
+//Firing of exit type trigger when FireOnCreation flag set as false
+
+TInt CFiringofStartupTriggerAndListTrigger::TCLBTFW010_testL( CStifItemParser& /* aItem */ )
+    {
+
+     _LIT( KSimulationFile,"c:\\system\\data\\simu_move2.sps" );
+
+ 	 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 );
+ 	 User::LeaveIfError( lbt.Open( lbtserver ) );
+ 	 CleanupClosePushL( lbt );
+ 	 
+ 	 //Delete all the existing trggers
+ 	 TRAP_IGNORE(lbt.DeleteTriggersL());
+ 	
+ 	 CRepository* repository = CRepository::NewLC(KCRUidSimulationPSY);
+	 User::LeaveIfError(repository->Set(KCRKeySimPSYSimulationFile, KSimulationFile));
+	 CleanupStack::PopAndDestroy(repository);
+	 
+	  //Construct a session trigger
+    CLbtStartupTrigger* trig = CLbtStartupTrigger::NewL();
+    
+    //Push to cleanup stack
+    CleanupStack::PushL( trig );
+    
+    // Set Name
+    trig->SetNameL(_L("Trigger1"));
+    _LIT( KMyTriggerHandlingProcessName, "TrigHandlingProcess.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);
+    coordinate.Move(90,1100);
+    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,EFalse,wait );
+    wait->Start( );
+    
+   
+    
+    notifier->StartNotification( wait );
+	notifier->After(5000000);
+	wait->Start( );
+    iPositioner.Close();
+    iLocationServer.Close();
+       if(notifier->iTriggerFireCount== 0)
+    {
+    CleanupStack::PopAndDestroy( notifier );
+    CleanupStack::PopAndDestroy( trig );
+    CleanupStack::PopAndDestroy( &lbt );
+    CleanupStack::PopAndDestroy( &lbtserver );
+  //  notifier->iTimer.Cancel();
+    delete wait;
+    return KErrNone; 
+    }
+    else 
+   {
+    CleanupStack::PopAndDestroy( notifier );
+    CleanupStack::PopAndDestroy( trig );
+    CleanupStack::PopAndDestroy( &lbt );
+    CleanupStack::PopAndDestroy( &lbtserver );
+   // notifier->iTimer.Cancel();
+    delete wait;
+    
+    return -99; 
+    }
+    }
+    
+    //Starting the trigger fire notifier without opening the subsession
+    TInt CFiringofStartupTriggerAndListTrigger::TCLBTFW011_testL( CStifItemParser& /* aItem */ )
+    {
+
+   //  _LIT( KSimulationFile,"c:\\system\\data\\simu_move1.sps" );
+
+ 	 RLbtServer lbtserver;
+ 	 RLbt lbt;
+ 	 
+ 	 User::LeaveIfError( lbtserver.Connect() );
+     CleanupClosePushL( lbtserver );
+ 
+    TCoordinate coordinate(62.4438,23.9385);
+    TestModuleIf().SetExitReason( CTestModuleIf::EPanic, 2);  
+    CTriggerFireObserver* notifier= CTriggerFireObserver::NewL( lbt,coordinate );
+    CActiveSchedulerWait* wait=new(ELeave)CActiveSchedulerWait;
+    	
+    notifier->StartNotification( wait );
+    //wait->Start( );
+    
+    CleanupStack::PopAndDestroy( notifier );
+   // CleanupStack::PopAndDestroy( trig );
+    CleanupStack::PopAndDestroy( &lbt );
+    CleanupStack::PopAndDestroy( &lbtserver );
+    delete wait;
+    
+    return KErrNone; 
+      
+    }
+    
+    
+
+//Starting the trigger fire notifier when it is already started
+TInt CFiringofStartupTriggerAndListTrigger::TCLBTFW012_testL( CStifItemParser& /* aItem */ )
+    {
+ _LIT( KSimulationFile,"c:\\system\\data\\simu_move2.sps" );
+
+ 	 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 );
+ 	 User::LeaveIfError( lbt.Open( lbtserver ) );
+ 	 CleanupClosePushL( lbt );
+ 	 
+ 	
+ 	 CRepository* repository = CRepository::NewLC(KCRUidSimulationPSY);
+	 User::LeaveIfError(repository->Set(KCRKeySimPSYSimulationFile, KSimulationFile));
+	 CleanupStack::PopAndDestroy(repository);
+	 
+	  //Construct a session trigger
+    CLbtStartupTrigger* trig = CLbtStartupTrigger::NewL();
+    
+    //Push to cleanup stack
+    CleanupStack::PushL( trig );
+    
+    // Set Name
+    trig->SetNameL(_L("Trigger1"));
+    _LIT( KMyTriggerHandlingProcessName, "TrigHandlingProcess.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);
+    
+    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,EFalse,wait );
+    wait->Start( );
+    
+    notifier->StartNotification( wait );
+    TestModuleIf().SetExitReason( CTestModuleIf::EPanic, 5);  	
+    notifier->StartNotification( wait );
+    wait->Start( );
+    iPositioner.Close();
+    iLocationServer.Close();
+    CleanupStack::PopAndDestroy( notifier );
+    CleanupStack::PopAndDestroy( trig );
+    CleanupStack::PopAndDestroy( &lbt );
+    CleanupStack::PopAndDestroy( &lbtserver );
+    delete wait;
+    
+    return KErrNone; 
+      
+    }
+    
+ //   Firing of trigger when enabling a disabled trigger inside trigger area
+    
+TInt CFiringofStartupTriggerAndListTrigger::TCLBTFW013_testL( CStifItemParser& /* aItem */ )
+    {
+ _LIT( KSimulationFile,"c:\\system\\data\\simu_move3.sps" );
+
+ 	 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 );
+ 	 User::LeaveIfError( lbt.Open( lbtserver ) );
+ 	 CleanupClosePushL( lbt );
+ 	 
+ 	 //Delete all the existing trggers
+ 	 TRAP_IGNORE(lbt.DeleteTriggersL());
+ 	
+ 	 CRepository* repository = CRepository::NewLC(KCRUidSimulationPSY);
+	 User::LeaveIfError(repository->Set(KCRKeySimPSYSimulationFile, KSimulationFile));
+	 CleanupStack::PopAndDestroy(repository);
+	 
+	  //Construct a session trigger
+    CLbtStartupTrigger* trig = CLbtStartupTrigger::NewL();
+    
+    //Push to cleanup stack
+    CleanupStack::PushL( trig );
+    
+    // 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);
+    
+    CLbtGeoCircle* circle=CLbtGeoCircle::NewL(coordinate,10000);
+    CleanupStack::PushL( circle );
+    
+         
+    // ownership of circle object transferred to the condition object
+    CLbtTriggerConditionArea* condition=CLbtTriggerConditionArea::NewL(
+                                                circle,
+                                                CLbtTriggerConditionArea::EFireOnEnter);
+        
+    CleanupStack::Pop( circle );
+    
+    CLbtTriggerEntry::TLbtTriggerState aState ;
+    aState = CLbtTriggerEntry::EStateDisabled;
+   // aState = CLbtTriggerEntry::EStateEnabled;
+    trig->SetState(aState);
+    
+    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( );
+   
+    
+ //  
+    
+   notifier->iWaitStatus = KRequestPending;
+    
+   // User::LeaveIfError(notifier->iTimer.CreateLocal());
+   
+  // notifier->StartNotification( wait );
+	notifier->After(450000);
+	wait->Start( );
+  //  User::After(60000000);
+     
+  //  {
+     aState = CLbtTriggerEntry::EStateEnabled;
+    lbt.SetTriggerStateL(trigId,CLbtTriggerEntry::EStateEnabled,ELbtTrue);
+     notifier->StartNotification( wait );
+ 		wait->Start( );
+ 		iPositioner.Close();
+    iLocationServer.Close();
+ if(notifier->iTriggerFireCount > 0)
+ {
+  lbt.DeleteTriggerL(trigId);
+  CleanupStack::PopAndDestroy( notifier );
+    CleanupStack::PopAndDestroy( trig );
+    CleanupStack::PopAndDestroy( &lbt );
+    CleanupStack::PopAndDestroy( &lbtserver );
+    //notifier->iTimer.Cancel();
+    delete wait;
+    return KErrNone; 
+    }
+    else
+   {
+    lbt.DeleteTriggerL(trigId);
+    CleanupStack::PopAndDestroy( notifier );
+    CleanupStack::PopAndDestroy( trig );
+    CleanupStack::PopAndDestroy( &lbt ); 
+    CleanupStack::PopAndDestroy( &lbtserver );
+   // notifier->iTimer.Cancel();
+    delete wait;
+    
+    return KErrGeneral; 
+    }
+      
+    }
+    
+  // 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 */ )
+    {
+
+ _LIT( KSimulationFile,"c:\\system\\data\\simu_move1.sps" );
+
+ 	 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, "XYZ.exe");
+    //Set Requestor
+ 	CRequestorBase::TRequestorType ReqType=CRequestorBase::ERequestorUnknown;
+	CRequestorBase::_TRequestorFormat ReqFormat=CRequestorBase::EFormatUnknown;
+	TBuf<KLbtMaxNameLength> ReqData=_L("");
+	trig->SetRequestorL(ReqType,ReqFormat,ReqData);  
+    TSecureId secureid;
+    trig->SetProcessId(KMyTriggerHandlingProcessName,secureid);
+       
+    // 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->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 multiple Entry type startup triggers
+
+TInt CFiringofStartupTriggerAndListTrigger::TCLBTFW018_testL( CStifItemParser& /* aItem */ )
+    {
+
+ _LIT( KSimulationFile,"c:\\system\\data\\simu_move1.sps" );
+
+ 	 RLbtServer lbtserver;
+ 	 RLbt lbt;
+ 	 
+ 	 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* trig1 = CLbtStartupTrigger::NewL();
+     CLbtStartupTrigger* trig2 = CLbtStartupTrigger::NewL();
+    //Push to cleanup stack
+    CleanupStack::PushL( trig1 );
+    CleanupStack::PushL( trig2 );
+    iLog->Log(_L("Startup Trigger Entry Created "));
+    
+    // Set Name
+    trig1->SetNameL(_L("Trigger1"));
+    trig2->SetNameL(_L("Trigger2"));
+   // _LIT( KMyTriggerHandlingProcessName, "About.exe");
+    _LIT( KMyTriggerHandlingProcessName1, "ABOUT.exe");
+    _LIT( KMyTriggerHandlingProcessName2, "About.exe");
+    
+    TSecureId secureid1,secureid2;
+    trig1->SetProcessId(KMyTriggerHandlingProcessName1,secureid1);
+    trig2->SetProcessId(KMyTriggerHandlingProcessName2,secureid2);
+    //Set Requestor
+ 	CRequestorBase::TRequestorType ReqType=CRequestorBase::ERequestorUnknown;
+	CRequestorBase::_TRequestorFormat ReqFormat=CRequestorBase::EFormatUnknown;
+	TBuf<KLbtMaxNameLength> ReqData=_L("");
+	trig1->SetRequestorL(ReqType,ReqFormat,ReqData);  
+	
+	trig2->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 );
+    
+    trig1->SetCondition(condition); // ownership transferred to object
+	trig2->SetCondition(condition);
+    TLbtTriggerId trigId;
+    
+        
+    CTriggerFireObserver* notifier= CTriggerFireObserver::NewL( lbt,coordinate);
+    CleanupStack::PushL( notifier );
+    
+    CActiveSchedulerWait* wait=new(ELeave)CActiveSchedulerWait;
+        
+    notifier->CreateTriggers( lbt,*trig1,trigId,ETrue,wait );
+    wait->Start( );
+    notifier->CreateTriggers( lbt,*trig2,trigId,ETrue,wait );
+    wait->Start( );
+    iLog->Log(_L("Trigger Created"));
+    notifier->StartNotification( wait );
+  	wait->Start( );
+    iLog->Log(_L("Triggers Fired"));
+    TLbtTriggerFireInfo FireInfo;
+    TReal32 trigDistance;
+    TPosition firePosition;
+    FireInfo = notifier->GetFiredTrigger();
+    FireInfo.iFiredPositionInfo.GetPosition(firePosition);
+    firePosition.Distance(coordinate,trigDistance);
+   
+    	CleanupStack::PopAndDestroy( notifier );
+    CleanupStack::PopAndDestroy( trig2);
+    CleanupStack::Pop( trig1 );
+    CleanupStack::PopAndDestroy( &lbt );
+    CleanupStack::PopAndDestroy( &lbtserver );
+    delete wait;
+    
+    return KErrNone; 
+   
+    
+    }
+   
+   
+
+   //List Trigger Test cases
+    //Retrieving all the information about single startup trigger
+    
+    TInt CFiringofStartupTriggerAndListTrigger::TCLBTFW070_testL( CStifItemParser& /* aItem */ )
+    {
+// _LIT( KSimulationFile,"c:\\system\\data\\simu_move2.sps" );
+
+ 	 RLbtServer lbtserver;
+ 	 RLbt lbt;
+ 	 iLog->Log(_L("Before Connect "));
+ 	 User::LeaveIfError( lbtserver.Connect() );
+ 	 iLog->Log(_L("After Connect "));
+     CleanupClosePushL( lbtserver );
+ 	 User::LeaveIfError( lbt.Open( lbtserver ) );
+ 	 CleanupClosePushL( lbt );
+ 	 iLog->Log(_L("After RLbt::Open "));
+ 	
+ 	 /*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 );
+    
+    // Set Name
+    trig->SetNameL(_L("Trigger1"));
+    _LIT( KMyTriggerHandlingProcessName, "TrigHandlingProcess.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);
+    
+    CLbtGeoCircle* circle=CLbtGeoCircle::NewL(coordinate,1000);
+    CleanupStack::PushL( circle );
+    
+    TUid aManagerUi = TUid::Uid(0x87654321);     
+    // 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,trigId2;
+     trig->SetManagerUi(aManagerUi);   
+        
+    CTriggerFireObserver* notifier= CTriggerFireObserver::NewL( lbt,coordinate );
+    CleanupStack::PushL( notifier );
+    
+    CActiveSchedulerWait* wait=new(ELeave)CActiveSchedulerWait;
+        
+    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);
+    iLog->Log(_L("After GetTriggerLC "));
+    CLbtStartupTrigger *TrigEntry = static_cast <CLbtStartupTrigger*>(Triginfo->TriggerEntry());
+    
+    TLbtTriggerDynamicInfo * dyninfo = Triginfo -> DynInfo() ;
+    
+   // CleanupStack::PopAndDestroy( trig );
+   
+    //Check the name of the trigger
+    TDesC Name2 =TrigEntry->Name(); 
+    if(TrigEntry->Name()!=trig->Name()) 
+    {
+    	return -99;
+    }
+    //Check the state of the trigger
+    CLbtTriggerEntry::TLbtTriggerState State2 = TrigEntry->State() ;  
+    if(State2 !=trig->State())
+    {
+    	return -99;
+    }
+    //Check type of the trigger
+    TInt Type2 = TrigEntry ->Type();
+    if(Type2 != trig->Type())
+    {
+    	return -99;
+    }
+    //Check Condition of the trigger
+	CLbtTriggerConditionArea* Condition2 = static_cast <CLbtTriggerConditionArea*>(TrigEntry->GetCondition());
+	CLbtTriggerConditionArea::TDirection direction;
+	direction = Condition2->Direction();
+	if(direction!=CLbtTriggerConditionArea::EFireOnEnter)
+	{
+		return -99;
+	}
+	CLbtGeoAreaBase* area = Condition2->TriggerArea();
+	if(area ->Type()!=CLbtGeoAreaBase::ECircle )
+	{
+		return -99;
+	}
+	
+	CLbtGeoCircle* circle2 = static_cast <CLbtGeoCircle*>(area);
+	TCoordinate center = circle->Center();
+	TCoordinate center2 = circle2->Center();
+	TReal32 distance;
+	center2.Distance(center,distance);
+	if(distance!=0)
+	{
+		return -99;
+	}
+	TReal radius = circle2->Radius();
+	if(radius != circle->Radius())
+	{
+		return -99;
+	}
+	//Check requestors 
+    RRequestorStack   aRequestors,aRequestors2 ;
+    TrigEntry->GetRequestorsL(aRequestors2);
+    trig->GetRequestorsL(aRequestors);
+   for(TInt i=0;i<aRequestors.Count();i++)
+    {
+    	CRequestor *requestor = aRequestors[i];
+    	if(requestor->RequestorType()!=NULL)
+    	{
+    		return -99;
+    	}
+    	if(requestor->RequestorData()!=KNullDesC)
+    	{
+    		return -99;
+    	}
+    	else if(requestor->RequestorFormat()!=NULL)
+    	{
+    		return -99;
+    	}
+    
+    }
+    //Check trigger Id
+    trigId2 = TrigEntry->Id();
+    if(trigId !=trigId2)
+    {
+    	return -99;
+    }
+    //Check ManagerUI
+    TUid Managerui2 = TrigEntry->ManagerUi();
+    if(Managerui2!=aManagerUi)
+    {
+    	return -99;
+    }
+    //Check validity
+	TLbtTriggerDynamicInfo::TLbtTriggerValidity validity;
+   validity= dyninfo -> iValidity;
+   if(validity!=TLbtTriggerDynamicInfo::EValid)
+   {
+   	return -99;
+   }
+    HBufC* startupProcFile = HBufC::NewLC( KMaxFileName );
+    TPtr aFileName = startupProcFile->Des();
+    TSecureId aSecureId;
+    TrigEntry->GetProcessId(aFileName,aSecureId);
+    if(aFileName!=KMyTriggerHandlingProcessName)
+    {
+    return -99;	
+    }
+    CleanupStack::PopAndDestroy(1 );//startupProcFile
+   //Check Activity status
+/*	TLbtTriggerDynamicInfo::TLbtTriggerActivityStatus currstatus;
+	currstatus = dyninfo -> iActivityStatus;
+    if(currstatus!=TLbtTriggerDynamicInfo::EActive)
+    {
+    	return -99;
+    }*/
+    CleanupStack::PopAndDestroy(1 );//list options
+    CleanupStack::PopAndDestroy( notifier );
+    CleanupStack::PopAndDestroy( &lbt );
+    CleanupStack::PopAndDestroy( &lbtserver );
+   // delete wait;
+    iLog->Log(_L("Test passed "));
+    return KErrNone; 
+      
+    }
+    
+   //Retrieving all the information about single session trigger
+   
+    TInt CFiringofStartupTriggerAndListTrigger::TCLBTFW071_testL( CStifItemParser& /* aItem */ )
+    {
+// _LIT( KSimulationFile,"c:\\system\\data\\simu_move2.sps" );
+
+ 	 RLbtServer lbtserver;
+ 	 RLbt lbt;
+ 	 
+ 	 User::LeaveIfError( lbtserver.Connect() );
+     CleanupClosePushL( lbtserver );
+ 	 User::LeaveIfError( lbt.Open( lbtserver ) );
+ 	 CleanupClosePushL( lbt );
+ 	 
+ 	
+ 	 //CRepository* repository = CRepository::NewLC(KCRUidSimulationPSY);
+	 //User::LeaveIfError(repository->Set(KCRKeySimPSYSimulationFile, KSimulationFile));
+	 //CleanupStack::PopAndDestroy(repository);
+	 
+	  //Construct a startup trigger
+    CLbtSessionTrigger* trig = CLbtSessionTrigger::NewL();
+    
+    //Push to cleanup stack
+    CleanupStack::PushL( trig );
+    
+    // Set Name
+    trig->SetNameL(_L("Trigger1"));
+    //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);
+    
+    CLbtGeoCircle* circle=CLbtGeoCircle::NewL(coordinate,1000);
+    CleanupStack::PushL( circle );
+    
+    TUid aManagerUi = TUid::Uid(0x87654321);     
+    // 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,trigId2;
+     trig->SetManagerUi(aManagerUi);   
+     
+    CTriggerFireObserver* notifier= CTriggerFireObserver::NewL( lbt,coordinate );
+    CleanupStack::PushL( notifier );
+    
+    CActiveSchedulerWait* wait=new(ELeave)CActiveSchedulerWait;
+        
+    notifier->CreateTriggers( lbt,*trig,trigId,EFalse,wait );
+    wait->Start( );
+    User::After(5000000);
+    CLbtTriggerInfo *Triginfo = CLbtTriggerInfo::NewL();
+    
+   // TLbtTriggerId trigId=1;
+    Triginfo = lbt.GetTriggerLC(trigId);
+    
+    CLbtTriggerEntry *TrigEntry = Triginfo->TriggerEntry();
+    
+    TLbtTriggerDynamicInfo * dyninfo = Triginfo -> DynInfo() ;
+    //Check the name of the trigger
+    TDesC Name2 =TrigEntry->Name(); 
+    if(TrigEntry->Name()!=trig->Name()) 
+    {
+    	return -99;
+    }
+    //Check the state of the trigger
+    CLbtTriggerEntry::TLbtTriggerState State2 = TrigEntry->State() ;  
+    if(State2 !=trig->State())
+    {
+    	return -99;
+    }
+    //Check type of the trigger
+    TInt Type2 = TrigEntry ->Type();
+    if(Type2 != trig->Type())
+    {
+    	return -99;
+    }
+    //Check Condition of the trigger
+	CLbtTriggerConditionArea* Condition2 = static_cast <CLbtTriggerConditionArea*>(TrigEntry->GetCondition());
+	CLbtTriggerConditionArea::TDirection direction;
+	direction = Condition2->Direction();
+	if(direction!=CLbtTriggerConditionArea::EFireOnEnter)
+	{
+		return -99;
+	}
+	CLbtGeoAreaBase* area = Condition2->TriggerArea();
+	if(area ->Type()!=CLbtGeoAreaBase::ECircle )
+	{
+		return -99;
+	}
+	
+	CLbtGeoCircle* circle2 = static_cast <CLbtGeoCircle*>(area);
+	TCoordinate center = circle->Center();
+	TCoordinate center2 = circle2->Center();
+	TReal32 distance;
+	center2.Distance(center,distance);
+	if(distance!=0)
+	{
+		return -99;
+	}
+	TReal radius = circle2->Radius();
+	if(radius != circle->Radius())
+	{
+		return -99;
+	}
+	//Check requestors 
+    RRequestorStack   aRequestors,aRequestors2 ;
+    TrigEntry->GetRequestorsL(aRequestors2);
+    trig->GetRequestorsL(aRequestors);
+   for(TInt i=0;i<aRequestors.Count();i++)
+    {
+    	CRequestor *requestor = aRequestors[i];
+    	if(requestor->RequestorType()!=NULL)
+    	{
+    		return -99;
+    	}
+    	if(requestor->RequestorData()!=KNullDesC)
+    	{
+    		return -99;
+    	}
+    	else if(requestor->RequestorFormat()!=NULL)
+    	{
+    		return -99;
+    	}
+    
+    }
+    //Check trigger Id
+    trigId2 = TrigEntry->Id();
+    if(trigId !=trigId2)
+    {
+    	return -99;
+    }
+    //Check ManagerUI
+    TUid Managerui2 = TrigEntry->ManagerUi();
+    if(Managerui2!=aManagerUi)
+    {
+    	return -99;
+    }
+    //Check validity
+	TLbtTriggerDynamicInfo::TLbtTriggerValidity validity;
+   validity= dyninfo -> iValidity;
+   if(validity!=TLbtTriggerDynamicInfo::EValid)
+   {
+   	return -99;
+   }
+   //Check Activity status
+/*	TLbtTriggerDynamicInfo::TLbtTriggerActivityStatus currstatus;
+	currstatus = dyninfo -> iActivityStatus;
+    if(currstatus!=TLbtTriggerDynamicInfo::EActive)
+    {
+    	return -99;
+    }*/
+    CleanupStack::PopAndDestroy( 1);//list options
+    CleanupStack::PopAndDestroy( notifier );
+    CleanupStack::PopAndDestroy( trig );
+    CleanupStack::PopAndDestroy( &lbt );
+    CleanupStack::PopAndDestroy( &lbtserver );
+   // delete wait;
+    
+    return KErrNone; 
+      
+    }
+    
+  //Retrieving partial information about single startup trigger
+       TInt CFiringofStartupTriggerAndListTrigger::TCLBTFW072_testL( CStifItemParser& /* aItem */ )
+    {
+ 	_LIT( KSimulationFile,"c:\\system\\data\\simu_move2.sps" );
+
+ 	 RLbtServer lbtserver;
+ 	 RLbt lbt;
+ 	 
+ 	 User::LeaveIfError( lbtserver.Connect() );
+     CleanupClosePushL( lbtserver );
+ 	 User::LeaveIfError( lbt.Open( lbtserver ) );
+ 	 CleanupClosePushL( lbt );
+ 	 
+ 	
+ 	 CRepository* repository = CRepository::NewLC(KCRUidSimulationPSY);
+	 User::LeaveIfError(repository->Set(KCRKeySimPSYSimulationFile, KSimulationFile));
+	 CleanupStack::PopAndDestroy(repository);
+	 
+	  //Construct a session trigger
+    CLbtStartupTrigger* trig = CLbtStartupTrigger::NewL();
+    
+    //Push to cleanup stack
+    CleanupStack::PushL( trig );
+    
+    // Set Name
+    trig->SetNameL(_L("Trigger1"));
+    _LIT( KMyTriggerHandlingProcessName, "TrigHandlingProcess.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);
+    
+    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,trigId2;
+        
+        
+    CTriggerFireObserver* notifier= CTriggerFireObserver::NewL( lbt,coordinate );
+    CleanupStack::PushL( notifier );
+    
+    CActiveSchedulerWait* wait=new(ELeave)CActiveSchedulerWait;
+        
+    notifier->CreateTriggers( lbt,*trig,trigId,EFalse,wait );
+    wait->Start( );
+    User::After(5000000);
+    CLbtTriggerInfo *Triginfo = CLbtTriggerInfo::NewL();
+    
+    //TLbtTriggerId trigId=1;
+    Triginfo = lbt.GetTriggerLC(trigId,
+    							CLbtTriggerEntry::EAttributeState |  CLbtTriggerEntry::EAttributeName , 
+    							TLbtTriggerDynamicInfo::EValidityStatus);
+    
+    CLbtTriggerEntry *TrigEntry = Triginfo->TriggerEntry();
+    
+    TLbtTriggerDynamicInfo * dyninfo = Triginfo -> DynInfo() ;
+    //Check Name of the trigger
+    TDesC Name2 =TrigEntry->Name();  
+     if(TrigEntry->Name()!=trig->Name()) 
+    {
+    	return -99;
+    }
+    //Check State of the trigger  
+    CLbtTriggerEntry::TLbtTriggerState State2 = TrigEntry->State() ; 
+    if(State2 !=trig->State())
+    {
+    	return -99;
+    } 
+     //Check type of the trigger
+    TInt Type2 = TrigEntry ->Type();
+    /*if(Type2 != NULL)
+    {
+    	return -99;
+    }*/
+    //Check condition
+		CLbtTriggerConditionArea* Condition2 = static_cast <CLbtTriggerConditionArea*>(TrigEntry->GetCondition());
+//	CLbtTriggerConditionArea::TDirection direction;
+//	direction = Condition2->Direction();
+	if(Condition2!=NULL)
+	{
+		return -99;
+	}
+		//Check requestors 
+    RRequestorStack   aRequestors,aRequestors2 ;
+    TrigEntry->GetRequestorsL(aRequestors2);
+    trig->GetRequestorsL(aRequestors);
+    for(TInt i=0;i<aRequestors.Count();i++)
+    {
+    	CRequestor *requestor = aRequestors[i];
+    	if(requestor->RequestorType()!=NULL)
+    	{
+    		return -99;
+    	}
+    	if(requestor->RequestorData()!=KNullDesC)
+    	{
+    		return -99;
+    	}
+    	else if(requestor->RequestorFormat()!=NULL)
+    	{
+    		return -99;
+    	}
+    
+    }
+    //Check trigger Id
+    trigId2 = TrigEntry->Id();
+    if(trigId !=trigId2)
+    {
+    	return -99;
+    }
+    //Check ManagerUI
+    TUid Managerui2 = TrigEntry->ManagerUi();
+    if(Managerui2!=KNullUid)
+    {
+    	return -99;
+    }
+    //Check validity
+	TLbtTriggerDynamicInfo::TLbtTriggerValidity validity;
+   validity= dyninfo -> iValidity;
+   if(validity!=TLbtTriggerDynamicInfo::EValid)
+   {
+   	return -99;
+   }
+   //Check Activity status
+
+    CleanupStack::PopAndDestroy( 1 );//TrigInfo
+    CleanupStack::PopAndDestroy( notifier );
+    CleanupStack::PopAndDestroy( trig );
+    
+    CleanupStack::PopAndDestroy( &lbt );
+    CleanupStack::PopAndDestroy( &lbtserver );
+  //  delete wait;
+    
+    return KErrNone; 
+      
+    }
+ 
+	//Retrieving partial information about single session  trigger
+    TInt CFiringofStartupTriggerAndListTrigger::TCLBTFW073_testL( CStifItemParser& /* aItem */ )
+    {
+// _LIT( KSimulationFile,"c:\\system\\data\\simu_move2.sps" );
+
+ 	 RLbtServer lbtserver;
+ 	 RLbt lbt;
+ 	 
+ 	 User::LeaveIfError( lbtserver.Connect() );
+     CleanupClosePushL( lbtserver );
+ 	 User::LeaveIfError( lbt.Open( lbtserver ) );
+ 	 CleanupClosePushL( lbt );
+ 	 
+ 	
+ 
+	  //Construct a session trigger
+    CLbtSessionTrigger* trig = CLbtSessionTrigger::NewL();
+    
+    //Push to cleanup stack
+    CleanupStack::PushL( trig );
+    
+    // Set Name
+    trig->SetNameL(_L("Trigger1"));
+    //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);
+    
+    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,trigId2;
+        
+        
+    CTriggerFireObserver* notifier= CTriggerFireObserver::NewL( lbt,coordinate );
+    CleanupStack::PushL( notifier );
+    
+    CActiveSchedulerWait* wait=new(ELeave)CActiveSchedulerWait;
+        
+    notifier->CreateTriggers( lbt,*trig,trigId,EFalse,wait );
+    wait->Start( );
+    User::After(5000000);
+    CLbtTriggerInfo *Triginfo = CLbtTriggerInfo::NewL();
+    
+    
+    Triginfo = lbt.GetTriggerLC(trigId,
+    							CLbtTriggerEntry::EAttributeState |  CLbtTriggerEntry::EAttributeName , 
+    							TLbtTriggerDynamicInfo::EValidityStatus);
+    
+    CLbtTriggerEntry *TrigEntry = Triginfo->TriggerEntry();
+    
+    TLbtTriggerDynamicInfo * dyninfo = Triginfo -> DynInfo() ;
+    //Check Name of the trigger
+    TDesC Name2 =TrigEntry->Name();  
+     if(TrigEntry->Name()!=trig->Name()) 
+    {
+    	return -99;
+    }
+    //Check State of the trigger  
+    CLbtTriggerEntry::TLbtTriggerState State2 = TrigEntry->State() ; 
+    if(State2 !=trig->State())
+    {
+    	return -99;
+    } 
+     //Check type of the trigger
+    TInt Type2 = TrigEntry ->Type();
+   /* if(Type2 != NULL)
+    {
+    	return -99;
+    }*/
+    //Check condition
+		CLbtTriggerConditionArea* Condition2 = static_cast <CLbtTriggerConditionArea*>(TrigEntry->GetCondition());
+//	CLbtTriggerConditionArea::TDirection direction;
+//	direction = Condition2->Direction();
+	if(Condition2!=NULL)
+	{
+		return -99;
+	}
+		//Check requestors 
+    RRequestorStack   aRequestors,aRequestors2 ;
+    TrigEntry->GetRequestorsL(aRequestors2);
+    trig->GetRequestorsL(aRequestors);
+    
+    for(TInt i=0;i<aRequestors.Count();i++)
+    {
+    	CRequestor *requestor = aRequestors[i];
+    	if(requestor->RequestorType()!=NULL)
+    	{
+    		return -99;
+    	}
+    	if(requestor->RequestorData()!=KNullDesC)
+    	{
+    		return -99;
+    	}
+    	else if(requestor->RequestorFormat()!=NULL)
+    	{
+    		return -99;
+    	}
+    
+    }
+    //Check trigger Id
+    trigId2 = TrigEntry->Id();
+    if(trigId !=trigId2)
+    {
+    	return -99;
+    }
+    //Check ManagerUI
+    TUid Managerui2 = TrigEntry->ManagerUi();
+    if(Managerui2!=KNullUid)
+    {
+    	return -99;
+    }
+    //Check validity
+	TLbtTriggerDynamicInfo::TLbtTriggerValidity validity;
+   validity= dyninfo -> iValidity;
+   if(validity!=TLbtTriggerDynamicInfo::EValid)
+   {
+   	return -99;
+   }
+   
+    CleanupStack::PopAndDestroy( 1 );//listoptions
+    CleanupStack::PopAndDestroy( notifier );
+    CleanupStack::PopAndDestroy( trig );
+    CleanupStack::PopAndDestroy( &lbt );
+    CleanupStack::PopAndDestroy( &lbtserver );
+    delete wait;
+    
+    return KErrNone; 
+      
+    }
+
+    //Retrieving trigger Informations which are not been set during creation
+    TInt CFiringofStartupTriggerAndListTrigger::TCLBTFW074_testL( CStifItemParser& /* aItem */ )
+    {
+// _LIT( KSimulationFile,"c:\\system\\data\\simu_move2.sps" );
+
+ 	 RLbtServer lbtserver;
+ 	 RLbt lbt;
+ 	 
+ 	 User::LeaveIfError( lbtserver.Connect() );
+     CleanupClosePushL( lbtserver );
+ 	 User::LeaveIfError( lbt.Open( lbtserver ) );
+ 	 CleanupClosePushL( lbt );
+ 	 
+ 	 	 
+	  //Construct a session trigger
+    CLbtStartupTrigger* trig = CLbtStartupTrigger::NewL();
+    
+    //Push to cleanup stack
+    CleanupStack::PushL( trig );
+    
+   
+   trig->SetNameL(_L("Trigger1"));
+   _LIT( KMyTriggerHandlingProcessName, "TrigHandlingProcess.exe" );
+   //Set Requestor
+ 	CRequestorBase::TRequestorType ReqType=CRequestorBase::ERequestorUnknown;
+	CRequestorBase::_TRequestorFormat ReqFormat=CRequestorBase::EFormatUnknown;
+	TBuf<KLbtMaxNameLength> ReqData=_L("");
+	trig->SetRequestorL(ReqType,ReqFormat,ReqData);  
+   TSecureId secureid;
+   trig->SetProcessId(KMyTriggerHandlingProcessName,secureid);
+    // set condition
+    
+    TCoordinate coordinate(62.5285,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,trigId2;
+        
+        
+    CTriggerFireObserver* notifier= CTriggerFireObserver::NewL( lbt,coordinate );
+    CleanupStack::PushL( notifier );
+    
+    CActiveSchedulerWait* wait=new(ELeave)CActiveSchedulerWait;
+        
+    notifier->CreateTriggers( lbt,*trig,trigId,EFalse,wait );
+    wait->Start( );
+    User::After(5000000);
+    CLbtTriggerInfo *Triginfo = CLbtTriggerInfo::NewL();
+    
+    
+    Triginfo = lbt.GetTriggerLC(trigId);
+    
+    CLbtTriggerEntry *TrigEntry = Triginfo->TriggerEntry();
+    
+    TLbtTriggerDynamicInfo * dyninfo = Triginfo -> DynInfo() ;
+    
+     //Check Name of the trigger
+    TDesC Name2 =TrigEntry->Name();  
+     if(TrigEntry->Name()==KNullDesC) 
+    {
+    	return -99;
+    }
+    //Check State of the trigger  
+    CLbtTriggerEntry::TLbtTriggerState State2 = TrigEntry->State() ; 
+    if(State2 !=CLbtTriggerEntry::EStateEnabled)
+    {
+    	return -99;
+    } 
+     //Check type of the trigger
+    TInt Type2 = TrigEntry ->Type();
+    if(Type2 != CLbtTriggerEntry::ETypeStartup)
+    {
+    	return -99;
+    }
+  
+		//Check requestors 
+    RRequestorStack   aRequestors,aRequestors2 ;
+    TrigEntry->GetRequestorsL(aRequestors2);
+    trig->GetRequestorsL(aRequestors);
+    if(aRequestors.Count()!=1)
+    {
+    	return -99;
+    }
+    
+ 
+    //Check trigger Id
+    trigId2 = TrigEntry->Id();
+    if(trigId !=trigId2)
+    {
+    	return -99;
+    }
+    //Check ManagerUI
+    TUid Managerui2 = TrigEntry->ManagerUi();
+    if(Managerui2!=KNullUid)
+    {
+    	return -99;
+    }
+  
+    CleanupStack::PopAndDestroy( 1 );//listoptions
+    CleanupStack::PopAndDestroy( notifier );
+    CleanupStack::PopAndDestroy( trig );
+    CleanupStack::PopAndDestroy( &lbt );
+    CleanupStack::PopAndDestroy( &lbtserver );
+    delete wait;
+    
+    return KErrNone; 
+      
+    }
+  
+      
+    //Retrieving Triggerhandling process,Commandline Information for session trigger
+     TInt CFiringofStartupTriggerAndListTrigger::TCLBTFW075_testL( CStifItemParser& /* aItem */ )
+    {
+ _LIT( KSimulationFile,"c:\\system\\data\\simu_move2.sps" );
+
+ 	 RLbtServer lbtserver;
+ 	 RLbt lbt;
+ 	 
+ 	 User::LeaveIfError( lbtserver.Connect() );
+     CleanupClosePushL( lbtserver );
+ 	 User::LeaveIfError( lbt.Open( lbtserver ) );
+ 	 CleanupClosePushL( lbt );
+ 	 
+ 	
+ 	 CRepository* repository = CRepository::NewLC(KCRUidSimulationPSY);
+	 User::LeaveIfError(repository->Set(KCRKeySimPSYSimulationFile, KSimulationFile));
+	 CleanupStack::PopAndDestroy(repository);
+	 
+	  //Construct a session trigger
+    CLbtSessionTrigger* trig = CLbtSessionTrigger::NewL();
+    
+    //Push to cleanup stack
+    CleanupStack::PushL( trig );
+    
+    // Set Name
+    trig->SetNameL(_L("Trigger1"));
+   // set condition
+    
+    TCoordinate coordinate(62.5285,23.9385);
+    
+    CLbtGeoCircle* circle=CLbtGeoCircle::NewL(coordinate,1000);
+    CleanupStack::PushL( circle );
+    
+    TUid aManagerUi = TUid::Uid(0x87654321);     
+    // 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
+	//Set Requestor
+ 	CRequestorBase::TRequestorType ReqType=CRequestorBase::ERequestorUnknown;
+	CRequestorBase::_TRequestorFormat ReqFormat=CRequestorBase::EFormatUnknown;
+	TBuf<KLbtMaxNameLength> ReqData=_L("");
+	trig->SetRequestorL(ReqType,ReqFormat,ReqData);  
+    TLbtTriggerId trigId;
+     trig->SetManagerUi(aManagerUi);   
+        
+    CTriggerFireObserver* notifier= CTriggerFireObserver::NewL( lbt,coordinate );
+    CleanupStack::PushL( notifier );
+    
+    CActiveSchedulerWait* wait=new(ELeave)CActiveSchedulerWait;
+        
+    notifier->CreateTriggers( lbt,*trig,trigId,EFalse,wait );
+    wait->Start( );
+    
+    CLbtTriggerInfo *Triginfo = CLbtTriggerInfo::NewL();
+    
+    
+    Triginfo = lbt.GetTriggerLC(trigId,CLbtTriggerEntry::EAttributeStartUpProcessId |  CLbtTriggerEntry::EAttributeStartUpCommandLine 
+    							);
+    /*
+    CLbtStartupTrigger *TrigEntry = static_cast <CLbtStartupTrigger*>(Triginfo->TriggerEntry());
+    
+   // TLbtTriggerDynamicInfo * dyninfo = Triginfo -> DynInfo() ;
+    HBufC* startupProcFile = HBufC::NewLC( KMaxFileName );
+    TPtr aFileName = startupProcFile->Des();
+    TSecureId aSecureId;
+   TrigEntry->GetProcessId(aFileName,aSecureId);
+   */
+    CleanupStack::PopAndDestroy( 1 );//Triginfo
+    CleanupStack::PopAndDestroy( notifier );
+    CleanupStack::PopAndDestroy( trig );
+    CleanupStack::PopAndDestroy( &lbt );
+    CleanupStack::PopAndDestroy( &lbtserver );
+    delete wait;
+    
+    return KErrNone; 
+  
+    
+    }
+    
+  //Retrieving trigger Informations when subsession not opened
+    TInt CFiringofStartupTriggerAndListTrigger::TCLBTFW076_testL( CStifItemParser& /* aItem */ )
+    {
+// _LIT( KSimulationFile,"c:\\system\\data\\simu_move2.sps" );
+
+ 	 RLbtServer lbtserver;
+ 	 RLbt lbt;
+ 	 
+ 	 User::LeaveIfError( lbtserver.Connect() );
+     CleanupClosePushL( lbtserver );
+ 	
+    
+    CLbtTriggerInfo *Triginfo = CLbtTriggerInfo::NewL();
+    TLbtTriggerId trigId=1;
+    TestModuleIf().SetExitReason( CTestModuleIf::EPanic, 2); 
+    Triginfo = lbt.GetTriggerLC(trigId);
+    
+   
+    CleanupStack::PopAndDestroy( &lbt );
+    CleanupStack::PopAndDestroy( &lbtserver );
+  
+    
+    return KErrNone; 
+      
+    }
+    
+    
+   //Retrieving Informations when trigger not found
+    TInt CFiringofStartupTriggerAndListTrigger::TCLBTFW077_testL( CStifItemParser& /* aItem */ )
+    {
+// _LIT( KSimulationFile,"c:\\system\\data\\simu_move2.sps" );
+
+ 	 RLbtServer lbtserver;
+ 	 RLbt lbt;
+ 	 
+ 	 User::LeaveIfError( lbtserver.Connect() );
+     CleanupClosePushL( lbtserver );
+ 	 User::LeaveIfError( lbt.Open( lbtserver ) );
+ 	 CleanupClosePushL( lbt );
+ 
+    
+    CLbtTriggerInfo *Triginfo = CLbtTriggerInfo::NewL();
+    
+    TLbtTriggerId trigId=99999;
+    //TestModuleIf().SetExitReason( CTestModuleIf::EPanic, -1); 
+    TRAPD(error, lbt.GetTriggerLC(trigId);CleanupStack::PopAndDestroy(); );
+    CleanupStack::PopAndDestroy( &lbt );
+    CleanupStack::PopAndDestroy( &lbtserver );
+    if(error==KErrNotFound)
+    {
+     
+   // CleanupStack::PopAndDestroy( 1 );//listoptions
+   
+      
+    return KErrNone; 
+    }
+    else
+    {
+    return -99;	
+    }
+      
+    }
+    
+  //Retrieving Informations when trigger not owned by the client
+    TInt CFiringofStartupTriggerAndListTrigger::TCLBTFW078_testL( CStifItemParser& /* aItem */ )
+    {
+ 
+// 	_LIT( KSimulationFile,"c:\\system\\data\\simu_move2.sps" );
+
+ 	 RLbtServer lbtserver;
+ 	 RLbt lbt;
+ 	 
+ 	 User::LeaveIfError( lbtserver.Connect() );
+     CleanupClosePushL( lbtserver );
+ 	 User::LeaveIfError( lbt.Open( lbtserver ) );
+ 	 CleanupClosePushL( lbt );
+     CLbtTriggerInfo *Triginfo = CLbtTriggerInfo::NewL();
+    _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);
+	}	
+    TInt triggerId=0;
+    RProperty iProperty;
+    User::LeaveIfError(iProperty.Get(
+        KPSUidTriggerIdInfo, 
+        KLbttesttriggerid, 
+        triggerId));
+    
+    TRAPD(error, lbt.GetTriggerLC(triggerId); CleanupStack::PopAndDestroy(  ););
+    CleanupStack::PopAndDestroy( &lbt );
+    CleanupStack::PopAndDestroy( &lbtserver );
+    if(error==KErrNotFound)
+    {
+     
+   // CleanupStack::PopAndDestroy( 1 );//listoptions
+    
+      
+    return KErrNone; 
+    }
+    else
+    {
+    return -99;	
+    }
+      
+      
+    }
+    
+ //Listing all the triggers owned by the client   
+   
+ TInt CFiringofStartupTriggerAndListTrigger::TCLBTFW079_testL( CStifItemParser& /* aItem */ )
+    {
+    RLbtServer lbtserver;
+    RLbt lbt;
+    iLog->Log(_L("Before Connect"));
+    User::LeaveIfError( lbtserver.Connect() );
+    CleanupClosePushL( lbtserver );
+    iLog->Log(_L("Before Open"));
+    User::LeaveIfError( lbt.Open( lbtserver ) );
+    CleanupClosePushL( lbt );
+    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
+      //Construct a startup trigger
+    CLbtStartupTrigger* trig = CLbtStartupTrigger::NewL();
+    
+    //Push to cleanup stack
+  //  CleanupStack::PushL( trig );
+    
+    // Set Name
+    trig->SetNameL(_L("Trigger1"));
+    _LIT( KMyTriggerHandlingProcessName, "TrigHandlingProcess.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);
+    
+    CLbtGeoCircle* circle=CLbtGeoCircle::NewL(coordinate,1000);
+    CleanupStack::PushL( circle );
+    
+    TUid aManagerUi = TUid::Uid(0x87654321);     
+    // 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;
+     trig->SetManagerUi(aManagerUi);   
+        
+    CTriggerFireObserver* notifier= CTriggerFireObserver::NewL( lbt,coordinate );
+    CleanupStack::PushL( notifier );
+    
+    CActiveSchedulerWait* wait=new(ELeave)CActiveSchedulerWait;
+        
+    notifier->CreateTriggers( lbt,*trig,trigId,EFalse,wait );
+    wait->Start( );
+    
+      
+    RPointerArray < CLbtTriggerInfo > trigInfoList;
+    iLog->Log(_L("Before GetTriggersL"));
+    lbt.GetTriggersL(trigInfoList);
+    iLog->Log(_L("After GetTriggersL"));
+    CleanupStack::PopAndDestroy(notifier);
+    CleanupStack::PopAndDestroy(&lbt);
+    CleanupStack::PopAndDestroy(&lbtserver);
+    //Do something with the trigger list
+   
+    TInt count = trigInfoList.Count();
+    for ( TInt i = 0; i < count; i++ )
+    {
+    	CLbtTriggerEntry *TrigEntry =trigInfoList[i]->TriggerEntry();
+    	if(triggerId==(TrigEntry->Id())&& trigId != (TrigEntry->Id()))
+    	{
+    		return -99;
+    	}
+    }
+    
+    //free memory
+    for ( TInt i = 0; i < count; i++ )
+        {
+        delete trigInfoList[i];
+        }
+    trigInfoList.Close();
+	
+    return KErrNone;  
+    }
+    
+   //List  triggers based on attribute filter  
+     TInt CFiringofStartupTriggerAndListTrigger::TCLBTFW080_testL( CStifItemParser& /* aItem */ )
+    {
+    RLbtServer lbtserver;
+    RLbt lbt;
+    User::LeaveIfError( lbtserver.Connect() );
+    CleanupClosePushL( lbtserver );
+    User::LeaveIfError( lbt.Open( lbtserver ) );
+    CleanupClosePushL( lbt );
+ 	 
+     	  //Construct a session trigger
+   CLbtSessionTrigger* trig = CLbtSessionTrigger::NewL();
+    
+    //Push to cleanup stack
+    CleanupStack::PushL( trig );
+    
+    // Set Name
+    trig->SetNameL(_L("Trigger1"));
+    
+    // set condition
+    
+    TCoordinate coordinate(62.5285,23.9385);
+    
+    CLbtGeoCircle* circle=CLbtGeoCircle::NewL(coordinate,1000);
+    CleanupStack::PushL( circle );
+    
+    TUid aManagerUi = TUid::Uid(0x87654321);     
+    // 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;
+     trig->SetManagerUi(aManagerUi);   
+    //Set Requestor
+ 	CRequestorBase::TRequestorType ReqType=CRequestorBase::ERequestorUnknown;
+	CRequestorBase::_TRequestorFormat ReqFormat=CRequestorBase::EFormatUnknown;
+	TBuf<KLbtMaxNameLength> ReqData=_L("");
+	trig->SetRequestorL(ReqType,ReqFormat,ReqData);      
+    CTriggerFireObserver* notifier= CTriggerFireObserver::NewL( lbt,coordinate );
+    CleanupStack::PushL( notifier );
+    
+    CActiveSchedulerWait* wait=new(ELeave)CActiveSchedulerWait;
+        
+    notifier->CreateTriggers( lbt,*trig,trigId,EFalse,wait );
+    wait->Start( );
+    RPointerArray < CLbtTriggerInfo > trigInfoList;
+    
+    User::After(5000000);
+    //Construct list options
+    CLbtListTriggerOptions* listOptions = CLbtListTriggerOptions::NewL();
+    CleanupStack::PushL( listOptions );
+    
+    //Construct an attribute filter
+    CLbtTriggerFilterByAttribute* attribFilter = 
+    CLbtTriggerFilterByAttribute::NewL();
+    CleanupStack::PushL( attribFilter );
+    attribFilter->AddTriggerStateL( CLbtTriggerEntry::EStateEnabled );
+    attribFilter->AddTriggerTypeL( CLbtTriggerEntry::ETypeSession );
+    listOptions->SetFilter( attribFilter ); 
+    
+    CleanupStack::Pop( attribFilter );   
+    
+    
+    lbt.GetTriggersL(trigInfoList,listOptions );    
+       
+	//CleanupStack::PopAndDestroy(4, &lbtserver);
+
+    //Do something with the trigger list
+    TInt count = trigInfoList.Count();
+    for ( TInt i = 0; i < count; i++ )
+    {
+    	CLbtTriggerEntry *TrigEntry =trigInfoList[i]->TriggerEntry();
+        //Check Name of the trigger
+    TDesC Name2 =TrigEntry->Name();  
+     if(Name2==KNullDesC) 
+    {
+    	return -99;
+    }
+    //Check State of the trigger  
+    CLbtTriggerEntry::TLbtTriggerState State2 = TrigEntry->State() ; 
+    if(State2 !=CLbtTriggerEntry::EStateEnabled)
+    {
+    	return -99;
+    } 
+     //Check type of the trigger
+    TInt Type2 = TrigEntry ->Type();
+    if(Type2 !=CLbtTriggerEntry::ETypeSession)
+    {
+    	return -99;
+    }
+    //Check condition
+/*		CLbtTriggerConditionArea* Condition2 = static_cast <CLbtTriggerConditionArea*>(TrigEntry->GetCondition());
+	CLbtTriggerConditionArea::TDirection direction;
+	direction = Condition2->Direction();
+	if(Condition2->TriggerArea()!=NULL) 
+	{
+		return -99;
+	}
+	if(Condition2->Direction()!=0)
+	{
+		return -99;
+	}
+		//Check requestors 
+    RRequestorStack   aRequestors,aRequestors2 ;
+    TrigEntry->GetRequestorsL(aRequestors2);
+   // trig->GetRequestorsL(aRequestors);
+    for(TInt i=0;i<aRequestors2.Count();i++)
+    {
+    	CRequestor *requestor = aRequestors2[i];
+    	if(requestor->RequestorType()!=NULL)
+    	{
+    		return -99;
+    	}
+    	if(requestor->RequestorData()!=KNullDesC)
+    	{
+    		return -99;
+    	}
+    	else if(requestor->RequestorFormat()!=NULL)
+    	{
+    		return -99;
+    	}
+    
+    }
+    
+    //Check ManagerUI
+    TUid Managerui2 = TrigEntry->ManagerUi();
+    if(Managerui2!=KNullUid)
+    {
+    	return -99;
+    }*/
+    }
+    
+        //free memory
+    for ( TInt i = 0; i < count; i++ )
+        {
+        delete trigInfoList[i];
+        }
+    trigInfoList.Close();
+		CleanupStack::PopAndDestroy( listOptions );
+    CleanupStack::PopAndDestroy( notifier );
+    CleanupStack::PopAndDestroy( trig );
+    CleanupStack::PopAndDestroy( &lbt );
+    CleanupStack::PopAndDestroy( &lbtserver );
+     return KErrNone; 
+    }
+
+ //List  triggers based on area filter
+    TInt CFiringofStartupTriggerAndListTrigger::TCLBTFW081_testL( CStifItemParser& /* aItem */ )
+    {
+    RLbtServer lbtserver;
+    RLbt lbt;
+    User::LeaveIfError( lbtserver.Connect() );
+    CleanupClosePushL( lbtserver );
+    User::LeaveIfError( lbt.Open( lbtserver ) );
+    CleanupClosePushL( lbt );
+ 	 
+    
+    
+    	  //Construct a session trigger
+    CLbtSessionTrigger* trig = CLbtSessionTrigger::NewL();
+    
+    //Push to cleanup stack
+    CleanupStack::PushL( trig );
+    
+    // Set Name
+    trig->SetNameL(_L("Trigger1"));
+    
+    // set condition
+    
+    TCoordinate coordinate1(62.5285,23.9385);
+    
+    CLbtGeoCircle* circle=CLbtGeoCircle::NewL(coordinate1,1000);
+    CleanupStack::PushL( circle );
+    
+    TUid aManagerUi = TUid::Uid(0x87654321);     
+    // 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;
+     trig->SetManagerUi(aManagerUi);   
+     //Set Requestor
+ 	CRequestorBase::TRequestorType ReqType=CRequestorBase::ERequestorUnknown;
+	CRequestorBase::_TRequestorFormat ReqFormat=CRequestorBase::EFormatUnknown;
+	TBuf<KLbtMaxNameLength> ReqData=_L("");
+	trig->SetRequestorL(ReqType,ReqFormat,ReqData);     
+    CTriggerFireObserver* notifier= CTriggerFireObserver::NewL( lbt,coordinate1 );
+    CleanupStack::PushL( notifier );
+    
+    CActiveSchedulerWait* wait=new(ELeave)CActiveSchedulerWait;
+        
+    notifier->CreateTriggers( lbt,*trig,trigId,EFalse,wait );
+    wait->Start( );
+    TCoordinate coordinate2(10,20);
+    CLbtGeoCircle* circle2=CLbtGeoCircle::NewL(coordinate2,1000);
+    CLbtTriggerConditionArea* condition2=CLbtTriggerConditionArea::NewL(
+    		circle2,
+            CLbtTriggerConditionArea::EFireOnEnter);
+    
+    trig->SetCondition(condition2); // ownership transferred to object
+    
+    notifier->CreateTriggers( lbt,*trig,trigId,EFalse,wait );
+    wait->Start( );
+    // User::After(5000000);
+    RPointerArray < CLbtTriggerInfo > trigInfoList;
+    
+    
+    //Construct list options
+    CLbtListTriggerOptions* listOptions = CLbtListTriggerOptions::NewL();
+    CleanupStack::PushL( listOptions );
+    //Construct an area filter
+    CLbtTriggerFilterByArea* areaFilter = 
+        CLbtTriggerFilterByArea::NewL();
+    CleanupStack::PushL( areaFilter );
+    CLbtGeoCircle* area = CLbtGeoCircle::NewL( 
+        TCoordinate( 62.5285,23.9385,0 ),
+        1000 );
+    areaFilter->SetArea( area ); 
+    
+     listOptions->SetFilter( areaFilter ); 
+     
+     CleanupStack::Pop( areaFilter ); 
+     
+     lbt.GetTriggersL(trigInfoList,listOptions );
+        
+    CleanupStack::PopAndDestroy( listOptions );
+    TInt count = trigInfoList.Count();
+   for ( TInt i = 0; i < count; i++ )
+    {
+    	CLbtTriggerEntry *TrigEntry =trigInfoList[i]->TriggerEntry();
+   //Check area of the trigger
+	CLbtTriggerConditionArea* Condition2 = static_cast <CLbtTriggerConditionArea*>(TrigEntry->GetCondition());
+
+	CLbtGeoAreaBase* area = Condition2->TriggerArea();
+	if(area ->Type()!=CLbtGeoAreaBase::ECircle )
+	{
+		CleanupStack::PopAndDestroy( notifier );
+    CleanupStack::PopAndDestroy( trig );
+    CleanupStack::PopAndDestroy( &lbt );
+    CleanupStack::PopAndDestroy( &lbtserver );
+		return -99;
+	}
+	
+	CLbtGeoCircle* circle3 = static_cast <CLbtGeoCircle*>(area);
+
+	TCoordinate center2 = circle3->Center();
+	TReal32 distance;
+	center2.Distance(TCoordinate( 62.5285,23.9385,0 ),distance);
+	if(distance>=1000)
+	{
+		CleanupStack::PopAndDestroy( notifier );
+    CleanupStack::PopAndDestroy( trig );
+    CleanupStack::PopAndDestroy( &lbt );
+    CleanupStack::PopAndDestroy( &lbtserver );
+		return -99;
+	}
+	TReal radius = circle3->Radius();
+	/*if(radius != 1000)
+	{
+		return -99;
+	}*/
+    
+    }
+       
+    //free memory
+    for ( TInt i = 0; i < count; i++ )
+        {
+        delete trigInfoList[i];
+        }
+    trigInfoList.Close();
+    CleanupStack::PopAndDestroy( notifier );
+    CleanupStack::PopAndDestroy( trig );
+    CleanupStack::PopAndDestroy( &lbt );
+    CleanupStack::PopAndDestroy( &lbtserver );
+	return KErrNone;
+      
+    }
+    
+ //List  triggers based on composite filter
+  
+     TInt CFiringofStartupTriggerAndListTrigger::TCLBTFW082_testL( CStifItemParser& /* aItem */ )
+    {
+    RLbtServer lbtserver;
+    RLbt lbt;
+    User::LeaveIfError( lbtserver.Connect() );
+    CleanupClosePushL( lbtserver );
+    User::LeaveIfError( lbt.Open( lbtserver ) );
+    CleanupClosePushL( lbt );
+ 	 
+     	  //Construct a session trigger
+    CLbtSessionTrigger* trig = CLbtSessionTrigger::NewL();
+    
+    //Push to cleanup stack
+    CleanupStack::PushL( trig );
+    
+    // Set Name
+    trig->SetNameL(_L("Trigger1"));
+    
+    // set condition
+    
+    TCoordinate coordinate(62.5285,23.9385);
+    
+    CLbtGeoCircle* circle=CLbtGeoCircle::NewL(coordinate,1000);
+    CleanupStack::PushL( circle );
+    
+    TUid aManagerUi = TUid::Uid(0x87654321);     
+    // ownership of circle object transferred to the condition object
+    CLbtTriggerConditionArea* condition=CLbtTriggerConditionArea::NewL(
+                                                circle,
+                                                CLbtTriggerConditionArea::EFireOnEnter);
+        
+    CleanupStack::Pop( circle );
+    //Set Requestor
+ 	CRequestorBase::TRequestorType ReqType=CRequestorBase::ERequestorUnknown;
+	CRequestorBase::_TRequestorFormat ReqFormat=CRequestorBase::EFormatUnknown;
+	TBuf<KLbtMaxNameLength> ReqData=_L("");
+	trig->SetRequestorL(ReqType,ReqFormat,ReqData);  
+    trig->SetCondition(condition); // ownership transferred to object
+
+    TLbtTriggerId trigId;
+     trig->SetManagerUi(aManagerUi);   
+        
+    CTriggerFireObserver* notifier= CTriggerFireObserver::NewL( lbt,coordinate );
+    CleanupStack::PushL( notifier );
+    
+    CActiveSchedulerWait* wait=new(ELeave)CActiveSchedulerWait;
+        
+    notifier->CreateTriggers( lbt,*trig,trigId,EFalse,wait );
+    wait->Start( );
+    RPointerArray < CLbtTriggerInfo > trigInfoList;
+    
+     User::After(5000000);
+    //Construct list options
+    CLbtListTriggerOptions* listOptions = CLbtListTriggerOptions::NewL();
+    CleanupStack::PushL( listOptions );
+   
+    
+     //Construct an attribute filter
+    CLbtTriggerFilterByAttribute* attribFilter = 
+    CLbtTriggerFilterByAttribute::NewL();
+    CleanupStack::PushL( attribFilter );
+    attribFilter->AddTriggerStateL( CLbtTriggerEntry::EStateEnabled );
+    attribFilter->AddTriggerTypeL( CLbtTriggerEntry::ETypeSession );
+        
+    //Construct an area filter
+    CLbtTriggerFilterByArea* areaFilter = 
+        CLbtTriggerFilterByArea::NewL();
+    CleanupStack::PushL( areaFilter );
+    CLbtGeoCircle* area = CLbtGeoCircle::NewL( 
+        TCoordinate( 61.5,24.3,0 ),
+        1000 );
+    areaFilter->SetArea( area ); 
+    
+    //Construct a composite filter
+    CLbtTriggerFilterComposite* compositeFilter = 
+        CLbtTriggerFilterComposite::NewL( 
+            CLbtTriggerFilterComposite::ECompositionTypeAnd );
+    
+    CleanupStack::PushL( compositeFilter );
+    
+    //Add filters to the list option object
+    compositeFilter->AddFilterL( areaFilter ); 
+    
+    
+    compositeFilter->AddFilterL( attribFilter ); 
+    
+    
+    listOptions->SetFilter( compositeFilter ); 
+    CleanupStack::Pop( compositeFilter );
+    CleanupStack::Pop( areaFilter ); 
+    CleanupStack::Pop( attribFilter );     
+    //Set retrieved fields
+    listOptions->SetRetrievedFields( 
+        CLbtTriggerEntry::EAttributeName | 
+        CLbtTriggerEntry::EAttributeCondition );
+    
+        
+    lbt.GetTriggersL(trigInfoList,listOptions );
+        
+    CleanupStack::PopAndDestroy( listOptions );
+    
+    //Do something with the trigger list
+    TInt count = trigInfoList.Count();
+    for ( TInt i = 0; i < count; i++ )
+    {
+    	CLbtTriggerEntry *TrigEntry =trigInfoList[i]->TriggerEntry();
+        //Check Name of the trigger
+    TDesC Name2 =TrigEntry->Name();  
+     if(Name2==KNullDesC) 
+    {
+    	return -99;
+    }
+    //Check State of the trigger  
+    CLbtTriggerEntry::TLbtTriggerState State2 = TrigEntry->State() ; 
+    if(State2 !=CLbtTriggerEntry::EStateEnabled)
+    {
+    	return -99;
+    } 
+     //Check type of the trigger
+    TInt Type2 = TrigEntry ->Type();
+    if(Type2 !=CLbtTriggerEntry::ETypeSession)
+    {
+    	return -99;
+    }
+    CLbtTriggerConditionArea* Condition2 = static_cast <CLbtTriggerConditionArea*>(TrigEntry->GetCondition());
+
+	CLbtGeoAreaBase* area = Condition2->TriggerArea();
+	if(area ->Type()!=CLbtGeoAreaBase::ECircle )
+	{
+		return -99;
+	}
+	
+	CLbtGeoCircle* circle2 = static_cast <CLbtGeoCircle*>(area);
+
+	TCoordinate center2 = circle2->Center();
+	TReal32 distance;
+	center2.Distance(TCoordinate( 62.5285,23.9385,0 ),distance);
+	if(distance!=0)
+	{
+		return -99;
+	}
+	TReal radius = circle2->Radius();
+	if(radius != 1000)
+	{
+		return -99;
+	}
+		//Check requestors 
+    RRequestorStack   aRequestors,aRequestors2 ;
+    TrigEntry->GetRequestorsL(aRequestors2);
+   // trig->GetRequestorsL(aRequestors);
+    for(TInt i=0;i<aRequestors2.Count();i++)
+    {
+    	CRequestor *requestor = aRequestors2[i];
+    	if(requestor->RequestorType()!=NULL)
+    	{
+    		return -99;
+    	}
+    	if(requestor->RequestorData()!=KNullDesC)
+    	{
+    		return -99;
+    	}
+    	else if(requestor->RequestorFormat()!=NULL)
+    	{
+    		return -99;
+    	}
+    
+    }
+    
+    //Check ManagerUI
+    TUid Managerui2 = TrigEntry->ManagerUi();
+    if(Managerui2!=KNullUid)
+    {
+    	return -99;
+    }
+    }
+    
+    //free memory
+    for ( TInt i = 0; i < count; i++ )
+        {
+        delete trigInfoList[i];
+        }
+    trigInfoList.Close();
+    CleanupStack::PopAndDestroy( notifier );
+    CleanupStack::PopAndDestroy( trig );
+    CleanupStack::PopAndDestroy( &lbt );
+    CleanupStack::PopAndDestroy( &lbtserver );
+	return KErrNone;
+      
+    }
+    
+    //Sorted listing of triggers based on Name in ascending order
+    TInt CFiringofStartupTriggerAndListTrigger::TCLBTFW083_testL( CStifItemParser& /* aItem */ )
+    {
+    RLbtServer lbtserver;
+    RLbt lbt;
+    User::LeaveIfError( lbtserver.Connect() );
+    CleanupClosePushL( lbtserver );
+    User::LeaveIfError( lbt.Open( lbtserver ) );
+    CleanupClosePushL( lbt );
+ 	 
+    
+    	  //Construct a session trigger Entry
+    CLbtSessionTrigger* trig = CLbtSessionTrigger::NewL();
+    
+    //Push to cleanup stack
+    CleanupStack::PushL( trig );
+    
+    // Set Name
+    trig->SetNameL(_L("bac"));
+//     _LIT( KMyTriggerHandlingProcessName, "About.exe" );
+    
+   // TSecureId secureid;
+  //  trig->SetProcessId(KMyTriggerHandlingProcessName,secureid);
+     
+    // set condition
+    
+    TCoordinate coordinate(62.5285,23.9385);
+    
+    CLbtGeoCircle* circle=CLbtGeoCircle::NewL(coordinate,1000);
+    CleanupStack::PushL( circle );
+    
+    TUid aManagerUi = TUid::Uid(0x87654321);     
+    // ownership of circle object transferred to the condition object
+    CLbtTriggerConditionArea* condition=CLbtTriggerConditionArea::NewL(
+                                                circle,
+                                                CLbtTriggerConditionArea::EFireOnEnter);
+        
+    CleanupStack::Pop( circle );
+    //Set Requestor
+ 	CRequestorBase::TRequestorType ReqType=CRequestorBase::ERequestorUnknown;
+	CRequestorBase::_TRequestorFormat ReqFormat=CRequestorBase::EFormatUnknown;
+	TBuf<KLbtMaxNameLength> ReqData=_L("");
+	trig->SetRequestorL(ReqType,ReqFormat,ReqData);  
+    trig->SetCondition(condition); // ownership transferred to object
+
+    TLbtTriggerId trigId;
+     trig->SetManagerUi(aManagerUi);   
+        
+    CTriggerFireObserver* notifier= CTriggerFireObserver::NewL( lbt,coordinate );
+    CleanupStack::PushL( notifier );
+    
+    CActiveSchedulerWait* wait=new(ELeave)CActiveSchedulerWait;
+        
+    notifier->CreateTriggers( lbt,*trig,trigId,EFalse,wait );
+    wait->Start( );
+    
+    trig->SetNameL(_L("abc"));
+    notifier->CreateTriggers( lbt,*trig,trigId,EFalse,wait );
+    wait->Start( );
+    
+    RPointerArray < CLbtTriggerInfo > trigInfoList;
+    
+    
+    //Construct list options
+    CLbtListTriggerOptions* listOptions = CLbtListTriggerOptions::NewL();
+    CleanupStack::PushL( listOptions );
+    
+       
+    listOptions->SetSortingOption(CLbtListTriggerOptions::ELbtTriggerNameAscending );
+    
+    
+    lbt.GetTriggersL(trigInfoList,listOptions );
+        
+    CleanupStack::PopAndDestroy( listOptions );
+    
+    //Do something with the trigger list
+    
+    
+    TInt count = trigInfoList.Count();
+    	TBuf<256> currname;
+    	TBuf<256> prevname;
+   // TDesC prevname=KNullDesC;
+     for ( TInt i = 0; i < count; i++ )
+     {
+     	CLbtTriggerEntry *TrigEntry = trigInfoList[i]->TriggerEntry();
+    
+    	TLbtTriggerDynamicInfo * dyninfo = trigInfoList[i] -> DynInfo() ;
+    
+        currname =TrigEntry->Name(); 
+    	if(i==0) 
+    	{
+    		prevname = currname;
+    	}
+	    if(currname< prevname) 
+	    {
+	    	return -99;
+	    }
+	    else
+	    {
+	    	prevname = currname;
+	    }
+    
+     }
+        
+    //free memory
+    for ( TInt i = 0; i < count; i++ )
+        {
+        delete trigInfoList[i];
+        }
+    trigInfoList.Close();
+    CleanupStack::PopAndDestroy( notifier);
+    CleanupStack::PopAndDestroy( trig );
+    CleanupStack::PopAndDestroy( &lbt );
+    CleanupStack::PopAndDestroy( &lbtserver );
+	return KErrNone;
+      
+    }
+    
+   
+    //Sorted listing of triggers based on Distance to latest location
+    TInt CFiringofStartupTriggerAndListTrigger::TCLBTFW084_testL( CStifItemParser& /* aItem */ )
+    {
+    RLbtServer lbtserver;
+    RLbt lbt;
+    User::LeaveIfError( lbtserver.Connect() );
+    CleanupClosePushL( lbtserver );
+    User::LeaveIfError( lbt.Open( lbtserver ) );
+    CleanupClosePushL( lbt );
+ 	 
+    
+    	  //Construct a session trigger Entry
+    CLbtSessionTrigger* trig = CLbtSessionTrigger::NewL();
+    
+    //Push to cleanup stack
+    CleanupStack::PushL( trig );
+    
+    // Set Name
+    trig->SetNameL(_L("abc"));
+//     _LIT( KMyTriggerHandlingProcessName, "About.exe" );
+    
+    //TSecureId secureid;
+    //trig->SetProcessId(KMyTriggerHandlingProcessName,secureid);
+     
+    // set condition
+    
+    TCoordinate coordinate(62.5285,23.9385);
+    
+    CLbtGeoCircle* circle=CLbtGeoCircle::NewL(coordinate,1000);
+    CleanupStack::PushL( circle );
+    
+    TUid aManagerUi = TUid::Uid(0x87654321);     
+    // 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;
+     trig->SetManagerUi(aManagerUi);   
+     //Set Requestor
+ 	CRequestorBase::TRequestorType ReqType=CRequestorBase::ERequestorUnknown;
+	CRequestorBase::_TRequestorFormat ReqFormat=CRequestorBase::EFormatUnknown;
+	TBuf<KLbtMaxNameLength> ReqData=_L("");
+	trig->SetRequestorL(ReqType,ReqFormat,ReqData);     
+    CTriggerFireObserver* notifier= CTriggerFireObserver::NewL( lbt,coordinate );
+    CleanupStack::PushL( notifier );
+    
+    CActiveSchedulerWait* wait=new(ELeave)CActiveSchedulerWait;
+        
+    notifier->CreateTriggers( lbt,*trig,trigId,EFalse,wait );
+    wait->Start( );
+    
+   	coordinate.Move(90,50000);
+   	CLbtGeoCircle* circle2=CLbtGeoCircle::NewL(coordinate,1000);
+   //	circle->SetCenter(coordinate);
+   	CLbtTriggerConditionArea* condition2=CLbtTriggerConditionArea::NewL(
+                                                circle2,
+                                                CLbtTriggerConditionArea::EFireOnEnter);
+    	
+   	trig->SetCondition(condition2);
+    notifier->CreateTriggers( lbt,*trig,trigId,EFalse,wait );
+    wait->Start( );
+    
+    RPointerArray < CLbtTriggerInfo > trigInfoList;
+    
+    
+    //Construct list options
+    CLbtListTriggerOptions* listOptions = CLbtListTriggerOptions::NewL();
+    CleanupStack::PushL( listOptions );
+    
+       
+    listOptions->SetSortingOption(CLbtListTriggerOptions::ELbtDistanceToLatestLocationAscending );
+    
+    
+    lbt.GetTriggersL(trigInfoList,listOptions );
+        
+    CleanupStack::PopAndDestroy( listOptions );
+    
+    //Do something with the trigger list
+    
+    TReal prevdistance=0;
+    TInt count = trigInfoList.Count();
+    for ( TInt i = 0; i < count; i++ )
+     {
+     	CLbtTriggerEntry *TrigEntry = trigInfoList[i]->TriggerEntry();
+    
+    	TLbtTriggerDynamicInfo * dyninfo = trigInfoList[i] -> DynInfo() ;
+    	
+    	TReal currdistance =dyninfo->iDistanceToLatestLocation; 
+    	if(i==0) 
+    	{
+    		prevdistance = currdistance;
+    	}
+	    if(currdistance<prevdistance) 
+	    {
+	    	return -99;
+	    }
+	    else
+	    {
+	    	prevdistance = currdistance;
+	    }
+    
+     }
+    //free memory
+    for ( TInt i = 0; i < count; i++ )
+        {
+        delete trigInfoList[i];
+        }
+    trigInfoList.Close();
+    CleanupStack::PopAndDestroy( notifier );
+    CleanupStack::PopAndDestroy( trig);
+	CleanupStack::PopAndDestroy( &lbt );
+    CleanupStack::PopAndDestroy( &lbtserver );
+    return KErrNone;  
+    }
+    
+    //listing of triggers with only partial attributes filled in the result
+    
+    TInt CFiringofStartupTriggerAndListTrigger::TCLBTFW085_testL( CStifItemParser& /* aItem */ )
+    {
+    RLbtServer lbtserver;
+    RLbt lbt;
+    User::LeaveIfError( lbtserver.Connect() );
+    CleanupClosePushL( lbtserver );
+    User::LeaveIfError( lbt.Open( lbtserver ) );
+    CleanupClosePushL( lbt );
+ 	 
+     	  //Construct a session trigger
+    CLbtSessionTrigger* trig = CLbtSessionTrigger::NewL();
+    
+    //Push to cleanup stack
+    CleanupStack::PushL( trig );
+    
+    // Set Name
+    trig->SetNameL(_L("Trigger1"));
+    
+    // set condition
+    
+    TCoordinate coordinate(62.5285,23.9385);
+    
+    CLbtGeoCircle* circle=CLbtGeoCircle::NewL(coordinate,1000);
+    CleanupStack::PushL( circle );
+    
+    TUid aManagerUi = TUid::Uid(0x87654321);     
+    // 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
+	trig->SetState(CLbtTriggerEntry::EStateDisabled);
+    TLbtTriggerId trigId;
+     trig->SetManagerUi(aManagerUi);   
+    //Set Requestor
+ 	CRequestorBase::TRequestorType ReqType=CRequestorBase::ERequestorUnknown;
+	CRequestorBase::_TRequestorFormat ReqFormat=CRequestorBase::EFormatUnknown;
+	TBuf<KLbtMaxNameLength> ReqData=_L("");
+	trig->SetRequestorL(ReqType,ReqFormat,ReqData);      
+    CTriggerFireObserver* notifier= CTriggerFireObserver::NewL( lbt,coordinate );
+    CleanupStack::PushL( notifier );
+    
+    CActiveSchedulerWait* wait=new(ELeave)CActiveSchedulerWait;
+        
+    notifier->CreateTriggers( lbt,*trig,trigId,EFalse,wait );
+    wait->Start( );
+    RPointerArray < CLbtTriggerInfo > trigInfoList;
+     User::After(5000000);
+    
+    //Construct list options
+    CLbtListTriggerOptions* listOptions = CLbtListTriggerOptions::NewL();
+    CleanupStack::PushL( listOptions );
+    
+       
+    listOptions->SetRetrievedFields( 
+        CLbtTriggerEntry::EAttributeName | 
+        CLbtTriggerEntry::EAttributeCondition );
+    
+    
+    
+    lbt.GetTriggersL(trigInfoList,listOptions );
+        
+    CleanupStack::PopAndDestroy( listOptions );
+    
+     TInt count = trigInfoList.Count();
+    for ( TInt i = 0; i < count; i++ )
+     {
+     	CLbtTriggerEntry *TrigEntry = trigInfoList[i]->TriggerEntry();
+    
+    	TLbtTriggerDynamicInfo * dyninfo = trigInfoList[i] -> DynInfo() ;
+    	
+    	 //Check Name of the trigger
+	    TDesC Name2 =TrigEntry->Name();  
+	     if((TrigEntry->Name())==KNullDesC) 
+	    {
+	    	return -99;
+	    }
+	    //Check State of the trigger  
+	    CLbtTriggerEntry::TLbtTriggerState State2 = TrigEntry->State() ; 
+	    if(State2 !=CLbtTriggerEntry::EStateEnabled)
+	    {
+	    	return -99;
+	    } 
+	     //Check type of the trigger
+	   /* TInt Type2 = TrigEntry ->Type();
+	    if(Type2 != NULL)
+	    {
+	    	return -99;
+	    }*/
+	    //Check condition
+			CLbtTriggerConditionArea* Condition2 = static_cast <CLbtTriggerConditionArea*>(TrigEntry->GetCondition());
+		//CLbtTriggerConditionArea::TDirection direction;
+		CLbtTriggerConditionArea::TDirection direction = Condition2->Direction();
+		if(Condition2==NULL)
+		{
+			return -99;
+		}
+			//Check requestors 
+	    RRequestorStack   aRequestors,aRequestors2 ;
+	    TrigEntry->GetRequestorsL(aRequestors2);
+	   // trig->GetRequestorsL(aRequestors);
+	    for(TInt i=0;i<aRequestors2.Count();i++)
+	    {
+	    	CRequestor *requestor = aRequestors2[i];
+	    	if(requestor->RequestorType()!=NULL)
+	    	{
+	    		return -99;
+	    	}
+	    	if(requestor->RequestorData()!=KNullDesC)
+	    	{
+	    		return -99;
+	    	}
+	    	else if(requestor->RequestorFormat()!=NULL)
+	    	{
+	    		return -99;
+	    	}
+	    
+	    }
+	  
+	    //Check ManagerUI
+	    TUid Managerui2 = TrigEntry->ManagerUi();
+	    if(Managerui2!=KNullUid)
+	    {
+	    	return -99;
+	    }
+	    //Check validity
+		TLbtTriggerDynamicInfo::TLbtTriggerValidity validity;
+	   validity= dyninfo -> iValidity;
+	   if(validity!=TLbtTriggerDynamicInfo::EValid)
+	   {
+	   	return -99;
+	   }
+	   //Check Activity status
+	//	TLbtTriggerDynamicInfo::TLbtTriggerActivityStatus currstatus;
+	//	currstatus = dyninfo -> iActivityStatus;
+	    /*if(currstatus!=NULL)
+	    {
+	    	return -99;
+	    }*/
+	    
+     }
+      
+   
+    //free memory
+    for ( TInt i = 0; i < count; i++ )
+        {
+        delete trigInfoList[i];
+        }
+    trigInfoList.Close();
+    	CleanupStack::PopAndDestroy(2);
+	CleanupStack::PopAndDestroy( &lbt );
+    CleanupStack::PopAndDestroy( &lbtserver );
+    return KErrNone;  
+    }
+
+ //Listing of all the triggers owned by the client Asynchronously
+TInt CFiringofStartupTriggerAndListTrigger::TCLBTFW086_testL( CStifItemParser& /* aItem */ )
+    {
+    RLbtServer lbtserver;
+    RLbt lbt;
+    User::LeaveIfError( lbtserver.Connect() );
+    CleanupClosePushL( lbtserver );
+    User::LeaveIfError( lbt.Open( lbtserver ) );
+    CleanupClosePushL( lbt );
+ 	lbt.DeleteTriggersL();	 
+     	  //Construct a session trigger
+    CLbtSessionTrigger* trig = CLbtSessionTrigger::NewL();
+    
+    //Push to cleanup stack
+    CleanupStack::PushL( trig );
+    
+    // Set Name
+    trig->SetNameL(_L("Trigger1"));
+    
+    // set condition
+    
+    TCoordinate coordinate(62.5285,23.9385);
+    
+    CLbtGeoCircle* circle=CLbtGeoCircle::NewL(coordinate,1000);
+    CleanupStack::PushL( circle );
+    
+    TUid aManagerUi = TUid::Uid(0x87654321);     
+    // 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
+	trig->SetState(CLbtTriggerEntry::EStateDisabled);
+    TLbtTriggerId trigId;
+     trig->SetManagerUi(aManagerUi);   
+    //Set Requestor
+ 	CRequestorBase::TRequestorType ReqType=CRequestorBase::ERequestorUnknown;
+	CRequestorBase::_TRequestorFormat ReqFormat=CRequestorBase::EFormatUnknown;
+	TBuf<KLbtMaxNameLength> ReqData=_L("");
+	trig->SetRequestorL(ReqType,ReqFormat,ReqData);  
+      _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);
+	}
+		
+    TInt triggerId=0;
+    RProperty iProperty;
+    User::LeaveIfError(iProperty.Get(
+        KPSUidTriggerIdInfo, 
+        KLbttesttriggerid, 
+        triggerId));
+     User::After(5000000);
+    RPointerArray < CLbtTriggerInfo > trigInfoList;
+    
+     CTriggerFireObserver* notifier= CTriggerFireObserver::NewL( lbt,coordinate );
+    CleanupStack::PushL( notifier );
+    
+    
+    CActiveSchedulerWait* wait=new(ELeave)CActiveSchedulerWait;
+     notifier->CreateTriggers( lbt,*trig,trigId,EFalse,wait );
+    wait->Start( );
+    User::After(500000);
+    notifier->GetTriggersList(lbt,trigInfoList,wait);
+    wait->Start();
+    //Do something with the trigger list
+    
+    
+    TInt count = trigInfoList.Count();
+     for ( TInt i = 0; i < count; i++ )
+     {
+     	CLbtTriggerEntry *TrigEntry = trigInfoList[i]->TriggerEntry();
+    
+    	TLbtTriggerDynamicInfo * dyninfo = trigInfoList[i] -> DynInfo() ;
+    	if(triggerId==(TrigEntry->Id()))
+    	{
+    		return -99;
+    	}
+     }
+    
+    //free memory
+    for ( TInt i = 0; i < count; i++ )
+        {
+        delete trigInfoList[i];
+        }
+    trigInfoList.Close();
+    
+     CleanupStack::PopAndDestroy( notifier );
+     CleanupStack::PopAndDestroy( trig );
+    CleanupStack::PopAndDestroy( &lbt );
+    CleanupStack::PopAndDestroy( &lbtserver );
+	return KErrNone;
+      
+    }
+    
+
+   
+    //Listing of triggers without opening the subsession
+   
+    TInt CFiringofStartupTriggerAndListTrigger::TCLBTFW087_testL( CStifItemParser& /* aItem */ )
+    {
+    RLbtServer lbtserver;
+    RLbt lbt;
+    User::LeaveIfError( lbtserver.Connect() );
+    CleanupClosePushL( lbtserver );
+    
+ 	 TCoordinate coordinate(65.5285,23.9385);
+    
+    RPointerArray < CLbtTriggerInfo > trigInfoList;
+    
+   TestModuleIf().SetExitReason( CTestModuleIf::EPanic, 2); 
+    lbt.GetTriggersL(trigInfoList);
+    
+    //Do something with the trigger list
+    
+    return KErrNone;     
+    }
+    
+    
+    
+    
+   
+  //Listing of all the trigger Ids owned by the client synchronously
+    TInt CFiringofStartupTriggerAndListTrigger::TCLBTFW088_testL( CStifItemParser& /* aItem */ )
+    {
+    RLbtServer lbtserver;
+    RLbt lbt;
+    User::LeaveIfError( lbtserver.Connect() );
+    CleanupClosePushL( lbtserver );
+    User::LeaveIfError( lbt.Open( lbtserver ) );
+    CleanupClosePushL( lbt );
+ 	  TRAP_IGNORE(lbt.DeleteTriggersL());
+       _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);
+	}
+	 User::After(5000000);	
+    TInt triggerId=0;
+    RProperty iProperty;
+    User::LeaveIfError(iProperty.Get(
+        KPSUidTriggerIdInfo, 
+        KLbttesttriggerid, 
+        triggerId));
+        
+    //create another trigger
+      //Construct a startup trigger
+    CLbtStartupTrigger* trig = CLbtStartupTrigger::NewL();
+    
+    //Push to cleanup stack
+  //  CleanupStack::PushL( trig );
+    
+    // Set Name
+    trig->SetNameL(_L("Trigger1"));
+    _LIT( KMyTriggerHandlingProcessName, "TrigHandlingProcess.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);
+    
+    CLbtGeoCircle* circle=CLbtGeoCircle::NewL(coordinate,1000);
+    CleanupStack::PushL( circle );
+    
+    TUid aManagerUi = TUid::Uid(0x87654321);     
+    // 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;
+     trig->SetManagerUi(aManagerUi);   
+        
+    CTriggerFireObserver* notifier= CTriggerFireObserver::NewL( lbt,coordinate );
+    CleanupStack::PushL( notifier );
+    
+    CActiveSchedulerWait* wait=new(ELeave)CActiveSchedulerWait;
+        
+    notifier->CreateTriggers( lbt,*trig,trigId,EFalse,wait );
+    wait->Start( );    
+    RArray< TLbtTriggerId>  aTriggerIdList;
+    
+    lbt.ListTriggerIdsL (aTriggerIdList);
+       
+    //Do something with the trigger list
+    
+    
+    TInt count = aTriggerIdList.Count();
+    
+    for ( TInt i = 0; i < count; i++ )
+     {
+       	if(triggerId==aTriggerIdList[i] && trigId != aTriggerIdList[i])
+    	{
+    		return -99;
+    	}
+     }
+    //free memory
+  /* for ( TInt i = 0; i < count; i++ )
+        {
+        delete aTriggerIdList;
+        }*/
+    aTriggerIdList.Close();
+    CleanupStack::PopAndDestroy( notifier );
+    CleanupStack::PopAndDestroy( &lbt );
+    CleanupStack::PopAndDestroy( &lbtserver );
+	return KErrNone;
+      
+    }
+    
+    //Listing of all the triggerIds owned by the client Asynchronously  
+    TInt CFiringofStartupTriggerAndListTrigger::TCLBTFW089_testL( CStifItemParser& /* aItem */ )
+    {
+    RLbtServer lbtserver;
+    RLbt lbt;
+    User::LeaveIfError( lbtserver.Connect() );
+    CleanupClosePushL( lbtserver );
+    User::LeaveIfError( lbt.Open( lbtserver ) );
+    CleanupClosePushL( lbt );
+ 	// TCoordinate coordinate(65.5285,23.9385);
+    	 
+    _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);
+	}
+	 User::After(5000000);	
+    TInt triggerId=0;
+    RProperty iProperty;
+    User::LeaveIfError(iProperty.Get(
+        KPSUidTriggerIdInfo, 
+        KLbttesttriggerid, 
+        triggerId));
+    RArray< TLbtTriggerId>  aTriggerIdList;
+    
+    TRAP_IGNORE(lbt.DeleteTriggersL());
+     //create another trigger
+      //Construct a startup trigger
+    CLbtStartupTrigger* trig = CLbtStartupTrigger::NewL();
+    
+    //Push to cleanup stack
+  //  CleanupStack::PushL( trig );
+    
+    // Set Name
+    trig->SetNameL(_L("Trigger1"));
+    _LIT( KMyTriggerHandlingProcessName, "TrigHandlingProcess.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);
+    
+    CLbtGeoCircle* circle=CLbtGeoCircle::NewL(coordinate,1000);
+    CleanupStack::PushL( circle );
+    
+    TUid aManagerUi = TUid::Uid(0x87654321);     
+    // 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;
+     trig->SetManagerUi(aManagerUi);   
+        
+    CTriggerFireObserver* notifier= CTriggerFireObserver::NewL( lbt,coordinate );
+    CleanupStack::PushL( notifier );
+    
+    CActiveSchedulerWait* wait=new(ELeave)CActiveSchedulerWait;
+        
+    notifier->CreateTriggers( lbt,*trig,trigId,EFalse,wait );
+    wait->Start( );    
+    notifier->ListTriggerIdsList(lbt,aTriggerIdList,wait);
+    wait->Start();
+    //Do something with the trigger list
+    
+    
+    
+    TInt count = aTriggerIdList.Count();
+    
+    for ( TInt i = 0; i < count; i++ )
+     {
+       	if(triggerId==aTriggerIdList[i] && trigId!=aTriggerIdList[i])
+    	{
+    		return -99;
+    	}
+     }
+    //free memory
+    /*for ( TInt i = 0; i < count; i++ )
+        {
+        delete aTriggerIdList[i];
+        }*/
+    aTriggerIdList.Close();
+     CleanupStack::PopAndDestroy( notifier );
+    CleanupStack::PopAndDestroy( &lbt );
+    CleanupStack::PopAndDestroy( &lbtserver );
+	return KErrNone;
+      
+    }
+    
+    //Getting trigger information incrementally using Iterator
+    
+    TInt CFiringofStartupTriggerAndListTrigger::TCLBTFW090_testL( CStifItemParser& /* aItem */ )
+    {
+    RLbtServer lbtserver;
+    RLbt lbt;
+    User::LeaveIfError( lbtserver.Connect() );
+    CleanupClosePushL( lbtserver );
+    User::LeaveIfError( lbt.Open( lbtserver ) );
+    CleanupClosePushL( lbt );
+    
+     //create another trigger
+      //Construct a startup trigger
+    CLbtStartupTrigger* trig = CLbtStartupTrigger::NewL();
+    
+    //Push to cleanup stack
+  //  CleanupStack::PushL( trig );
+    
+    // Set Name
+    trig->SetNameL(_L("Trigger1"));
+    _LIT( KMyTriggerHandlingProcessName, "TrigHandlingProcess.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);
+    
+    CLbtGeoCircle* circle=CLbtGeoCircle::NewL(coordinate,1000);
+    CleanupStack::PushL( circle );
+    
+    TUid aManagerUi = TUid::Uid(0x87654321);     
+    // 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;
+     trig->SetManagerUi(aManagerUi);   
+        
+    CTriggerFireObserver* notifier= CTriggerFireObserver::NewL( lbt,coordinate );
+    CleanupStack::PushL( notifier );
+    
+    CActiveSchedulerWait* wait=new(ELeave)CActiveSchedulerWait;
+        
+    notifier->CreateTriggers( lbt,*trig,trigId,EFalse,wait );
+    wait->Start( );    
+ 	    //First create iterator
+    lbt.CreateGetTriggerIteratorL();
+    
+    //Get triggers. Note, the loop will block 
+    //active schedular
+    CLbtTriggerInfo* trigInfo = lbt.GetNextTriggerLC(); 
+    while ( trigInfo != NULL )
+        {
+        CLbtTriggerEntry* TrigEntry = trigInfo->TriggerEntry();
+        TLbtTriggerDynamicInfo * dyninfo = trigInfo -> DynInfo() ;
+        CleanupStack::PushL( TrigEntry );
+        //do something with entry
+    	TDesC Name2 =TrigEntry->Name();  
+	     if(Name2==KNullDesC) 
+	    {
+	    	return -99;
+	    }
+	    //Check State of the trigger  
+	    CLbtTriggerEntry::TLbtTriggerState State2 = TrigEntry->State() ; 
+	    if(State2 ==NULL)
+	    {
+	    	return -99;
+	    } 
+	     //Check type of the trigger
+	    TInt Type2 = TrigEntry ->Type();
+	    if(Type2 == NULL)
+	    {
+	    	return -99;
+	    }
+	    //Check condition
+			CLbtTriggerConditionArea* Condition2 = static_cast <CLbtTriggerConditionArea*>(TrigEntry->GetCondition());
+		//CLbtTriggerConditionArea::TDirection direction;
+		CLbtTriggerConditionArea::TDirection direction = Condition2->Direction();
+		if(Condition2==NULL)
+		{
+			return -99;
+		}
+			//Check requestors 
+	    RRequestorStack   aRequestors,aRequestors2 ;
+	    TrigEntry->GetRequestorsL(aRequestors2);
+	   // trig->GetRequestorsL(aRequestors);
+	    for(TInt i=0;i<aRequestors2.Count();i++)
+	    {
+	    	CRequestor *requestor = aRequestors2[i];
+	    	if(requestor->RequestorType()!=NULL)
+	    	{
+	    		return -99;
+	    	}
+	    	if(requestor->RequestorData()!=KNullDesC)
+	    	{
+	    		return -99;
+	    	}
+	    	else if(requestor->RequestorFormat()!=NULL)
+	    	{
+	    		return -99;
+	    	}
+	    
+	    }
+	  
+	    //Check ManagerUI
+	    TUid Managerui2 = TrigEntry->ManagerUi();
+	   /* if(Managerui2!=KNullUid)
+	    {
+	    	return -99;
+	    }*/
+	    
+	     //Check validity
+		TLbtTriggerDynamicInfo::TLbtTriggerValidity validity;
+	   validity= dyninfo -> iValidity;
+	   if(validity!=TLbtTriggerDynamicInfo::EValid)
+	   {
+	   	return -99;
+	   }
+	   //Check Activity status
+	/*	TLbtTriggerDynamicInfo::TLbtTriggerActivityStatus currstatus;
+		currstatus = dyninfo -> iActivityStatus;
+	    if(currstatus==NULL)
+	    {
+	    	return -99;
+	    }*/
+        CleanupStack::Pop( TrigEntry );
+        CleanupStack::PopAndDestroy( trigInfo );
+        trigInfo = lbt.GetNextTriggerLC();
+        };
+   /* 
+    //Increment retrieving without blocking active schedular
+    CActiveSchedulerWait* wait = new ( ELeave ) CActiveSchedulerWait();
+    CleanupStack::PushL( wait );
+    
+    //Create idle object to 
+    CTrigIterator* trigIt = CTrigIterator::NewL( lbt, wait );
+    CleanupStack::PushL( trigIt );
+    wait->Start();//block current function
+    
+    CleanupStack::PopAndDestroy( trigIt );
+    CleanupStack::PopAndDestroy( wait );
+    
+    //Close Location Triggering Server
+	*/
+	CleanupStack::PopAndDestroy( trigInfo);
+	CleanupStack::PopAndDestroy( notifier);
+	CleanupStack::PopAndDestroy( &lbt );
+    CleanupStack::PopAndDestroy( &lbtserver );
+      return KErrNone;
+    }
+    
+    //Getting trigger information incrementally without creating Iterator
+      TInt CFiringofStartupTriggerAndListTrigger::TCLBTFW091_testL( CStifItemParser& /* aItem */ )
+    {
+    RLbtServer lbtserver;
+    RLbt lbt;
+    User::LeaveIfError( lbtserver.Connect() );
+    CleanupClosePushL( lbtserver );
+    User::LeaveIfError( lbt.Open( lbtserver ) );
+    CleanupClosePushL( lbt );
+ 	    
+    //Get triggers. Note, the loop will block 
+    //active schedular
+    TestModuleIf().SetExitReason( CTestModuleIf::EPanic, 4); 
+    CLbtTriggerInfo* trigInfo = lbt.GetNextTriggerLC(); 
+   
+   
+	  	CleanupStack::PopAndDestroy( &lbt );
+    CleanupStack::PopAndDestroy( &lbtserver );
+      return KErrNone;
+    }
+    
+    
+      //Asynchronous CreateTriggerIterator
+    
+    TInt CFiringofStartupTriggerAndListTrigger::TCLBTFW092_testL( CStifItemParser& /* aItem */ )
+    {
+    RLbtServer server;
+    RLbt lbt;
+   
+        
+    User::LeaveIfError(server.Connect());
+    CleanupClosePushL( server );
+    
+    User::LeaveIfError(lbt.Open(server));
+    CleanupClosePushL( lbt );
+    
+    
+      //Construct a session trigger
+    CLbtSessionTrigger* trig = CLbtSessionTrigger::NewL();
+    
+    //Push to cleanup stack
+    CleanupStack::PushL( trig );
+    
+    // Set Name
+    trig->SetNameL(_L("Trigger1"));
+    trig->SetState(CLbtTriggerEntry::EStateDisabled);
+    trig->SetManagerUi(TUid::Uid(4));
+    
+     //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(61.5285,23.9385);
+          
+    CLbtGeoCircle* circle=CLbtGeoCircle::NewL(coordinate,115000);
+    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( );
+  
+    notifier->CreateIterator(lbt,wait);
+    wait->Start( );
+    RArray<CLbtTriggerInfo> triggers;
+    //Get triggers. Note, the loop will block 
+    //active schedular
+    CLbtTriggerInfo* trigInfo = lbt.GetNextTriggerLC(); 
+    TInt i=1;
+    while ( trigInfo != NULL )
+        {
+        	i++;
+          triggers.Append(*trigInfo);
+        //  CleanupStack::PopAndDestroy(trigInfo);
+          trigInfo = lbt.GetNextTriggerLC(); 
+        }
+          
+    //CLbtTriggerEntry* entry=trigInfo->TriggerEntry();
+      
+    AssertTrueL( trigId==triggers[i-2].TriggerEntry()->Id(),_L("Wrong id"));    
+        
+    CleanupStack::PopAndDestroy(i);
+    CleanupStack::PopAndDestroy(notifier);
+    CleanupStack::PopAndDestroy(trig);
+    CleanupStack::PopAndDestroy(&lbt);
+    CleanupStack::PopAndDestroy(&server);
+    
+    triggers.Close();
+    delete wait;    
+    return KErrNone;
+
+    }
+    
+     TInt CFiringofStartupTriggerAndListTrigger::TCLBTFW094_testL( CStifItemParser& /* aItem */ )
+    {
+  	 RLbtServer lbtserver;
+ 	 RLbt lbt;
+ 	 
+ 	 User::LeaveIfError( lbtserver.Connect() );
+     CleanupClosePushL( lbtserver );
+ 	 User::LeaveIfError( lbt.Open( lbtserver ) );
+ 	 CleanupClosePushL( lbt );
+ 	  //Construct a session trigger Entry
+    CLbtStartupTrigger* trig = CLbtStartupTrigger::NewL();
+    
+    //Push to cleanup stack
+    CleanupStack::PushL( trig );
+    
+    // Set Name
+    trig->SetNameL(_L("b3"));
+     _LIT( KMyTriggerHandlingProcessName, "About.exe" );
+    
+    TSecureId secureid;
+    trig->SetProcessId(KMyTriggerHandlingProcessName,secureid);
+     
+    // set condition
+    
+    TCoordinate coordinate(62.5285,23.9385);
+    
+    CLbtGeoCircle* circle=CLbtGeoCircle::NewL(coordinate,1000);
+    CleanupStack::PushL( circle );
+    
+    TUid aManagerUi = TUid::Uid(0x87654321);     
+    // 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
+	//Set Requestor
+ 	CRequestorBase::TRequestorType ReqType=CRequestorBase::ERequestorUnknown;
+	CRequestorBase::_TRequestorFormat ReqFormat=CRequestorBase::EFormatUnknown;
+	TBuf<KLbtMaxNameLength> ReqData=_L("");
+	trig->SetRequestorL(ReqType,ReqFormat,ReqData);  
+    TLbtTriggerId trigId;
+     trig->SetManagerUi(aManagerUi);   
+        
+    CTriggerFireObserver* notifier= CTriggerFireObserver::NewL( lbt,coordinate );
+    CleanupStack::PushL( notifier );
+    
+    CActiveSchedulerWait* wait=new(ELeave)CActiveSchedulerWait;
+        
+    notifier->CreateTriggers( lbt,*trig,trigId,EFalse,wait );
+    wait->Start( );
+    
+   
+    CleanupStack::PopAndDestroy( notifier );
+    CleanupStack::PopAndDestroy( trig );
+    CleanupStack::PopAndDestroy( &lbt );
+    CleanupStack::PopAndDestroy( &lbtserver );
+   // delete wait;
+    
+    return KErrNone; 
+      
+    }
+    
+    
+     //Sorted listing of triggers based on Name in descending order
+    TInt CFiringofStartupTriggerAndListTrigger::TCLBTFW093_testL( CStifItemParser& /* aItem */ )
+    {
+    RLbtServer lbtserver;
+    RLbt lbt;
+    User::LeaveIfError( lbtserver.Connect() );
+    CleanupClosePushL( lbtserver );
+    User::LeaveIfError( lbt.Open( lbtserver ) );
+    CleanupClosePushL( lbt );
+ 	 
+    
+    	  //Construct a session trigger Entry
+    CLbtSessionTrigger* trig = CLbtSessionTrigger::NewL();
+    
+    //Push to cleanup stack
+    CleanupStack::PushL( trig );
+    
+    // Set Name
+    trig->SetNameL(_L("abc"));
+//     _LIT( KMyTriggerHandlingProcessName, "About.exe" );
+    
+   // TSecureId secureid;
+   // trig->SetProcessId(KMyTriggerHandlingProcessName,secureid);
+     
+    // set condition
+    
+    TCoordinate coordinate(62.5285,23.9385);
+    
+    CLbtGeoCircle* circle=CLbtGeoCircle::NewL(coordinate,1000);
+    CleanupStack::PushL( circle );
+    
+    TUid aManagerUi = TUid::Uid(0x87654321);     
+    // 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
+	//Set Requestor
+ 	CRequestorBase::TRequestorType ReqType=CRequestorBase::ERequestorUnknown;
+	CRequestorBase::_TRequestorFormat ReqFormat=CRequestorBase::EFormatUnknown;
+	TBuf<KLbtMaxNameLength> ReqData=_L("");
+	trig->SetRequestorL(ReqType,ReqFormat,ReqData);  
+    TLbtTriggerId trigId;
+     trig->SetManagerUi(aManagerUi);   
+        
+    CTriggerFireObserver* notifier= CTriggerFireObserver::NewL( lbt,coordinate );
+    CleanupStack::PushL( notifier );
+    
+    CActiveSchedulerWait* wait=new(ELeave)CActiveSchedulerWait;
+        
+    notifier->CreateTriggers( lbt,*trig,trigId,EFalse,wait );
+    wait->Start( );
+    
+    trig->SetNameL(_L("bac"));
+    notifier->CreateTriggers( lbt,*trig,trigId,EFalse,wait );
+    wait->Start( );
+    
+    RPointerArray < CLbtTriggerInfo > trigInfoList;
+    
+    
+    //Construct list options
+    CLbtListTriggerOptions* listOptions = CLbtListTriggerOptions::NewL();
+    CleanupStack::PushL( listOptions );
+    
+    listOptions->SetRetrievedFields( 
+        TLbtTriggerDynamicInfo::EDistanceToLatestLocation  
+ );      
+    listOptions->SetSortingOption(CLbtListTriggerOptions::ELbtTriggerNameDescending );
+    
+    
+    lbt.GetTriggersL(trigInfoList,listOptions );
+        
+    CleanupStack::PopAndDestroy( listOptions );
+    
+    //Do something with the trigger list
+    
+    
+    TInt count = trigInfoList.Count();
+    	TBuf<256> currname;
+    	TBuf<256> prevname;
+   // TDesC prevname=KNullDesC;
+     for ( TInt i = 0; i < count; i++ )
+     {
+     	CLbtTriggerEntry *TrigEntry = trigInfoList[i]->TriggerEntry();
+    
+    	TLbtTriggerDynamicInfo * dyninfo = trigInfoList[i] -> DynInfo() ;
+    
+        currname =TrigEntry->Name(); 
+    	if(i==0) 
+    	{
+    		prevname = currname;
+    	}
+	    if(currname> prevname) 
+	    {
+	    	return -99;
+	    }
+	    else
+	    {
+	    	prevname = currname;
+	    }
+    
+     }
+        
+    //free memory
+    for ( TInt i = 0; i < count; i++ )
+        {
+        delete trigInfoList[i];
+        }
+    trigInfoList.Close();
+    CleanupStack::PopAndDestroy( notifier );
+    CleanupStack::PopAndDestroy( trig );
+    CleanupStack::PopAndDestroy( &lbt );
+    CleanupStack::PopAndDestroy( &lbtserver );
+	return KErrNone;
+      
+    }
+    
+    
+       //deletion of swssion triggers once session closed
+    TInt CFiringofStartupTriggerAndListTrigger::TCLBTFW095_testL( CStifItemParser& /* aItem */ )
+    {
+    RLbtServer lbtserver;
+    RLbt lbt;
+    User::LeaveIfError( lbtserver.Connect() );
+    CleanupClosePushL( lbtserver );
+    User::LeaveIfError( lbt.Open( lbtserver ) );
+    CleanupClosePushL( lbt );
+ 	 
+    
+    	  //Construct a session trigger Entry
+    CLbtSessionTrigger* trig = CLbtSessionTrigger::NewL();
+    
+    //Push to cleanup stack
+    CleanupStack::PushL( trig );
+    
+    // Set Name
+    trig->SetNameL(_L("abc"));
+//     _LIT( KMyTriggerHandlingProcessName, "About.exe" );
+    
+   // TSecureId secureid;
+   // trig->SetProcessId(KMyTriggerHandlingProcessName,secureid);
+     
+    // set condition
+    
+    TCoordinate coordinate(62.5285,23.9385);
+    
+    CLbtGeoCircle* circle=CLbtGeoCircle::NewL(coordinate,1000);
+    CleanupStack::PushL( circle );
+    
+    TUid aManagerUi = TUid::Uid(0x87654321);     
+    // 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;
+     trig->SetManagerUi(aManagerUi);   
+     //Set Requestor
+ 	CRequestorBase::TRequestorType ReqType=CRequestorBase::ERequestorUnknown;
+	CRequestorBase::_TRequestorFormat ReqFormat=CRequestorBase::EFormatUnknown;
+	TBuf<KLbtMaxNameLength> ReqData=_L("");
+	trig->SetRequestorL(ReqType,ReqFormat,ReqData);     
+    CTriggerFireObserver* notifier= CTriggerFireObserver::NewL( lbt,coordinate );
+    CleanupStack::PushL( notifier );
+    
+    CActiveSchedulerWait* wait=new(ELeave)CActiveSchedulerWait;
+        
+    notifier->CreateTriggers( lbt,*trig,trigId,EFalse,wait );
+    wait->Start( );
+    
+    trig->SetNameL(_L("bac"));
+    notifier->CreateTriggers( lbt,*trig,trigId,EFalse,wait );
+    wait->Start( );
+    
+    
+    CleanupStack::PopAndDestroy( notifier );
+    CleanupStack::PopAndDestroy( trig );
+    CleanupStack::PopAndDestroy( &lbt );
+    CleanupStack::PopAndDestroy( &lbtserver );
+    
+    User::LeaveIfError( lbtserver.Connect() );
+    CleanupClosePushL( lbtserver );
+    User::LeaveIfError( lbt.Open( lbtserver ) );
+    CleanupClosePushL( lbt );
+    
+     RPointerArray < CLbtTriggerInfo > trigInfoList;
+    
+    User::After(5000000);
+    //Construct list options
+    CLbtListTriggerOptions* listOptions = CLbtListTriggerOptions::NewL();
+    CleanupStack::PushL( listOptions );
+    
+    //Construct an attribute filter
+    CLbtTriggerFilterByAttribute* attribFilter = 
+    CLbtTriggerFilterByAttribute::NewL();
+    CleanupStack::PushL( attribFilter );
+    attribFilter->AddTriggerStateL( CLbtTriggerEntry::EStateEnabled );
+    attribFilter->AddTriggerTypeL( CLbtTriggerEntry::ETypeSession );
+    listOptions->SetFilter( attribFilter ); 
+    
+    CleanupStack::Pop( attribFilter );   
+    
+    
+    lbt.GetTriggersL(trigInfoList,listOptions );    
+       
+	//CleanupStack::PopAndDestroy(4, &lbtserver);
+
+    //Do something with the trigger list
+    TInt count = trigInfoList.Count();
+    if(count!=0)
+    {
+    	return -99;
+    }
+    
+	return KErrNone;
+      
+    }
+    
+//#endif
+// -----------------------------------------------------------------------------
+// CFiringofStartupTriggerAndListTrigger::AssertTrueL
+// function for condition check.
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+void CFiringofStartupTriggerAndListTrigger::AssertTrueL( TBool aCondition,const TDesC& aMessage )
+    {
+           
+         if(!aCondition)
+         {
+          
+    	   iLog->Log( aMessage );
+           User::LeaveIfError(KErrGeneral);
+         }
+    
+    }
+    
+    
+    
+
+// ========================== OTHER EXPORTED FUNCTIONS =========================
+// None
+
+//  End of File