--- a/fotaapplication/fotaserver/FotaServer/inc/fotadownload.h Tue Jul 13 09:26:23 2010 +0530
+++ /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 <DownloadMgrClient.h>
-#include <etelpckt.h> //To read GSM Error codes from symbian
-#include <exterror.h> //To read GSM Error codes from symbian
-#include <wlanerrorcodes.h> //To read WLAN Error codes from s60
-#include <AknWaitDialog.h>
-#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