/*
* Copyright (c) 2001-2009 Nokia Corporation and/or its subsidiary(-ies).
* All rights reserved.
* This component and the accompanying materials are made available
* under the terms of the License "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:
*
*/



#ifndef __CT_LBS_CLIENT_POS_TP173_H__
#define __CT_LBS_CLIENT_POS_TP173_H__

//  INCLUDES
#include "ctlbsportedstepbase.h"
#include "EPos_MPosModulesObserver.h" 

// FORWARD DECLARATIONS

// CLASS DECLARATION

/**
*  Test procedure 173
*
*/
class CT_LbsClientPosTp173 : public CT_LbsPortedStepBase, public MPosModulesObserver
    {
    public:  // Constructors and destructor

        /**
        * C++ default constructor.
        */
    	CT_LbsClientPosTp173(CT_LbsServer& aParent);

        /**
        * Destructor.
        */
        ~CT_LbsClientPosTp173();

    public: // Functions from base classes

        /**
        * From CT_LbsPortedStepBase
        * Runs the test in the module
        */
        void StartL();

    public: // New Functions
    
        /**
		* Timeout request if the no notification has been sent
		* by the server.
		*/
		void NotifyTimeout();

        void HandleSettingsChangeL(TPosModulesEvent);

        /**
        * Leaves if aCondition is false.
        * @param aCondition something that should be true
        */
        void AssertTrueL(TBool aCondition, const TDesC& errorMsg);

		/**
        * Leaves if aCondition is false.
        * @param aCondition something that should be true
        */
		void AssertTrueSecL(TBool aCondition, const TDesC& aErrorMsg, TInt aErrorCode);

        void CheckErrorL();

        void DoEventHandlingL();
        
     protected:

        TBool iNoEvents;
        TBool iError;
        TBuf<200> iErrorText;
     
     private: 

        TInt iEvent;   
        
    };

//// CLASS DECLARATION

/**
 *
 */
class CMyNotificationTimer : public CTimer 
	{
	public:
	
		/**
        * Destructor.
        */
		virtual ~CMyNotificationTimer();

	public:

		/**
        * Two-phased constructor.
        */
		static CMyNotificationTimer* NewLC(CT_LbsClientPosTp173* aMainControl);

		/**
        * Two-phased constructor.
        */
		static CMyNotificationTimer* NewL(CT_LbsClientPosTp173* aMainControl);

	public:

		/**
		* Starts the power checking timer
		*/
		void StartNotificationTimer(); 

		/** 
		* Cancel the power checking timer.
		*/
		void DoCancel();

	private:

		/**
        * EPOC constructor.
        */
		void ConstructL();

		/**
        * C++ default constructor.
        */
		CMyNotificationTimer(CT_LbsClientPosTp173* aMainControl);

        /**
        * From CActive. Handles an active object’s request completion
        * event.
        */
        void RunL();

		//Prohibit copy constructor
        CMyNotificationTimer( const CMyNotificationTimer& );
        // Prohibit assigment operator
        CMyNotificationTimer& operator= ( const CMyNotificationTimer& );

	private:
		// a handler to the communicator
		CT_LbsClientPosTp173*	iMainControl;
		TInt		iNotificationTimout;
	};

#endif      // __CT_LBS_CLIENT_POS_TP173_H__

// End of File
