locationtriggering/ltstrategyengine/inc/lbtstrategyengine.h
author Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Wed, 09 Jun 2010 10:08:56 +0300
branchRCL_3
changeset 27 b88ebe0cbbbe
parent 0 667063e416a2
permissions -rw-r--r--
Revision: 201021 Kit: 2010123

/*
* Copyright (c) 2006, 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:  Class definition of Location Acquisition Strategy Engine
*
*/



#ifndef C_LBTSTRATEGYENGINE_H
#define C_LBTSTRATEGYENGINE_H

#include <etelmm.h>
#include "lbtstrategy.h"
#include "lbttriggerview.h"	
#include "lbttriggerchangeobserver.h"
#include "lbtcoordinatesupervisor.h"
#include "lbtcellsupervisor.h"

class MLbtStrategyEngineObsrvr;
class CLbtCellChangeHandler;

/**
 * CLbtStrategyEngine is responsible for supervising triggers in the system. 
 * The instance of CLbtStrategyEngine acquires the terminal's location 
 * information using the instance of CLbtLocationRequestor and supervises 
 * triggers. It notifies location triggering server logic component when 
 * triggers are fired. 
 *
 * @since S60 v4.0
 */
NONSHARABLE_CLASS( CLbtStrategyEngine ) : public MLbtContainerChangeEventObserver,
                                          public MLbtTriggerViewObserver
						                      
    {
public:     // Methods

    /**
     * Factory function that instantiates an object of CLbtStrategyEngine
     *
     * @param aConstructionParameters - 
     */
    static CLbtStrategyEngine* NewL( TAny* aConstructionParameters, 
                                        MLbtStrategyEngineObsrvr* aObserver );

    /**
     * Destructor
     */
    ~CLbtStrategyEngine();

public:

    /**
     * Called by CLbtStrategy to issue request to start supervision
     */
    void StartSupervision();

    /**
     * Called by CLbtStrategy to issue request to stop the supervision process
     */
    void StopSupervision();

    /**
     * Called by CLbtStrategy when settings related to trigger supervision 
     * changes
     */
    void SettingsChanged();
    
public:     // from interface class MTriggerViewObserver

    /**
     * From MTriggerViewObserver
     * Called by CLbtTriggerView when the view is refreshed after a new 
     * position fix is provided or after trigger modifications are
     * notified by the Container
     */
    virtual void OperationComplete( 
                            MLbtTriggerViewObserver::TOperation aOperation );
    
public:     // from interface class MLbtContainerChangeEventObserver

    /**
     * From MLbtContainerChangeEventObserver
     * Called by Location Triggering Container when trigger(s) is / are 
     * modified or created
     *
     * @param aTriggerIds - ID(s) of the trigger(s) that was/were created or 
     * modified
     */
    virtual void TriggerStoreChanged( RArray<TLbtTriggerId>& aTriggerIds,
                                      TLbtTriggerEventMask aEventMask,
                                      TLbtContainerChangedAreaType aAreaType,
                                      RArray<TUid>& aManagerUids );


private:
	 void ConstructL( TAny* aConstructionParameters,
                                        MLbtStrategyEngineObsrvr* aObserver );

	CLbtStrategyEngine();
	
	/**
     * Initialises Etel.
     */
    void InitialiseEtelL();

private:
	
	CLbtTriggerView*				            iView;
	
	CLbtCoOrdinateSupervisor*                   iCoOrdinateSupervisor;
	
	CLbtCellSupervisor*                         iCellSupervisor;
	
	TBool                                       iSupervisionInitiated;
	
	TBool                                       iViewInitialised;
	
	MLbtContainerChangeEventObserver::TLbtContainerChangedAreaType iChangedAreaType;
	
	RTelServer 			                        iTelServer; 

    RMobilePhone 		                        iMPhone; 

    CLbtCellChangeHandler*                      iCellChangeHandler;
	};

#endif	// C_LBTSTRATEGYENGINE_H