diff -r c8e5c3d81b42 -r 39aa16f3fdc2 fotaapplication/fotaserver/FotaServer/inc/FotaServer.h --- 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 -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#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