--- a/fotaapplication/fotaserver/inc/FotaServer.h Tue Aug 31 16:04:06 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,740 +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 <coemain.h>
-#include <s32file.h>
-#include <e32property.h>
-#include <SyncMLClient.h>
-#include <SyncMLClientDM.h>
-#include <hwrmpowerstatesdkpskeys.h>
-#include <SyncMLObservers.h>
-#include <devicedialogconsts.h>
-#include <hbsymbianvariant.h>
-#include <hbmainwindow.h>
-#include "fotaserverPrivateCRKeys.h"
-#include "FotaIPCTypes.h"
-#include "FotaDB.h"
-#include "fotaConst.h"
-#include "fotaupdate.h"
-#include "fmsclient.h" //The FMS Client header file
-#include "FotaSrvDebug.h"
-#include "fotadevicedialogobserver.h"
-
-/** If download is active this P&S key is set to ETrue, otherwise EFalse.
- * The key is owned by omadmappui**/
-const TUint32 KFotaServerActive = 0x0000008;
-#define __LEAVE_IF_ERROR(x) if(KErrNone!=x) {FLOG(_L("LEAVE in %s: %d"), __FILE__, __LINE__); User::Leave(x); }
-
-//Forward declarations
-class FotaFullscreenDialog;
-/** File that stores the firmware version at the start of download. This is in fota's private directory*/
-_LIT (KSWversionFile, "swv.txt");
-
-/** Time and the interval download finalizing retries*/
-const TInt KDownloadFinalizerWaitTime(1000000);
-
-/** Time interval between syncml session retry attempts*/
-const TInt KSyncmlSessionRetryInterval(60000000);
-
-/** Time and the interval between the fota shutdownload retries*/
-const TTimeIntervalMicroSeconds32 KFotaTimeShutDown(10000000);
-
-/** How many times generic alert sending should be tried in row. */
-const TInt KSyncmlAttemptCount = 3;
-
-/** How many times a download can be restarted when a non-resumable interrupt occurs. */
-const TInt KMaxDownloadRestartCount = 3;
-
-_LIT_SECURITY_POLICY_C1( KReadPolicy, ECapabilityReadDeviceData );
-_LIT_SECURITY_POLICY_C1( KWritePolicy, ECapabilityWriteDeviceData );
-_LIT_SECURITY_POLICY_PASS(KAllowAllPolicy);
-
-// FORWARD CLASS DECLARATION
-
-class CFotaUpdate;
-class CFotaSrvApp;
-class CFotaNetworkRegStatus;
-class DownloadManagerClient;
-class CFotaDownloadNotifHandler;
-/**
- * Fota server. Handles client requests. Starts download and/or update.
- *
- * This class is
- *
- * @lib fotaserver
- * @since S60 v3.1
- */
-NONSHARABLE_CLASS( CFotaServer ) : public CServer2,
- MSyncMLEventObserver,
- MfotadevicedialogObserver
- {
- friend class CFotaSrvSession;
- friend class CFotaUpdate;
-
-public:
-
- // Member functions
-
- static CFotaServer* NewInstance(HbMainWindow& mainwindow);
-
- /**
- * Destructor.
- */
- virtual ~CFotaServer();
-
-public:
-
- // All functions called from the session
- /**
- * 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,
- TFotaClient aRequester, TBool aSilent, TBool aUpdateLtr);
-
- /**
- * Pauses ongoing download
- *
- * @since S60 v3.1
- * @param none
- * @return none, can leave with system wide errors
- */
- void PauseDownloadL();
-
- /**
- * Start update
- *
- * @since S60 v3.1
- * @param aClient - the client which invoked the update
- * @return none, can leave with system wide errors
- */
- void TryUpdateL(TFotaClient aClient);
-
- /**
- * Update, triggered by scheduler
- *
- * @since S60 v3.1
- * @param aUpdate - Update details
- * @param aClient - the client which invoked the update
- * @return none, can leave with system wide errors
- */
- void ScheduledUpdateL(TFotaScheduledUpdate aUpdate, TFotaClient aClient);
-
- /**
- * Delete swupd package
- *
- * @since S60 v3.1
- * @param aPkgId - Package id
- * @return none, can leave with system wide errors
- */
- void DeletePackageL(const TInt aPkgId);
-
- /**
- * Get state of a swupd package
- *
- * @since S60 v3.1
- * @param aPkgId - Package id
- * @return Package state, can leave with system wide errors
- */
- TPackageState GetStateL(const TInt aPkgId);
-
- /**
- * Tries to resume the download.
- *
- * @since S60 v5.2
- * @param aClient the client which triggers resume
- * @param aSilentDl Whether to query user for resume?
- * @return None, can leave with system wide errors
- */
- void TryResumeDownloadL(TFotaClient aClient, TBool aSilentDl);
-
- /**
- * Get ids of present swupd packages
- *
- * @since S60 v3.1
- * @param aPackageIdList On return, ids will be here
- * @return None, can leave with system wide errors
- */
- void GetUpdatePackageIdsL(TDes16& aPackageIdList);
-
- /**
- * Get time of last update
- *
- * @since S60 v3.1
- * @param aTime On return, time of last update
- * @return None, can leave with system wide errors
- */
- void GetUpdateTimeStampL(TDes16& aTime);
-
- void GetCurrentFwDetailsL(TDes8& aName, TDes8& aVersion, TInt& aSize);
-
- /**
- * Do cleanup for package
- *
- * @since S60 v3.1
- * @param aPackageID Packageid
- * @return None
- */
- void ResetFotaStateL(const TInt aPackageID);
-
- /**
- * Set download to be finalized.
- *
- * @since S60 v3.1
- * @param aDLState Final state of the download
- * @return None, can leave with system wide errors
- */
- void FinalizeDownloadL();
-
- /**
- * Callback function to notify the network status
- *
- * @since S60 v3.2
- * @param Status of network connection
- * @return None
- */
- void ReportNetworkStatus(TBool status);
-
- //All user interface functions
-
- /**
- * Function to start the full screen dialog
- *
- * @since SF4
- * @param aSize - the full size of the download
- * @param aVersion - the version of the firmware upate
- * @param aName - the name of the firmware update
- * @return None
- */
- void StartDownloadDialog(const QString &aName, const QString &aVersion,
- const TInt &Size);
-
- /**
- * Function to update the full screen dialog with download progress
- *
- * @since SF4
- * @param aProgress - the download progress in percentage
- * @return None
- */
- void UpdateDownloadDialog(TInt aProgress);
-
- /**
- * Function to show any dialog within fota server
- *
- * @since SF4
- * @param dialogid -the dialog identifier
- * @return None
- */
- void ShowDialogL(TFwUpdNoteTypes aDialogid);
-
- /**
- * Function that handles all the user responses on full screen dialog
- *
- * @since SF4
- * @param aResponse - key response
- * @return None
- */
- void HandleFullScreenDialogResponse(TInt aResponse);
-
- /**
- * Function called from the fota update when battery condition changes
- *
- * @since SF4
- * @param aStatus - status of the battery, true if low, false if acceptable
- * @return None
- */
- void UpdateBatteryLowInfo(TBool aStatus);
-
- /**
- * Returns the full screen dialog pointer
- *
- * @since SF4
- * @param none
- * @return pointer to full screen dialog instance
- */
- FotaFullscreenDialog* FullScreenDialog();
-
- /**
- * Sets the phone's startup reason which will 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);
-
- void ConstructApplicationUI(TBool aVal);
- void SetServerActive(TBool aValue);
-
- void FinalizeUpdate();
-
-public:
- // member variables
-
- /**
- * The package state of the firmware update
- */
-
- TPackageState iPackageState;
-
- /**
- * Used for package state saving.
- */
- CFotaDB* iDatabase;
-
-
- TBuf8<KMaxFileName> iLastFwUrl;
-
-public:
- // from base classes
-
- /**
- * Handle syncml event
- * @param aEvent
- * @param aIdentifier
- * @param aError
- * @param aAdditionalData
- * @return none
- */
- void OnSyncMLSessionEvent(TEvent aEvent, TInt aIdentifier, TInt aError,
- TInt aAdditionalData);
-
- /**
- * Function that is called when any user action happens on the dialogs or full screen dialog
- *
- * @since SF4
- * @param response - key press
- * @return None
- */
- void HandleDialogResponse(int response, TInt aDialogid);
-
- //All finalizing functions
- /**
- * Finalize download
- *
- * @since S60 v3.1
- * @param None
- * @return None, can leave with system wide errors
- */
- void DoFinalizeDownloadL();
-
- /**
- * Read update result file and report result back to DM server
- *
- * @since S60 v3.1
- * @param None
- * @return None, can leave with system wide errors
- */
- void DoExecuteResultFileL();
-
- /**
- * Close syncml session
- *
- * @since S60 v3.1
- * @param none
- * @return None, can leave with system wide errors
- */
- void DoCloseSMLSessionL();
-
- /**
- * When called, will try to shut the server when possible.
- * This will use the timer to shut down.
- *
- * @since SF4
- * @param none
- * @return None
- */
- void StopServerWhenPossible();
-
- void ServerCanShut(TBool aParam);
-
- TBool DecrementDownloadRestartCount();
-
- void SetVisible(TBool aVisible);
-
-protected:
- // from base classes
-
- /**
- * Calls when a New session is getting created
- * @param aVersion
- * @param aMessage
- * @return CSession2*
- */
- CSession2* NewSessionL(const TVersion& aVersion,
- const RMessage2& aMessage) const;
-
- /**
- * DoConnect.
- *
- * @since S60 v3.1
- * @param aMessage IPC message
- * @return none
- */
- void DoConnect(const RMessage2& aMessage);
-
- void DropSession();
-
-private:
-
- /**
- * C++ default constructor.
- */
- CFotaServer(HbMainWindow& mainwindow);
-
- /**
- * ConstructL
- *
- * @since S60 v3.1
- * @param none
- * @return none
- */
- virtual void ConstructL();
-
- /**
- * 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);
-
- /**
- * Resets the fota state
- * @since S60 v3.2
- * @param IPC params
- * @return None
- */
-
- void ResetFotaStateToFailL();
-
- /**
- * Starts network monitoring operaiton for defined interval and retries
- *
- * @since S60 v3.2
- * @param None
- * @return None
- */
- void StartNetworkMonitorL();
-
- /**
- * Creates the disk reservation as set in the configuration
- *
- * @since SF4
- * @param
- * @return None
- */
- void CreateDiskReservation();
-
- /**
- * Deletes the disk reservation in the given absolute path
- *
- * @since SF4
- * @param
- * @return None
- */
- void DeleteDiskReservation(TDesC& path);
-
- /**
- * Sets the appropriate access point id for the download
- *
- * @since SF4
- * @param none
- * @return None, can leave with system wide errors.
- */
- void SetIapToUseL();
-
- /**
- * 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();
-
- /**
- * Check s/w version with the current version
- *
- * @since S60 v3.2
- * @param none
- * @return Bool value(matches or not)
- */
- TBool CheckSWVersionL();
-
- /**
- * 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 the software version of the device
- * @since S60 v3.2
- * @param s/w version
- * @return error
- */
- TInt GetSoftwareVersion(TDes& aVersion);
-
- /**
- * 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);
-
- /**
- * Checks if the drive is busy due to encryption
- *
- * @since SF4
- * @param None
- * @return true, if busy, else false
- */
- TBool IsDeviceDriveBusyL();
-
- /**
- * The downloader manager object
- *
- * @since SF4
- * @param
- * @return None
- */
- DownloadManagerClient* DownloaderL();
-
- /**
- * Sets the update requester
- *
- * @since SF4
- * @param aRequester - the requester of firmware update
- * @return None
- */
- void SetUpdateRequester(TFotaClient aRequester);
-
- /**
- * Gets the update requester
- *
- * @since SF4
- * @param
- * @return None
- */
- TFotaClient GetUpdateRequester();
-
- /**
- * Reports firmware update status to the requester
- *
- * @since SF4
- * @param astate - the package state that has the status
- * @return None
- */
- void ReportFwUpdateStatusL(TPackageState& aState);
-
- /**
- * Loops for the battery status whilst full screen dialog is open
- *
- * @since SF4
- * @param aBatteryLevel - the battery level
- * @return None
- */
- void LoopBatteryCheckL(TBool aBatteryLevel);
-
- /**
- * Shows the full screen dialog
- *
- * @since SF4
- * @param aType - type of the dialog
- * @return None
- */
- void ShowFullScreenDialog(TInt aType);
-
- /**
- * Swaps the fota process from background to foreground
- *
- * @since SF4
- * @param aState - true will bring to foreground, false to background
- * @return None
- */
- //void swapProcess(TBool aState);
-
- void ResetCounters();
-
- TBool IsUserPostponeAllowed();
-
- void DecrementUserPostponeCount();
-
- void WakeupServer();
-
-private:
- // Data
-
-private:
- // member variables
- /**
- * Is server initialized?
- */
- TBool iInitialized;
-
- /**
- * The download manager client
- */
- DownloadManagerClient* 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;
-
- /**
- * 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;
-
- /**
- * 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;
-
- /**
- * Holds the storage drive of the package.
- */
- TDriveNumber iStorageDrive;
-
- /**
- * The session count to fota server.
- */
- static TInt iSessionCount;
-
- /**
- * The full screen dialog
- */
- FotaFullscreenDialog *iFullScreenDialog;
-
- /**
- * The notifier params to the dialogs
- */
- CHbSymbianVariantMap * iNotifParams;
-
- CFotaDownloadNotifHandler * iNotifier;
- /**
- * Can the server shut?
- */
- TBool iServerCanShut;
-
- /**
- * Is async operation requested?
- */
- TBool iAsyncOperation;
-
- TInt iDialogId;
-
- TBool iConstructed;
-
- HbMainWindow& iMainwindow;
- };
-
-#endif
-
-// End of File