fotaapplication/fotaserver/fmserver/inc/fmsserver.h
branchRCL_3
changeset 26 19bba8228ff0
parent 0 b497e44ab2fc
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/fotaapplication/fotaserver/fmserver/inc/fmsserver.h	Wed Sep 01 12:27:42 2010 +0100
@@ -0,0 +1,309 @@
+/*
+* 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_SERVER_H__
+#define __FMS_SERVER_H__
+
+#include <e32base.h>
+#include <e32std.h>
+#include <e32property.h>
+#include <flogger.h>
+#include <rconnmon.h>
+#include <f32file.h>
+#include <fotaengine.h>
+#include "fmsclientserver.h"
+#include "fmsinterruptaob.h"
+#include "fmsdebug.h"
+
+_LIT( KFotaInterruptFileName, "fotainterrupt.txt" );
+const TInt64 KThresholdDiskSpace = 305152;
+const TInt64 KDiskSpaceNotCL = 102400;
+const TInt KRequestTriggerWaitTime(1000000);
+
+class CFMSSession;
+class CFMSServer;
+class CFMSInterruptAob;
+
+	
+class CFMSServer: public CServer2
+	{
+	friend class CFMSSession;
+	friend class CFMSInterruptAob;
+	
+	public:
+	
+	/**
+	 * Destructor
+	 */ 
+	virtual ~CFMSServer();
+	
+	/**
+	 * Static method which creates the server instance
+	 * @param None
+	 * @return CServer2*
+	 */ 
+	static CServer2*  NewLC();
+	
+	/**
+	 * Stops the session and closes the server
+	 * @param None
+	 * @return None
+	 */
+	void DropSession();
+	
+	/**
+	 * Starts Active object to monitor for the interrupt
+	 * @param aType, Interrupt reason
+	 * @return None
+	 */
+	void StartMonitoringL(TOmaDLInterruptReason aType);
+
+	/**
+	 * Starts Active object to monitor for the update interrupt
+	 * @param aType, Interrupt reason
+	 * @param aLevel, Level of the battery charge to monitor
+	 * @return None
+	 */
+	void StartBatteryMonitoringL(TOmaUpdInterruptReason aType, TUint aLevel);
+
+/**
+	 * Starts Active object to monitor for the update interrupt
+	 * @param aType, Interrupt reason
+	 * @return None
+	 */
+	void StartUpdateInterruptMonitoringL(TOmaUpdInterruptReason aType);
+	/**
+	 * Calls Active object's method to set the drive & size 
+	 * for memory interrupt
+	 * @param aSize, Interrupt aDrive
+	 * @return None
+	 */
+	void MemoryToMonitorL(TInt aSize, TDriveNumber aDrive);
+	
+	/**
+	 * Calls Active object's method to set the network bearer
+	 * @param aBearer
+	 * @return None
+	 */
+	void NetworkTypeL(TInt aBearer);
+	
+	/**
+	 * Writes the file with all the interrupt information
+	 * @param aReason ,Interrupt reason
+	 * @param aBearer ,Bearer id
+	 * @param aDrive  ,Drive to Download
+	 * @param aSize   , memory size to monitor
+	 * @param aWcdmaBearer , 3G bearer or not
+	 * @return None
+	 */
+    void WriteToFile(TInt aReason, TInt aBearer, TDriveNumber aDrive, 
+    		TInt aSize, TBool aWcdmaBearer );
+    
+    /**
+	 * Reads the file for the interrupt information
+	 * @param aReason ,Interrupt reason
+	 * @param aBearer ,Bearer id
+	 * @param aDrive  ,Drive to Download
+	 * @param aSize   , memory size to monitor
+	 * @param aWcdmaBearer , 3G bearer or not
+	 * @return TBool, says reading success or not
+	 */
+    TBool ReadFromFile(TInt& aReason, TInt& aBearer, TInt& aDrive, TInt& aSize
+    		 , TInt& aWcdmaBearer );
+    
+    /**
+	 * Checks for any interrupt pending
+	 * @param None
+	 * @return TBool
+	 */
+    TBool RequestPending();
+    
+    /**
+	 * Checks the network as part of other interrupts
+	 * before triggering fota.
+	 * In case of network down, it keeps network interrupt
+	 * @param aBearer ,Bearer id
+	 * @param aDrive  ,Drive to Download
+	 * @param aSize   , memory size to monitor
+	 * @param aWcdmaBearer , 3G bearer or not
+	 * @return None
+	 */
+    void CheckNetworkL(TInt& aBearerId,TInt& aDrive, TInt& aSize,TBool& aWcdma);
+    
+    /**
+	 * Locks the session, so that new session will not be started
+	 * before the previous interrupt monitory completion
+	 * @param None
+	 * @return None
+	 */
+    void LockSession();
+    
+    /**
+	 * Computes the variation configured
+	 * @param None
+	 * @return None
+	 */
+    void FindVariation();
+    
+    /**
+	 * Checks Charger monitoring supported or not
+	 * @param None
+	 * @return TBool, which says Charger monitory support
+	 */
+    TBool ChargerTobeMonitered();
+    
+    /**
+	 * Checks  Network monitoring supported or not
+	 * @param None
+	 * @return TBool, which says  Network monitory support
+	 */
+    TBool NetworkTobeMonitered();
+    
+    /**
+	 * Checks Phone startup monitoring supported or not
+	 * @param None
+	 * @return TBool, which says Phone startup monitory support
+	 */
+    TBool MoniterAfterPhoneRestart();
+    
+    /**
+	 * Checks Memory monitoring supported or not
+	 * @param None
+	 * @return TBool, which says Memory monitory support
+	 */
+    TBool MemoryTobeMonitered();
+    
+    /**
+	 * Checks for WLAN
+	 * @param None
+	 * @return TBool, which says WLAN availability
+	 */
+    TBool CheckWlanL();
+    
+    /**
+	 * Sets the Bool value which decides file deletion
+	 * @param aValue, says whether the file to be deletd or not
+	 * @return None
+	 */
+    void DeleteFile(TBool aValue);
+    
+    /**
+	 * Checks network and trigger fota engine in hard reboot case
+	 * @param None
+	 * @return None
+	 */
+    void TriggerFotaL();
+    
+    /**
+	 * For asynchronous network request to be 
+	 * logged on active object, using CPeriodic
+	 * @param None
+	 * @return None
+	 */
+	void AsyncSessionRequestL();
+		
+	/**
+	 * Destroys the CPeriodic object
+	 * So that not to call the static method again
+	 * @param None
+	 * @return None
+	 */
+	void StopAsyncRequest();
+	
+	/**
+     * Calls Active objects SetWcdma to set the bearer to 3G
+     * @param None
+     * @return None
+     */
+   	void SetWcdma() ;
+   	
+   	/**
+   	 * Checks whether a phone call is active or not
+   	 * @param aStatus, on return contains the call status
+   	 * @return None
+   	 */
+   	void CheckPhoneCallActiveL(TInt& aStatus);
+   	
+   	/**
+   	 * Starts montioring for active phone call end
+   	 * @param aPkgId, package Id of FOTA Update
+   	 * @param aProfileId, Profile ID of FOTA
+   	 * @return phone call active or not at that moment
+   	 */
+   	TBool MonitorPhoneCallEndL(TInt aPkgId, TInt aProfileId);
+   	
+   	/**
+   	 * Logs Asynchronous montioring for active phone call end
+   	 * To avoid performance issues(like thread blocking call)
+   	 * @param None
+   	 * @return None
+   	 */
+   	void LogAsyncCallMonitorL();
+   	
+   	/**
+   	 * Returns the FOTA Update packaged Id
+   	 */ 
+   	TInt& PkgId();
+
+   	/**
+   	 * Returns the FOTA server profile Id
+   	 */
+   	TInt& ProfileId();
+   	
+	private:
+	
+	/**
+	 * second phase constructor
+	 */
+	void ConstructL();
+	
+	/**
+	 * Default constructor
+	 */
+	CFMSServer();
+	
+	protected:
+	
+	/**
+	 * Calls when a New session is getting created
+	 * @param aVersion
+	 * @param aMessage
+	 * @return CSession2*
+	 */
+	CSession2* NewSessionL(const TVersion& aVersion,const RMessage2& aMessage)  const;
+	
+	private:
+	RFs iFs; //for file creation, writing & Deleting
+	RFile iFile;
+	TInt iSessionCount;	
+	CFMSInterruptAob iFMSInterruptAob;
+    TBool iNetworkMon;
+    TBool iChargerMon;
+    TBool iPhoneRestartMon;
+    TBool iMemoryMon;	
+    TBool iDeleteFile;
+    CPeriodic* iLogAsyncRequest;
+    
+    //FOTA Server Profile Id
+    TInt iProfileId;
+    
+    //FOTA Update package Id
+    TInt iPkgId;
+	};
+	
+#endif
\ No newline at end of file