--- a/fotaapplication/fotaserver/FotaServer/inc/FotaServer.h Thu Aug 19 10:44:50 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,875 +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 = 0x00000008;
-
-/** 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 );
-_LIT_SECURITY_POLICY_PASS(KAllowAllPolicy);
-
-//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