fotaapplication/fotaserver/FotaServer/inc/FotaServer.h
changeset 44 39aa16f3fdc2
parent 43 c8e5c3d81b42
child 53 b3a7d8e28262
child 57 f5b689a4f7a2
--- a/fotaapplication/fotaserver/FotaServer/inc/FotaServer.h	Wed Jun 23 19:10:17 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,874 +0,0 @@
-/*
-* 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:   Header file for CFotaServer
-*
-*/
-
-
-
-#ifndef __FOTASERVER_H__
-#define __FOTASERVER_H__
-
-// INCLUDES
-#include <AknDoc.h>
-#include <aknapp.h>
-#include <AknServerApp.h>
-#include <coemain.h>
-#include <s32file.h>
-#include <DocumentHandler.h>
-#include <apmstd.h>
-#include <e32property.h>
-#include <SyncMLClient.h>
-#include <SyncMLClientDM.h>
-#include <hwrmpowerstatesdkpskeys.h>
-#include <SyncMLNotifier.h>
-#include <SyncMLNotifierParams.h>
-#include <SyncMLObservers.h>
-#include <fotastorage.h>
-#include <starterclient.h>
-
-#include "fotaserverPrivateCRKeys.h"
-
-#include "FotaIPCTypes.h"
-#include "FotaDB.h"
-#include "fotaConst.h"
-#include "fotadownload.h"
-#include "fotaupdate.h" 
-#include "fmsclient.h"	//The FMS Client header file
-
-
-//Forward declarations
-class CDevEncController;
-
-enum TOmaDmLrgObjDl
-{
-    EOmaDmLrgObjDlFail = 1,
-    EOmaDmLrgObjDlExec
-};
-_LIT (KSWversionFile, "swv.txt");
-/** Timeout to let cfotadownloader callstack to empty*/
-const TInt KDownloadFinalizerWaitTime(1000000);
-
-/** Time interval between syncml session retry attempts*/
-const TInt KSyncmlSessionRetryInterval(60000000);
-
-/** shutdown timer */
-const TTimeIntervalMicroSeconds32 KFotaTimeShutDown(10000000);
-
-/** How many times generic alert sending should be tried in row. */
-const TInt KSyncmlAttemptCount = 3;
-
-/** This P&S Key is used to notify DM UI on any download event. key=0 for idle and key=1 for download */ 
-const TUint32 KFotaDownloadState = 0x00000001;
-
-/** If download is active this P&S key is set to ETrue, otherwise EFalse. 
- * The key is owned by omadmappui**/
-const TUint32 KFotaDownloadActive = 0x0000008;
-
-/** The P&S key to say DM UI to perform refresh of UI elements */
-const TUint32 KFotaDMRefresh = 0x00000009;
-
-enum {
-	ENo=0,
-	EYes
-};
-
-//Constants used when update happen NSC/DM 
-enum {
-		EFotaUpdateNSC=1,
-		EFotaUpdateNSCBg,
-		EFotaUpdateDM
-};
-
-_LIT_SECURITY_POLICY_C1( KReadPolicy, ECapabilityReadDeviceData );
-_LIT_SECURITY_POLICY_C1( KWritePolicy, ECapabilityWriteDeviceData );
-
-//Constants for Device Encryption operation
-enum TDEOperations
-    {
-    EIdle = 0,
-    EEncryption,
-    EDecryption,
-    EDecryptionPending
-    };
-// FORWARD CLASS DECLARATION
-
-class CFotaServer;
-class CFotaDownload;
-class CFotaUpdate;
-class CFotaSrvApp;
-class CFotaNetworkRegStatus;
-/**
-* Fota server. Handles client requests. Starts download and/or update.
- *
- *  This class is 
- *
- *  @lib    fotaserver
- *  @since  S60 v3.1
- */
-NONSHARABLE_CLASS( CFotaServer ) : public CAknAppServer, MSyncMLEventObserver
-	{
-    friend class  CFotaSrvSession;
-    friend class  CFotaDownload;
-    friend class  CFotaUpdate;
-
-public:
-
-    /**
-    * C++ default constructor.
-    */
-	CFotaServer();
-    
-    /**
-    * Destructor.
-    */		
-	virtual ~CFotaServer();
-
-public: // New functions
-
-
-    /**
-     * Create database
-     *
-     * @since   S60   v3.1
-     * @param   aLargObj    Is it largeobject download (or dlmgr download)
-     * @param   aPkgId      Packageid of the download
-     * @return  none
-     */
-    void UpdatePackageDownloadCompleteL( TBool aLargObj,const TInt aPkgId);
- 
- 
-    /**
-     * Check s/w version with the current version
-     *
-     * @since   S60   v3.2
-     * @param   none
-     * @return  Bool value(matches or not)
-     */
-     TBool CheckSWVersionL();
-     
-    /**
-     * Start download
-     *
-     * @since   S60   v3.1
-     * @param   aParams     Package state params to be save in db
-     * @param   aPkgURL     URL
-     * @return  none
-     */
-    void DownloadL(TDownloadIPCParams aParams,const TDesC8& aPkgURL);
-
-
-    /**
-     * Start download which finishes with update
-     *
-     * @since   S60   v3.1
-     * @param   aParams     Package state params to be save in db
-     * @param   aPkgURL     URL
-     * @return  none
-     */
-    void DownloadAndUpdateL(TDownloadIPCParams aParams
-            ,const TDesC8& aPkgURL);
-
-
-
-    /**
-     * Start update
-     *
-     * @since   S60   v3.1
-     * @param   aParams     Package state params to be save in db
-     * @return  none
-     */    
-    void UpdateL( const TDownloadIPCParams& aParams );
-
-
-
-    /**
-     * Update, triggered by scheduler
-     *
-     * @since   S60   v3.1
-     * @param   aUpdate     Update details
-     * @return  none
-     */ 
-    void ScheduledUpdateL( TFotaScheduledUpdate aUpdate );
-
-    /**
-     * Delete swupd package
-     *
-     * @since   S60   v3.1
-     * @param   aPkgId  Package id
-     * @return  none
-     */    
-    void DeletePackageL ( const TInt aPkgId);
-
-
-
-    /**
-     * Get state of a swupd package
-     *
-     * @since   S60   v3.1
-     * @param   aPkgId  Package id
-     * @return  Package state
-     */       
-    TPackageState GetStateL( const TInt aPkgId);
-
-
-    /**
-     * Open a store to save swupd into
-     *
-     * @since   S60   v3.1
-     * @param   aMessage    containing client side chunk handle  
-     * @return  None
-     */       
-    void OpenUpdatePackageStoreL ( const RMessage2& aMessage );
-
-    /**
-     * Gets the downloaded and complete size of the update package
-     *
-     * @since   S60   v3.2
-     * @param   aPkgId    Package id
-     * @param	aDownloadedSize		size of download package in bytes
-     * @param	aTotalSize	size of the complete package in bytes
-     * @return  None
-     */       
-    void GetDownloadUpdatePackageSizeL (const TInt aPkgId, TInt& aDownloadedSize, TInt& aTotalSize);
-
-    /**
-     * Tries to resume the download.
-     *
-     * @since   S60   v3.2
-     * @param   aQueryUser	Whether to query user for resume?
-     * @return  None
-     */       
-	void TryResumeDownloadL(TBool aQueryUser);
-
-    /**
-     * Invoke Fota Monitory Service when the download gets suspended
-     *
-     * @since   S60   v3.2
-     * @return  None
-     */       
-	void InvokeFmsL();
-	
-    /**
-     * Cancels any outstanding request for resume notification
-     *
-     * @since   S60   v3.2
-     * @return  None
-     */       
-	void CancelFmsL();
-	
-    /**
-     * Sets the phone's startup reason. This is used by Fota Startup Pluggin to any decision.
-     *
-     * @since   S60   v3.2
-     * @param   aReason		Startup reason, either download interrupted
-     * @return  None
-     */       
-	void SetStartupReason(TInt aReason);
-	
-	/**
-	 * Shutdown DM UI application
-	 * @since	S60	 v3.2
-	 * @return 	None
-	 */
-	void ShutApp();
-	
-	/**
-	 * Stops ongoing download, if any.
-	 * @since	S60	 v3.2
-	 * @param	aReason		Reason for stopping the download.
-	 * @return 	None
-	 */
-	void StopDownload(TInt aReason);
-	
-    /**
-     * Read data from chunk
-     *
-     * @since   S60   v3.1
-     * @param   aSize   Size of data
-     * @param   aError error caught while writing data into FS
-     * @return  none
-     */
-    void ReadChunkL ( const TInt aSize ,TInt aError );
-
-
-    /**
-     * Check if swupd package fits into store
-     *
-     * @since   S60   v3.1
-     * @param   aSize   Size of swupd
-     * @return  Does it fit?
-     */
-    TBool IsPackageStoreSizeAvailableL ( const TInt aSize );
-
-
-    /**
-     * Get ids of present swupd packages
-     *
-     * @since   S60   v3.1
-     * @param   aPackageIdList  On return, ids will be here
-     * @return  None
-     */
-    void  GetUpdatePackageIdsL(TDes16& aPackageIdList);
-
-
-    /**
-     * Get time of last update
-     *
-     * @since   S60   v3.1
-     * @param   aTime       On return, time of last update
-     * @return  None
-     */
-    void GetUpdateTimeStampL (TDes16& aTime) ; 
-
-
-    /**
-     * Set download to be finalized. 
-     *
-     * @since   S60   v3.1
-     * @param   aDLState    Final state of the download
-     * @return  None
-     */
-    void  FinalizeDownloadL( const TPackageState& aDLState );
-
-
-    /**
-     * Set update to be finalized. 
-     *
-     * @since   S60   v3.1
-     * @param   None
-     * @return  None
-     */
-    void  FinalizeUpdateL();
-
-    /**
-     * Monitors for the battery in case of USB charger
-     *
-     * @since   S60   v3.2.3
-     * @param   aLevel - level of the battery charge to monitor
-     * @return  None
-     */
-    void MonitorBattery(TInt aLevel);
-
-    /**
-     * Finalize download
-     *
-     * @since   S60   v3.1
-     * @param   None
-     * @return  None
-     */
-    void  DoFinalizeDownloadL();
-
-
-    /**
-     * Finalize Update
-     *
-     * @since   S60   v3.1
-     * @param   None
-     * @return  None
-     */
-    void  DoFinalizeUpdateL();
-
-
-    /**
-     * Read update result file and report result back to DM server
-     *
-     * @since   S60   v3.1
-     * @param   None
-     * @return  None
-     */
-    void  DoExecuteResultFileL();
-    
-    /**
-     * Deletes the update result file
-     *
-     * @since   S60   v3.2
-     * @param   None
-     * @return  None
-     */
-    void  DoDeleteUpdateResultFileL();
-
-    /**
-    * Close syncml session
-    *
-    * @since   S60 v3.1
-    * @param none
-    * @return none
-    */
-    void DoCloseSMLSessionL();
-
-    /**
-     * Shutdown fotaserver, if there's no operations in progress (
-     * download,update)
-     *
-     * @since   S60   v3.1
-     * @param   None
-     * @return  Error
-     */
-    TInt TryToShutDownFotaServer();
-
-
-    /**
-     * Get reference to storageplugin. Load it, if not existing
-     *
-     * @since   S60   v3.1
-     * @param   None
-     * @return  Reference to storage
-     */
-    CFotaStorage*   StoragePluginL();
-
-    
-    /**
-     * Do cleanup for package
-     *
-     * @since   S60   v3.1
-     * @param   aPackageID Packageid
-     * @return  None
-     */
-    void GenericAlertSentL( const TInt aPackageID );
-
-
-    /**
-     * Create DM session to DM server (identified by profileid)
-     *
-     * @since   S60   v3.1
-     * @param   aProfileId  DM profile id
-     * @param   aIapid		IAP id. If not kerrnone, will be used instead
-     *						of profiles' IAP id.
-     * @return  none
-     */
-    void CreateDeviceManagementSessionL( TPackageState& aState );
-    
-    
-    /**
-     * Get profiles' data.
-     *
-     * @since   S60   v3.1
-     * @param   aSyncml     syncml session. must be open.
-     * @param   aProf 	    profile id.
-     * @param   aIapid      iapid 
-     * @param   aSrvAA      server alerted action
-     * @param   aUIJob      is current dm job started from ui
-     * @param	aSanVal		the SAN bit set by server for the DM Session
-     * @return  none
-     */    
-    void GetProfileDataL( RSyncMLSession* aSyncml,const TSmlProfileId aProf
-        , TInt& aIapId, TSmlServerAlertedAction& aSrvAA,TBool& aUIJob, TInt& aSanVal);
-
-	/**
-	 * Gets the EikonEnv object
-	 *
-	 * @since S60	v3.1
-	 * @param None
-	 * @return CEikonEnv
-	 */ 
-	CEikonEnv* GetEikEnv();
-
-
-	/**
-	 * Callback function to notify the network status
-	 *
-	 * @since S60	v3.2
-	 * @param Status of network connection
-	 * @return None
-	 */ 
-	void ReportNetworkStatus(TBool status);
-
-
-
-  /**
-	 * Get the software version of the device
-	 * @since S60	v3.2
-	 * @param s/w version 
-	 * @return error
-	 */
-	TInt GetSoftwareVersion(TDes& aVersion);
-	
-	/**
-	 * Incase of large object download failure
-	 * Updates the fota database state & reason information
-	 * @since S60	v3.2
-	 * @param None
-	 * @return None
-	 */
-	void UpdateDBdataL();
-
-    /**
-     * stores the client id who triggered the update
-     * @since S60   v3.2
-     * @param aClient, client Id
-     * @return None
-     */ 	
-	void SetInstallUpdateClientL(TInt aClient);
-	
-	/**
-	 * returns the client id,who triggered the update
-	 * @since S60   v3.2
-	 * @param None
-	 * @return TInt
-	 */ 
-	TInt GetInstallUpdateClientL();	
-	
-	
-	/**
-	 * Checks for IAP Id exists or not in commsdb
-	 * IAPId used for resuming the paused download
-	 * @since S60   v5.0
-	 * @param IapId
-	 * @return ETrue/EFalse
-	 */
-	TBool CheckIapExistsL(TUint32 aIapId);
-	
-    /**
-     * This method is called to check if dencryption needs to be performed.
-     */
-	TBool NeedToDecryptL(const TInt &aPkgId, TDriveNumber &aDrive);
-	
-    /**
-     * This method is called to start the decryption operation.
-     */
-	void DoStartDecryptionL();
-	
-    /**
-     * This method is called once the decryption operation is complete.
-     */
-    void HandleDecryptionCompleteL(TInt aResult, TInt aValue = 0);
-    
-    /**
-     * This method is called to check if encryption needs to be performed.
-     */
-    TBool NeedToEncryptL(TDriveNumber &aDrive);
-    
-    /**
-     * This method is called to start the encryption operation.
-     */
-    void DoStartEncryptionL();
-	
-    /**
-     * This method is called once the encryption operation is complete.
-     */
-	void HandleEncryptionCompleteL(TInt aResult, TInt aValue = 0);
-	
-    /**
-     * Gets the device encryption operation
-     */
-	TInt GetDEOperation();
-	
-    
-    /**
-     * Is server initialized? Must be public for session to use.
-     */
-    TBool iInitialized;
-
-    /**
-    * Whether Fota server should close or not
-    */
-    TBool iNeedToClose;
-    
-    /**
-     * handles notifier completion
-     */
-    CFotaDownloadNotifHandler*  iNotifHandler;
-
-public: // from  base classes
-
-    /**
-     * Creator
-     * Not own
-     */
-    CFotaSrvApp* iParentApp;
-
-    /**
-    * CreateServiceL. Creates session.
-    * @param    aServiceType
-    * @return   CApaAppServiceBase*
-    */
-    CApaAppServiceBase* CreateServiceL( TUid aServiceType ) const;
-    /**
-    * Handle syncml event
-    * @param    aEvent
-    * @param    aIdentifier
-    * @param    aError
-    * @param    aAdditionalData
-    * @return   none
-    */
-    void OnSyncMLSessionEvent(TEvent aEvent, TInt aIdentifier, TInt aError, TInt aAdditionalData) ;
-
-    /**
-     * Reference to client side chunk.  Swupd comes this way.
-     */
-    RChunk iChunk;
-
-
-    /**
-     * Used for package state saving.
-     */
-    CFotaDB* iDatabase;
-
-
-    /**
-     * Used for downloading.
-     */
-    CFotaDownload* iDownloader;
-
-
-    /**
-     * Used for starting update of fw.
-     */
-    CFotaUpdate* iUpdater;
-
-
-    /**
-     * Used for deleting download.
-     */
-    CPeriodic* iDownloadFinalizer;
-
-
-    /**
-     * Used for deleting update.
-     */
-    CPeriodic*          iUpdateFinalizer;
-
-
-    /**
-     * Used for reading result file.
-     */
-    CPeriodic*          iTimedExecuteResultFile;
-
-
-    /**
-     * Used for closing syncml session
-     */
-    CPeriodic* iTimedSMLSessionClose;
-
-    /**
-     * ConstructL
-     *
-     * @since   S60   v3.1
-     * @param   aFixedServerName    Name of this app server 
-     * @return  none
-     */    
-    virtual void ConstructL(const TDesC &aFixedServerName);
-
-protected: // from base classes
-
-
-    /**
-     * DoConnect. 
-     *
-     * @since   S60   v3.1
-     * @param   aMessage    IPC message
-     * @return  none
-     */
-    void DoConnect(const RMessage2& aMessage);
-
-
-    /**
-     * When last client disconnects, this is called.
-     *
-     * @since   S60   v3.1
-     * @param   none
-     * @return  none
-     */
-    void HandleAllClientsClosed();
-
-    
-private: // new functions
-
-
-    /**
-     * Latter part of constructing. It's ensured that parent fotaserver is 
-     * constructed only once, and child fotaserver is not constructed at all.
-     * Client fotaserver has a task of saving swupd as its only task. It should
-     * not update swupd states.
-     *
-     * @since   S60   v3.1
-     * @param   aMessage    Client process details
-     * @return  none
-     */
-    void ClientAwareConstructL( const RMessage2 &aMessage );
-
-
-    /**
-     * Loads storage plugin if not loaded.
-     *
-     * @since   S60   v3.1
-     * @param   none
-     * @return  none
-     */
-    void            LoadStoragePluginL ();
-
-
-    /**
-     * Unloads storage plugin.
-     *
-     * @since   S60   v3.1
-     * @param   none
-     * @return  none
-     */
-    void            UnLoadStoragePluginL ();
-
-
-
-/**
-	 * Resets the fota state
-	 * @since S60	v3.2
-	 * @param IPC params
-	 * @return None
-	 */
-	 
-	void ResetFotaStateL(const TDownloadIPCParams& aParams);
-	
-	/**
-	 * Starts network monitoring operaiton for defined interval and retries
-	 *
-	 * @since S60	v3.2
-	 * @param None
-	 * @return None
-	 */ 
-	void StartNetworkMonitorL();
-
-
-private: // Data
-
-
-    /**
-     * The state that iDownloader was in, when it called to be finalized.
-     */
-    TPackageState       iDLFinalizeState;
-
-    /**
-     * The state before sending generic alert.
-     */
-    TPackageState		iStoredState;
-
-
-    /**
-     * Storage class (plugin).
-     */
-    CFotaStorage*       iStorage;
-
-
-    /**
-     * Packageid of the swupd being stored. Used only by child fotaserver.
-     */
-    TInt                iStorageDownloadPackageId;
-
-
-    /**
-     * Destructor key of the storage plugin.
-     */
-    TUid                iStorageDtorKey;
-
-
-    /**
-     * Destructor key of the storage plugin.
-     */
-    RWriteStream*       iStorageStream;
-
-
-    /**
-     * File server session
-     */
-    RFs                 iFs;
-
-
-    /**
-     * Tries to periodically shut down fotaserver
-     */
-    CPeriodic*          iAppShutter;
-
-    /**
-     * Syncmlsession for creating dmsession
-     */
-    RSyncMLSession      iSyncMLSession;
-
-    /**
-     * Class that checks for network availability 
-     * 
-     */
-    CFotaNetworkRegStatus* iMonitor;
-
-    /**
-     * How many times to try dm session
-     */
-    TInt    iSyncMLAttempts;
-
-    /**
-     * sync job id
-     */
-    TSmlJobId iSyncJobId;
-
-    /**
-     * profile
-     */
-    TSmlProfileId iSyncProfile;
-
-    /**
-     * Reference to eikonenv. Used by other classes
-     * 
-     */
-    CEikonEnv*	iEikEnv;
-
-    /**
-     * To tell whether Generic Alert sending is being retried or not. This is checked before shutting down fota server
-     * 
-     */
-    TBool iRetryingGASend;
-
-    /**
-     * To tell whether network is available to send Generic Alert.
-     * 
-     */
-    TBool iNetworkAvailable;
-
-    /**
-     * The Fota Monitory Client object
-     */
-    RFMSClient	iFMSClient;
-    
-    /**
-     * For sending GA, this will set to fotastate's iapid
-     */
-    TInt iIapId;
-    /**
-     * Tells the session mode.
-     */
-    TInt iSessMode;
-    
-    /**
-     * Tells about who started resume.
-     */
-    TInt iUserResume;
-    
-    /**
-     * Tells which client triggered install update.
-     */
-    TInt iInstallupdClient;
-    
-    /**
-     * The pointer to encryption controller
-     */
-    CDevEncController *iDEController;
-    
-    /**
-     * Holds the storage drive of the package.
-     */
-    TDriveNumber iStorageDrive;
-    
-	};
-
-#endif 
-
-// End of File