fotaapplication/fotaserver/fmserver/inc/fmsinterruptaob.h
branchRCL_3
changeset 26 19bba8228ff0
parent 0 b497e44ab2fc
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/fotaapplication/fotaserver/fmserver/inc/fmsinterruptaob.h	Wed Sep 01 12:27:42 2010 +0100
@@ -0,0 +1,296 @@
+/*
+* Copyright (c) 2009 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: Implementation of fotaserver component
+* 	This is part of fotaapplication.
+*
+*/
+
+#ifndef __FMS_AOB_H__
+#define __FMS_AOB_H__
+
+#include <e32base.h>
+#include <e32std.h>
+#include <e32property.h>
+#include <rconnmon.h>
+#include <etel.h>
+#include <fotaengine.h>
+#include "fmsserver.h"
+#include "fmsdebug.h"
+
+class CFMSServer;
+
+// CLASS DECLARATION     
+class CFMSInterruptAob : public CActive,private MConnectionMonitorObserver
+	{	
+	friend class CFMSServer;	
+	
+	public:
+	/**
+	 * Default constructor
+	 */
+	CFMSInterruptAob();
+	
+	/**
+	 * second phase constructor
+	 */
+	void ConstructL();
+	
+	/**     
+     * Logs the new request/interrupt to  be monitored  
+     * @param aType, interrupt reason
+     * @return None
+     */
+	void StartL(TOmaDLInterruptReason aType);
+	
+	/**
+	 * Starts Active object to monitor for the update interrupt in case of USB charger support
+	 * @param aType, Interrupt reason
+	 * @return None
+	 */
+	void StartBatteryMonitoringL(TOmaUpdInterruptReason aType, TUint aLevel);
+
+	/**     
+     * Sets the memory size member variable to be monitored 
+     * for the current interrupt 
+     * @param aSize, Memory space required
+     * @param aDrive, Drive used for download
+     * @return None
+     */
+	void MemoryToMonitorL(TInt aSize, TDriveNumber aDrive);
+	
+	/**     
+     * Sets the network type for the current interrupt 
+     * @param aBearer
+     * @return None
+     */
+	void NetworkTypeL(TInt aBearer);
+	/**     
+     * Launches FOTA install notifier 
+     * @param None
+     * @return None
+     */
+	void LaunchFotaScheduleUpdate();
+	
+	/*
+	 * Destructor
+	 */
+	virtual ~CFMSInterruptAob();
+	
+	/**     
+	 * Starts monitor for active call end 	
+	 * @param aType, Reason to be monitored	 
+	 * @return None
+	 */
+	void StartCallEndMonitoringL(TOmaUpdInterruptReason aType);
+	
+	private:
+	
+	/**
+     * From CActive
+     * Called by Active scheduler when the asynchronous 
+     * request completed     
+     * @param None
+     * @return None
+     */
+	void RunL();
+	
+	/**
+     * From CActive
+     * Called when a pending request has to be cancelled     
+     * @param None
+     * @return None
+     */
+	void DoCancel();
+	
+	 /**
+     * From CActive
+     * Handle a leave occurred in the RunL().
+     * Note: If RunError function pointer is not given in construction,
+     * the leave error is to be propagated back to the active scheduler!
+     *
+     * @since S60 v3.2
+     * @param aError the error code of leave
+     */
+    TInt RunError( TInt aError );
+    
+    /**
+     * Checks the package size is more than warning level of memory
+     * @param aCritical to set EFalse/ETrue
+     * @return TInt
+     */
+	TInt IsPkgSizeMoreThanWL(TBool& aCritical);
+	
+	/**
+	  * Starts network notification registry
+	  * @param None
+	  * @return None
+	  */
+	TBool CheckNetworkL();
+	
+	/**
+	  * Starts network notification registry
+	  * @param None
+	  * @return None
+	  */
+	void LaunchFotaEngineL();		
+	
+	/**
+	  * Starts network notification registry
+	  * @param None
+	  * @return None
+	  */
+	TBool CheckGlobalRFStateL();
+	
+	/**
+	  * Stops the FMS Server
+	  * @param None
+	  * @return None
+	  */
+	void StopServer();
+	
+	/**
+	  * Checks the memory size to be monitored
+	  * after adding the warning level
+	  * @param None
+	  * @return None
+	  */
+	void CheckMemSizeL();
+	
+	public: 
+    
+  	/**
+    * Starts network notification registry
+    * @param None
+    * @return None
+    */
+	void NotifyL() ;
+	
+    /**
+    * Stops network notifications.
+    * @param None
+    * @return None
+    */
+   	void StopNotify() ;
+   	
+   	/**
+     * sets n/w to 3G.
+     * @param None
+     * @return None
+     */
+   	void SetWcdma() ;
+   	
+   	/**
+     * Starts n/w registry check in Hard reeboot case
+     * uses CPeriodic variable to call static method
+     * @param None
+     * @return None
+     */
+   	void StartNetworkRegistryCheckL();
+   	
+   	/**
+     * checks n/w registry in Hard reeboot case
+     * and destroys the CPeriodic if connection is there
+     * and triggers fota engine
+     * @param None
+     * @return None
+     */
+	void NetworkRegistryCheckL();
+	
+	/**
+	 * Launches Fota update note	 
+	 * @param aPkgId, package Id of FOTA Update
+	 * @param aProfilleId, Profile ID of FOTA
+	 * @return None
+	 */
+	void LaunchFotaUpdate(TInt& aPkgId, TInt& aProfilleId);
+	
+	private : 
+	
+	/**
+	 * From MConnectionMonitorObserver
+	 * Method involed by connection monitor with current event. 
+	 * This method handles the events
+	 * @param aConnMonEvent says about the event
+	 * @return None
+	 */
+	void EventL( const CConnMonEventBase& aConnMonEvent ) ;
+	
+	/**
+	 *CheckNetworkstatus and takes action based on that 
+	 * @param none
+	 * @return None
+	 */
+	void CheckNetworkStatusL();
+	/**
+	 * HandleAboveCriticallevel handle memory interrupt when it is above critical level 
+	 * @param                   None
+	 * @return                  None
+	 */
+	void HandleAboveCriticallevelL();
+	
+	/**
+	 * HandleChargingInterruptL  handle charging interrupt when it is above critical level 
+	 * @param                   None
+	 * @return                  None
+	 */
+	
+	void HandleChargingInterruptL();
+	
+	private:	  
+	
+	RConnectionMonitor iConnMon;
+	RFs iFs;
+	RProperty iProperty;
+    TInt iConnStatus;	
+    TInt iSize;
+    TDriveNumber iDrive;
+    TInt iBearer;
+    TBool iWlanAvailable;
+    TBool iGPRSAvail;
+    TOmaDLInterruptReason iInterruptType;
+    TOmaUpdInterruptReason iUpdInterruptType;
+    CFMSServer* iServer;
+    RFotaEngineSession iFotaEngine;    
+    CPeriodic* iPeriodicNwCheck;
+    TBool iWcdma;
+    
+    /** 
+     * RTelServer object used to keep an asynchronous request
+     * for phone call end monitoring
+     */ 
+    RTelServer iTelServer;
+
+    /** 
+     * RPhone object used to keep an asynchronous request
+     * for phone call end monitoring
+     */
+    RPhone     iPhone;
+    
+    /** 
+     * RLine object used to keep an asynchronous request
+     * for phone call end monitoring
+     */
+    RLine      iLine;
+    
+    /** 
+     * To get hodl of current call status     
+     */
+    RCall::TStatus iCallStatus;
+
+    TInt iChargeToMonitor;
+
+	};
+	
+
+#endif
\ No newline at end of file