--- /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