fotaapplication/fotaserver/FotaServer/inc/FotaNetworkRegStatus.h
author Pat Downey <patd@symbian.org>
Wed, 01 Sep 2010 12:27:42 +0100
branchRCL_3
changeset 26 19bba8228ff0
parent 0 b497e44ab2fc
permissions -rw-r--r--
Revert incorrect RCL_3 drop: Revision: 201033 Kit: 201035

/*
* Copyright (c) 2005 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:   GPRS and Wlan status getter for sending Generic Alerts
*
*/



#ifndef __FOTANETWORKREGSTATUS_H__
#define __FOTANETWORKREGSTATUS_H__

// SYSTEM INCLUDES
#include <e32base.h>
#include <rconnmon.h>

//Forward declarations
class CFotaServer;

//Constants used in this class

const TTimeIntervalMicroSeconds32 KTimeInterval = 1000000; //1 second, duration between each retry.
const TInt KRetries = 10; //Maximum number of retries.

/**
* Actice object class that runs a timer for probing network status (GPRS & WLAN)
*  @lib    fotaserver
*  @since  S60 v3.2
*/
NONSHARABLE_CLASS (CFotaNetworkRegStatus) : public CActive
	{
	public:
		//Symbian 2-Phase construction
		
		static CFotaNetworkRegStatus* NewL(CFotaServer* aObserver);
		static CFotaNetworkRegStatus* NewLC(CFotaServer* aObserver);

       /**
        * Destructor.
        */      
		virtual ~CFotaNetworkRegStatus();

	public: 
		/**
	     * Starts monitoring for Network status before sending Generic Alert
		 *
     	 * @since   S60   v3.2
     	 * @param   None
     	 * @return  None
     	 */

		void StartMonitoringL();
		
		/** 
	     * Checks whether the network connection possible with the IAP Id provided
		 *
     	 * @since   S60   v3.2
     	 * @param   None
     	 * @return  ETrue if yes, EFalse when not possible
     	 */
		TBool IsConnectionPossibleL(TInt aIapid);
		
    public: // Functions from base classes
		/**
        * From CActive,DoCancel.
        */
		void DoCancel();

		/**
        * From CActive,RunL.
        */
	    void RunL();

		/**
        * From CActive,RunError.
        */
		TInt RunError(TInt aError);
		
	private: //functions
		
		//Constructors
		
		CFotaNetworkRegStatus();
		CFotaNetworkRegStatus(CFotaServer* aObserver);

		//Symbian 2-Phase construction 
		void ConstructL();
		
		/**
	     * Checks GlobalRFs status
		 *
     	 * @since   S60   v3.2
     	 * @param   None
     	 * @return  ETrue if success, EFalse if failure
     	 */
		TBool CheckGlobalRFState();

		/**
	     * Checks Network status, basically Network Registration
		 *
     	 * @since   S60   v3.2
     	 * @param   None
     	 * @return  ETrue if success, EFalse if failure
     	 */
		TBool CheckNetworkRegStateL();
		
		
		/**
	     * Checks Wlan status
		 *
     	 * @since   S60   v3.2
     	 * @param   None
     	 * @return  ETrue if success, EFalse if failure
     	 */
		TBool IsWlanSupportedL();
		
	    /**
	     * To find the bearer of the IapId
	     *
	     * @since   S60   v3.2
	     * @param   aIapId
	     * @return  ETrue/EFalse
	     */
	    TUint32 FindBearerL(TInt aIapId);

	
	private: // data
	
	    /**
	     * timer used for monitoring
	     */
		RTimer iTimer;
		
	    /**
	     * S60 monitory class used for monitoring network status
	     */
		RConnectionMonitor iMonitor;
	
	    /**
	     * FotaServer
    	 */
		CFotaServer* iObserver;
	
	    /**
	     * Number of retries
    	 */
		TInt iRetriesLeft;
	
		
	    /**
    	 * GlobalRFs state
     	 */
		TBool iGlobalRFState;
	};

#endif // __FOTANETWORKREGSTATUS_H__

// End of File