diff -r 13d7c31c74e0 -r b183ec05bd8c fotaapplication/fotaserver/FotaServer/inc/fotadownload.h --- a/fotaapplication/fotaserver/FotaServer/inc/fotadownload.h Thu Aug 19 10:44:50 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,608 +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: Swupd downloader. -* -*/ - - - -#ifndef ___DOWNLOADER_H_ -#define ___DOWNLOADER_H_ - -#include -#include //To read GSM Error codes from symbian -#include //To read GSM Error codes from symbian -#include //To read WLAN Error codes from s60 -#include -#include "FotaServer.h" -#include "FotaSrvDebug.h" -#include "FotaDLProgressDlg.h" - -// FORWARD DECLARATIONS -class CFotaServer; -class CAknWaitDialog; -class CFotaDownloadNotifHandler; -class CFotaNetworkRegStatus; //To know the network connectivity status while resuming suspended download -// CONSTANTS - // from coderror.h -#define KErrCodInvalidDescriptor -1000 -#define KErrCodInsufficientSpace -1001 -#define KErrCodWapConnectionDropped -20041 - -// If download times out, it must be tried again -#define KFotaDownloadTimeoutRestartCount 5 - -// For reading connecting resource from DM UI -_LIT( KSCPResourceFilename, "\\Resource\\Apps\\NsmlDMSync.rsc" ); -_LIT( KDriveZ,"z:" ); -_LIT( KDDDirPath, "c:\\system\\fota\\" ); -_LIT( KDDFilename, "fotadownload.dd" ); - -//Constants when SAN Bits are set -enum { - ESanNotSpecified=0, - ESanSilent, - ESanInformative, - ESanInteractive -}; - -//Contants when SAN is Off. It refers to Accepted state in DM Profile Settings -enum { - EAcceptedNo=0, - EAcceptedYes -}; - -// Constants for KSilentOmaDlUIBehavior cenrep key - enum { - EOmacdOffdlprgOff=0, //OMA CD View = Off, Download Progress Bar = Off - EOmacdOffdlprgOn, //OMA CD View = Off, Download Progress Bar = On - EOmacdOndlprgOff, //OMA CD View = On, Download Progress Bar = Off - EOmacdOndlprgOn, //OMA CD View = On, Download Progress Bar = On - EChooseFromSan //Choose behavior from SAN bits set during DM Session - }; -/** - * Downloader - * - * Starts download and observes it. - * - * @lib fotaserver - * @since S60 v3.1 - */ -NONSHARABLE_CLASS (CFotaDownload ) - : public CActive - , MHttpDownloadMgrObserver - , MDLProgressDlgObserver - { - friend class CFotaDownloadNotifHandler; - - - enum TFotaDLProgress - { - EStarted, - EDescriptorDownloaded, - ESizeChecked - }; - - -public: // new functions - - CFotaDownload (); - - virtual ~CFotaDownload (); - - static CFotaDownload* NewL (CFotaServer* aServer); - -public: // Functions from base classes: - - - /** - * Schedule update to be carried out after download - * - * @since S60 v3.1 - * @param aButtonId Button pressed - * @return None - */ - TBool HandleDLProgressDialogExitL( TInt aButtonId ); - -protected: // Functions from base classes: - - /** - * Handle user action - * - * @since S60 v3.1 - * @param None - * @return None - */ - virtual void RunL(); - - - /** - * Handle leaving Runl - * - * @since S60 v3.1 - * @param aError error code - * @return Error code - */ - virtual TInt RunError(TInt aError); - - - /** - * Handle cancel of active object - * - * @since S60 v3.1 - * @param none - * @return none - */ - void DoCancel(); - -public: - - - /** - * Handle Download manager event - * - * @since S60 v3.1 - * @param aDownload download - * @param aEvent event - * @return none - */ - virtual void HandleDMgrEventL( RHttpDownload& aDownload - , THttpDownloadEvent aEvent ); - - - /** - * Handle Download manager event - * - * @since S60 v3.1 - * @param aDownload download - * @param aEvent event - * @return none - */ - void DoHandleDMgrEventL( RHttpDownload* aDownload - ,THttpDownloadEvent aEvent ); - - - /** - * Start download of swupd - * - * @since S60 v3.1 - * @param aParams download parameters - * @param aPkgURL Url of swupd - * @param aUpdateAfterDownload Is update needed - * @param aIapid Iap - * @param aRestartDownload Is this a retry download (counter)? - * If yes, don't show descriptor. - * @return none - */ - void DownloadL(TDownloadIPCParams aParams,const TDesC8& aPkgURL - ,TBool aUpdateAfterDownload,const TInt aIapid=KErrNotFound - ,const TInt aRestartDownload=0 ); - - - /** - * Cancel - * - * @since S60 v3.1 - * @param aCancelProgressBar Cancel progress bar also? - * @return none - */ - void CancelDownload( const TBool aCancelProgressBar ); - - /** - * Tries to resume any suspended fota download by quering the user. When the DM session is - * Silent, this method directly starts resuming of download by calling ResumeDownloadL. - * - * @since S60 v3.2 - * @param aUserInitiated Is user initiated resume? - * @return none - */ - void TryResumeDownloadL(TBool aUserInitiated); - - /** - * Resumes any suspended fota download. Firstly, it retrieves the RHttpDownload download object from Download Manager - * and then performs the following - - * - sets the IAP ID to use - * - checks whether the connection is possible with that IAP ID - * - sets download ui behavior - * - * @since S60 v3.2 - * @return none - */ - void ResumeDownloadL(); - /** - * Finds whether the download is resumable or not. - * - * @since S60 v3.2 - * @return ETrue if download is resumable, else EFalse. - */ - TBool IsDownloadResumable(); - - /** - * Finds whether Fota Monitory Service is enabled or not. - * - * @since S60 v3.2 - * @return ETrue if FMS is enabled, else EFalse. - */ - TBool IsFMSEnabled(); - - /** - * Sets the download activity state to the P&S Key used to sync with DM UI. - * - * @since S60 v3.2 - * @param aValue ETrue when download is active, else EFalse. - * @return None - */ - void SetDownloadActive(TBool aValue); - - /** - * Returns the download activity state - * - * @since S60 v3.2 - * @return aValue ETrue when download is active, else EFalse. - */ - - TBool IsDownloadActive(); - - /** - * Starts to suspend the ongoing download - * - * @since S60 v3.2 - * @param aReason Reason to suspend the download. Value is one of RFotaEngineSession::TResult. - * @param aSilent Is suspend operation to be silent? - * @return None - */ - void RunDownloadSuspendL(const TInt aReason, TBool aSilent=EFalse); - - /** - * Starts to cancel the ongoing download - * - * @since S60 v3.2 - * @param aReason Reason to cancel the download. Value is one of RFotaEngineSession::TResult. - * @param aSilent Is cancel operation to be silent? - * @return None - */ - void RunDownloadCancelL(const TInt aReason, TBool aSilent=EFalse); - - /** - * Should update be started after download completes - */ - TBool iUpdateAfterDownload; - - /** - * Download is to be restarted. (counter) - */ - TInt iRestartCounter; - - /** - * Download state - */ - TPackageState iDLState; - - - /** - * Download URL - */ - HBufC8* iUrl; - - - - -private: - - - /** - * Launch notifier. Also used to end download silently. - * - * @since S60 v3.1 - * @param aNotetype Notetype - * @param aIntParam int param - * @param aMemoryneeded How much disk space needed for download - * @param aFinishOnly finish only, do not launch notifier - * @return none - */ - - void LaunchNotifierL( const TSyncMLFwUpdNoteTypes aNotetype - ,const TInt aIntParam - ,const TInt aMemoryNeeded - ,TBool aFinishOnly=EFalse ); - - /** - * Reads the download variations from the Cenrep keys into instance variables. - * They include - Fota Suspend & Resume feature state (on/off) & - * Fota Monitory Service feature state (on/off) - * - * @since S60 v3.2 - * @return none - */ - void CheckDownloadVariations(); - - /** - * Retrieves the RHttpDownload object from Download Manager for the suspended download. - * Since concurrent downloads are not possible, there will be always zero or one suspended download. - * - * @since S60 v3.2 - * @return RHttpDownload object. If NULL, it means that there is no suspended download or the retrieval has fails. - */ - RHttpDownload* RetrieveDownloadL(); - - /** - * Sets the IAP Id to use during download. The same API is used for fresh or resuming download. - * During resuming of download, the selection of IAP logic varies as below: - * 1. If IAP is always ask in DM profile, uses the earlier set during FMS trigger - * 2. If IAP is always ask in DM profile, query user for IAP during user trigger - * 3. If IAP has changed in DM profile after suspend, use the newer one during resume - * - * @since S60 v3.2 - * @param aParams contains the download operation details - * @param aIapid Out param, the IAP Id is set here. - * @return None - */ - void SetIapToUseL(TPackageState aParams,const TInt aIapid); - - /** - * Sets the Download UI behavior for fresh or resuming download. - * - * @since S60 v3.2 - * @param aFreshDL ETrue if the download is fresh, else EFalse. - * @return None - */ - void SetDownloadUiBehavior(TBool aFreshDL); - - /** - * Creates a fresh download - * - * @since S60 v3.1 - * @param - * @return none - */ - void CreateDownloadL(); - /** - * SetDLResultdlErrorId Set the appropriate error codes. - * - * @since S60 v5.0 - * @param adlErrorId error id from DlMgr - * @param asysErrorId error id from system - * @return none - */ - void SetDLResultdlErrorId( THttpDownloadMgrError adlErrorId, TInt32 asysErrorId); - - /** - * ReSetDownloadL Reset the Fota state to Download failed - * - * @since S60 v5.0 - * @param atoresetdl Bool value if ETrue the set the state to Download Failed - * @return none - */ - void ReSetDownloadL(TBool atoresetdl); - - /** - * DetermineUISANOFF Determine UI behavior when SAN is OFF - * - * @since S60 v5.0 - * @param aBehavior behavior depending upon whether SAN is supported or not - * @return none - */ - void DetermineUISANOFF(TInt aBehavior); - - /** - * DetermineUISANOFF Determine UI behavior when SAN is OFF - * - * @since S60 v5.0 - * @param aBehavior behavior depending upon whether SAN is supported or not - * @return none - */ - void DetermineUISANON(TInt aBehavior); - /** - * Reference to fotaserver. - * Not own - */ - CFotaServer* iFotaServer; - - /** - * Reference to download mgr. - */ - RHttpDownloadMgr iDownloadMgr; - - /** - * The download object for the current download. - */ - RHttpDownload* iDownload; - - /** - * The downloaded content size in bytes. - */ - TInt iDownloadedContentSize; - - /** - * Download progress dialog. - */ - CFotaDLProgressDlg* iDLProgressDlg; - - /** - * Content size received in previous event - */ - TInt iPreviousContentSize; - - /** - * handles notifier completion - */ - CFotaDownloadNotifHandler* iNotifHandler; - - - /** - * Indicates that this download should be reset. (could be inclded in progress) - */ - TBool iDLNeedsReset; - - /** - * Progress state. - */ - TFotaDLProgress iDLProgress; - - /** - * Showing OMA Content Descriptor - */ - TBool iShowOMACDUI; - - /** - * Showing Progress bar - */ - TBool iShowDLPrgUI; - - /** - * Is download resumable? - */ - TBool iDownloadResumable; - - /** - * Is Fota Monitory service enabled? - */ - TBool iFMSEnabled; - - /** - * Is Fota download active? - */ - TBool iDownloadActive; - /** - * Iap id to be used in download - */ - TInt iIapid; - - /** - * Is download fresh? - */ - TBool iFreshDL; - - /** - * Is user initiated resume? - */ - TBool iUserInitiatedResume; - - /** - * Is fota operation started by user? - */ - TBool iIsjobStartedFromUI; - - /** - * Value of SAN bit set by the remote Server - */ - TInt iSanValue; - - /** - * Is suspend/cancel of download operation to be silent? - */ - TBool iSilentOpn; - - /** - * to check whether downlaod is finalized or not - */ - TBool iDownloadFinalized; - /** - * Class that checks for network availability - */ - CFotaNetworkRegStatus* iMonitor; - - }; - - - - - -NONSHARABLE_CLASS ( CFotaDownloadNotifHandler ) - : public CActive - { -public: // new functions - static CFotaDownloadNotifHandler* NewL (CFotaDownload* aDownload); - - CFotaDownloadNotifHandler(); - - ~CFotaDownloadNotifHandler(); - /** - * Handle user action - * - * @since S60 v3.1 - * @param None - * @return None - */ - virtual void RunL(); - - - /** - * Handle leaving Runl - * - * @since S60 v3.1 - * @param aError error code - * @return Error code - */ - virtual TInt RunError(TInt aError); - - - /** - * Handle cancel of active object - * - * @since S60 v3.1 - * @param none - * @return none - */ - void DoCancel(); - - /** - * Shows notifier and/or ends download - * - * @since S60 v3.1 - * @param aNotetype type of the note as defined in syncmlnotifier - * @param aIntParam Generic parameter, defined in syncmlnotifier - * @param aMemoryNeeded Amount of disk space needed. Only one notifier - * type consumes this. - * @param aFinishOnly Do not show notifier, finish download only - * @return none - */ - void LaunchNotifierL( const TSyncMLFwUpdNoteTypes aNotetype - ,const TInt aIntParam - ,const TInt aMemoryNeeded - ,TBool aFinishOnly=EFalse ); - - /** - * Is any notifier displayed? - * - * @since S60 v3.2 - * @param none - * @return ETrue if yes, otherwise EFalse - */ - TBool IsOpen(); -private: - - CFotaDownload* iDownload; - - /** - * Notifier for showing notes - */ - RNotifier iNotifier; - - /** - * Notifier input parameters - */ - TSyncMLFwUpdNotifParams iNotifParams; - - /** - * Notifier response - */ - TSyncMLFwUpdNotifRetValPckg iDummyResponsePckg; - - - }; - - - -#endif \ No newline at end of file