fotaapplication/fotaserver/FotaServer/src/FotaServer.cpp
branchRCL_3
changeset 25 b183ec05bd8c
parent 24 13d7c31c74e0
child 26 19bba8228ff0
--- a/fotaapplication/fotaserver/FotaServer/src/FotaServer.cpp	Thu Aug 19 10:44:50 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,2592 +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:   Fota server update and download functionality 
-*
-*/
-
-
-
-// INCLUDE FILES
-#include <aknenv.h>
-#include <apgtask.h>
-#include <apgwgnam.h>
-#include <schtime.h>
-#include <csch_cli.h>
-#include <e32property.h>
-#include <nsmldmconst.h>
-#include <cmmanager.h>
-#include <cmconnectionmethod.h>
-#include <DevManInternalCRKeys.h>
-#include <nsmlconstants.h>
-#include <centralrepository.h>
-#include <sysversioninfo.h>
-#include "FotaSrvApp.h"
-#include "FotaServer.h"
-#include "FotaSrvDebug.h"
-#include "FotasrvSession.h"
-#include "fotaConst.h"
-#include "nsmldmtreedbclient.h"
-#include "fotaserverPrivatePSKeys.h"
-#include "FotaNetworkRegStatus.h"
-_LIT(KSizePass, "contentsize");
-#include "DevEncController.h"
-#define __LEAVE_IF_ERROR(x) if(KErrNone!=x) {FLOG(_L("LEAVE in %s: %d"), __FILE__, __LINE__); User::Leave(x); }
-// ============================= LOCAL FUNCTIONS =============================
-
-// ---------------------------------------------------------------------------
-// ToDesC16LC
-// Converts to 16bit desc
-// ---------------------------------------------------------------------------
-HBufC* ToDesC16LC( const TDesC8& a )
-    {
-    HBufC* bf = HBufC::NewLC( a.Length() );
-    bf->Des().Copy(a);
-    return bf;
-    }
-// ---------------------------------------------------------------------------
-// GetPredefinedNodeL
-// function to get preconfigured node for FUMO
-// ---------------------------------------------------------------------------
-void GetPredefinedNodeL(TDes8& aNode)
-	{
-	FLOG(_L("GetPredefinedNodeL() Begin"));
-    CRepository* centrep( NULL);
-	aNode.Zero();
-   	centrep = CRepository::NewLC( TUid::Uid(0x101F9A0A) );
-
-    if ( centrep )
-	    {
-	    FLOG(_L("centralrepository found End"));
-    	TFullName temp;
-		
-    	if (centrep->Get( KDevManFUMOPredefinedNodes, temp )==KErrNone && temp.Length() )
-			{
-			temp.Trim();
-			aNode.Copy(temp);
-			}
-		CleanupStack::PopAndDestroy(centrep);
-	    }
-	FLOG(_L("GetPredefinedNodeL() End"));	    
-	}
-// ---------------------------------------------------------------------------
-// DeleteFUMOTreeL
-// function to get preconfigured node for FUMO
-// ---------------------------------------------------------------------------
-void DeleteFUMOTreeL ()
-    {
-    FLOG(_L("DeleteFUMOTreeL() Begin"));
-    const TUint32 KNSmlFotaAdapterUid = 0x101F9A09;
-    _LIT8( KNSmlFumoPath, "FUMO" );
-    _LIT8( KNSmlFumoSeparator, "/" );
-    const TInt KGranularity = 10;
-    TBuf8<KMaxFullName> temp;
-	GetPredefinedNodeL(temp);
-    RNSmlDMCallbackSession session;
-    User::LeaveIfError(session.Connect());
-    CleanupClosePushL(session);
-    
-    CBufBase *emptyList = CBufFlat::NewL(0);
-    CleanupStack::PushL(emptyList);
-    CArrayFixFlat <TSmlDmMappingInfo>* UriSegList;
-    UriSegList = new (ELeave) CArrayFixFlat <TSmlDmMappingInfo> (KGranularity);
-    
-    CleanupStack::PushL(UriSegList);
-			
-    session.GetUriSegListL(KNSmlFotaAdapterUid,KNSmlFumoPath,*UriSegList);
-    
-    for ( TUint16 i=0;i<UriSegList->Count();i++)
-        {
-        	if (temp.Length() && UriSegList->At(i).iURISeg.Find( temp ) != KErrNotFound)
-            {
-              FLOG(_L("DeleteFUMOTreeL predefined match =%S"), &temp);
-              continue;
-            }
-       
-       	TBuf8<KMaxFullName> tempFumo;
-       	tempFumo.Append(KNSmlFumoPath);
-       	tempFumo.Append(KNSmlFumoSeparator);
-       	tempFumo.Append(UriSegList->At(i).iURISeg);
-       	FLOG(_L("DeleteFUMOTreeL() call update mapping info for node %S"),&tempFumo);
-        session.UpdateMappingInfoL(KNSmlFotaAdapterUid,tempFumo,*emptyList);
-        
-        }
-    // session.UpdateMappingInfoL(KNSmlFotaAdapterUid,KNSmlFumoPath,*emptyList);
-	CleanupStack::PopAndDestroy(UriSegList); 
-    CleanupStack::PopAndDestroy(emptyList); 
-    CleanupStack::PopAndDestroy(&session); //session
-    FLOG(_L("DeleteFUMOTreeL() End"));
-    }
-
-// ---------------------------------------------------------------------------
-// CFotaServer::GetProfileDataL
-// ---------------------------------------------------------------------------
-void CFotaServer::GetProfileDataL( RSyncMLSession* aSyncml
-    ,const TSmlProfileId aProf, TInt& aIapId, TSmlServerAlertedAction& aSrvAA
-    ,TBool& aUIJob, TInt& aSanVal)
-	{
-    FLOG(_L("CFotaServer::GetProfileDataL prof %d"),aProf);
-    __ASSERT_ALWAYS( aSyncml, User::Panic(KFotaPanic, KErrArgument) );
-    __ASSERT_ALWAYS( aSyncml->Handle(), User::Panic(KFotaPanic, KErrBadHandle) );
-    // GET IAP FROM PROFILE ----------------------------------------------
-    TSmlJobId               jobid( KErrNotFound );
-    TInt                    jobidFromUI( KErrNotFound );
-    RSyncMLDevManProfile    smlprof;
-    RArray<TSmlTransportId> connections;
-    TSmlTransportId         transport;
-    RSyncMLConnection       connection;
-                   
-    CleanupClosePushL(smlprof);
-    CleanupClosePushL(connections);
-    CleanupClosePushL(connection);
-    FLOG(_L("[FotaServer]   1"));
-    
-    FLOG(_L("[FotaServer]   1.1 opening syncml \
-                        profileid %d "), aProf);
-    smlprof.OpenL(*aSyncml, aProf, ESmlOpenRead);
-    FLOG(_L("[FotaServer]  1.1"));
-    smlprof.ListConnectionsL(connections);
-    FLOG(_L("[FotaServer]  1.3"));
-    transport = connections[0];
-    connection.OpenL(smlprof,transport);
-    TBuf8<20> iapid2 = connection.GetPropertyL ( KNSmlIAPId );
-    TLex8 iapid3(iapid2);
-    iapid3.Val(aIapId);
-
-    // 1. Profile's "accepted" field.
-    aSrvAA = smlprof.SanUserInteraction ();
-    FLOG(_L("[FotaServer]  1.4 \
-                    SanUserInteraction:%d"),aSrvAA );
-
-    // 2. Has job been started from omadmappui. That is, did user start the job
-    TSmlUsageType dmusagetype(ESmlDevMan);
-    aSyncml->CurrentJobL( jobid,dmusagetype );
-    RProperty::Get( TUid::Uid(KOmaDMAppUid), KNsmlCurrentJobId, jobidFromUI);
-    aUIJob = ( jobidFromUI == jobid && jobid!=KErrNotFound );
-    
-    aSanVal = KErrNotFound; 
-    if ( aUIJob )
-    	{
-    	//First for not server alert or SAN not supported value is -1
-    	RProperty::Get( TUid::Uid(KOmaDMAppUid), KNsmlSanUIMode, aSanVal);
-    	if ( aSanVal != -1 ) //SAN Supported
-    	    {
-   	    	aUIJob = 0;
-    	    }
-    	}
-    FLOG(_L("  jobidFromUI: %d jobid: %d, aUIJob: %d, aSanVal: %d"),jobidFromUI,jobid,aUIJob,aSanVal);
-    CleanupStack::PopAndDestroy (&connection); 
-    CleanupStack::PopAndDestroy (&connections);
-    CleanupStack::PopAndDestroy (&smlprof); 
-	}
-
-// --------------------------------------------------------------------------
-// CreateDeviceManagementSessionL       
-// Creates DM session 
-// --------------------------------------------------------------------------
-void CFotaServer::CreateDeviceManagementSessionL( TPackageState& aState )
-    {
-    FLOG(_L("[cfotasever]   CreateDeviceManagementSessionL dms >> profid %d\
-    %d counts left ,sml handle %d, iNetworkAvailable=%d"), aState.iProfileId, aState.iSmlTryCount 
-    , iSyncMLSession.Handle(),iNetworkAvailable);
-	
-    SetStartupReason(EFotaPendingGenAlert);
-
-	if (!iNetworkAvailable)
-		{
-		iRetryingGASend = ETrue;
-		iStoredState = aState;
-		StartNetworkMonitorL();
-		}
-	else 
-		{
-
-	    TBool dbAlreadyOpen = iDatabase->IsOpen();
-	    TBool triesLeft( EFalse );
- 		
- 		iNetworkAvailable = EFalse; // to check network again when GA is sent next time
- 		
-	    if ( iSyncMLSession.Handle() )
-	        {
-	        User::Leave( KErrAlreadyExists );
-	        }
-
-	    if ( !dbAlreadyOpen ) iDatabase->OpenDBL();
-	    // There is still tries left
-	    if ( aState.iSmlTryCount > 0 )
-	        {
-	        triesLeft = ETrue;
-	        FLOG(_L(" decrementing the retry count"));
-	        aState.iSmlTryCount = aState.iSmlTryCount - 1;
-	        iDatabase->SetStateL( aState, KNullDesC8, EFDBSmlTryCount );
-	        }
-	    // out of tries, set state to idle
-	    else
-	        {
-	        triesLeft = EFalse;
-	        FLOG(_L("   out of tries, resetting pkg state"));
-	        
-	        SetStartupReason(EFotaDefault);
-	        aState.iState = RFotaEngineSession::EIdle;
-	        aState.iResult = KErrNotFound;
-	        iDatabase->SetStateL( aState, KNullDesC8, EFDBState|EFDBResult );
-	        }
-	    if ( !dbAlreadyOpen ) iDatabase->CloseAndCommitDB();
-
-	    if ( triesLeft )
-	        {
-	        TInt iapid;
-	        TSmlServerAlertedAction tmp;
-	        TBool                   tmp2;
-	        TInt					tmp3;
-	        iSyncMLSession.OpenL(); 
-	        GetProfileDataL( &iSyncMLSession,aState.iProfileId,iapid,tmp,tmp2,tmp3);
-	        FLOG(_L("Using IAP: %d to send GA"),iapid);
-	        FLOG(_L("From Db Using IAP: %d to send GA"),aState.iIapId);
-	        RSyncMLDevManJob    dmJob;
-	        
-	        RProperty::Define(KPSUidNSmlSOSServerKey,KNSmlDMSilentJob,RProperty::EInt,KAllowAllPolicy,KWritePolicy);
-	        TInt r2=RProperty::Set(KPSUidNSmlSOSServerKey,KNSmlDMSilentJob,ESilent);
-			FLOG(_L("CFotaServer::CreateDeviceManagementSessionL KNSmlDMSilentJob set err %d"),r2);
-	        TBuf<10> genalertap,temp;
-	        genalertap.Zero();
-	        temp.Zero();	  
-	        genalertap.Append(KNSmlDMJobIapPrefix);
-	        temp.Num(aState.iIapId);//Decimal Iap
-	        if( temp.Length() <= KNSmlHalfTransportIdLength && 
-	            aState.iIapId > KErrNotFound && CheckIapExistsL(aState.iIapId) )
-	        	{
-	        	genalertap.AppendFill('0',KNSmlHalfTransportIdLength-temp.Length());
-	        	genalertap.Append(temp);
-	        	TLex gavalue(genalertap);
-	        	gavalue.Val(iIapId);
-	        	dmJob.CreateL( iSyncMLSession, aState.iProfileId,iIapId);	
-	        	iSyncMLAttempts = KSyncmlAttemptCount;
-	        	}
-	        else 
-	        	{
-	        	iSyncMLAttempts = 0;
-	        	dmJob.CreateL( iSyncMLSession, aState.iProfileId);
-	        	}
-
-			// If there's no iapid defined, sml will pop up connection dialog.
-			// In that case, only one connection attempt is allowed.
-	        iSyncJobId   = dmJob.Identifier();
-	        iSyncProfile = aState.iProfileId;
-	        dmJob.Close();
-	        iSyncMLSession.RequestEventL( *this ); 
-	        }
-	}
-
-    FLOG(_L("[cfotasever]   CreateDeviceManagementSessionL dms << profid %d")
-                            ,aState.iProfileId);
-    }
-
-
-// ============================= MEMBER FUNCTIONS ============================
-
-// --------------------------------------------------------------------------
-// CFotaServer::CFotaServer()   
-// --------------------------------------------------------------------------
-//
-CFotaServer::CFotaServer() : iInitialized(EFalse), iNeedToClose(0), iParentApp(0)
-, iDatabase(0),iDownloader(0), iUpdater(0)
- , iDownloadFinalizer(0), iUpdateFinalizer(0), iTimedExecuteResultFile(0)
- , iTimedSMLSessionClose(0), iStorage(0), iAppShutter(0), iMonitor (NULL), iSyncJobId(-1), iRetryingGASend (EFalse), iNetworkAvailable (EFalse)
- , iIapId(KErrNotFound),iSessMode(0),iUserResume(KErrNotFound), iInstallupdClient(EFalse), iDEController(NULL)
-	{
-    RProcess pr; TFullName fn = pr.FullName();  TUint prid = pr.Id();
-	FLOG(_L( "CFotaServer::CFotaServer process(id %d)%S. this 0x%x"),prid,&fn
-        ,this);
-
-	}
-
-
-// --------------------------------------------------------------------------
-// CFotaServer::DoExecuteResultFileL
-// Interprets result of update (file update.resp)
-// --------------------------------------------------------------------------
-//
-void CFotaServer::DoExecuteResultFileL()
-    {
-    FLOG(_L("CFotaServer::DoExecuteResultFileL() >>"));
-
-    if ( iTimedExecuteResultFile ) 
-        {
-        iTimedExecuteResultFile->Cancel();
-        delete iTimedExecuteResultFile;
-        iTimedExecuteResultFile = NULL;
-        }
-    iUpdater = CFotaUpdate::NewL(this);
-    iUpdater->ExecuteUpdateResultFileL( iFs );
-    FLOG(_L("CFotaServer::DoExecuteResultFileL() <<"));
-    }
-
-// --------------------------------------------------------------------------
-// StaticDoExecuteResultFile
-// --------------------------------------------------------------------------
-//
-static TInt StaticDoExecuteResultFile(TAny *aPtr)
-    {
-    FLOG(_L("[cfotaserver] StaticDoExecuteResultFile() >>"));
-    __ASSERT_ALWAYS( aPtr, User::Panic(KFotaPanic, KErrBadHandle) );
-    CFotaServer* srv = (CFotaServer*) aPtr;
-    TRAPD( err,  srv->DoExecuteResultFileL() );
-    if(err) 
-        {
-        FLOG(_L("[cfotaserver] StaticDoExecuteResultFile ERROR %d"),err);
-        TRAP_IGNORE(srv->DoDeleteUpdateResultFileL());
-        }
-
-    FLOG(_L("[cfotaserver] StaticDoExecuteResultFile() <<"));
-    return err;
-    }
-
-
-// --------------------------------------------------------------------------
-// CFotaServer::CFotaServer()   
-// Constructor. Can't do all constructing since fotaserver might call itself
-// recursively (via downloadmgr). 
-// --------------------------------------------------------------------------
-//
-void CFotaServer::ConstructL(const TDesC &aFixedServerName)
-    {
-    FLOG(_L("CFotaServer::ConstructL() >> name=%S"), &aFixedServerName);
-    TBool   updated (EFalse);
-    TInt    err;
-    CAknAppServer::ConstructL( aFixedServerName );
-
-    User::LeaveIfError( iFs.Connect() );
-    
-    err = iFs.CreatePrivatePath(EDriveC);
-    if ( err != KErrNone && err != KErrAlreadyExists ) { User::Leave (err); }
-    User::LeaveIfError( iFs.SetSessionToPrivate( EDriveC ) );
-
-    if ( !iDatabase )
-        {
-        TRAPD( err,iDatabase = CFotaDB::NewL() );
-        if ( err ) 
-            {
-            FLOG(_L("CFotaServer::  DB creationg error %d"), err);
-            User::Leave( err );
-            }
-        }
-
-    updated = CFotaUpdate::CheckUpdateResults( iFs );
-
-    // Update has happened, and result file is in place
-    if ( updated )
-        {
-        FLOG(_L("scheduling update result file execution"));
-        if ( iTimedExecuteResultFile ) 
-            {
-            iTimedExecuteResultFile->Cancel();
-            delete iTimedExecuteResultFile;
-            iTimedExecuteResultFile = NULL;
-            }
-        iTimedExecuteResultFile = CPeriodic::NewL (EPriorityNormal) ;
-        iTimedExecuteResultFile->Start (
-            TTimeIntervalMicroSeconds32(KDownloadFinalizerWaitTime)
-            , TTimeIntervalMicroSeconds32(KDownloadFinalizerWaitTime)
-            , TCallBack(StaticDoExecuteResultFile,this) ) ;
-        }
-
-	iEikEnv = CEikonEnv::Static();
-    FLOG(_L("CFotaServer::ConstructL() <<"));
-    }
-
-
-// --------------------------------------------------------------------------
-// CFotaServer::ClientAwareConstructL
-// Does rest of constructing, if not done. If parent of this fotaserver 
-// instance is another fotaserver, skip maintenance operations (since parent 
-// takes care of them). DmHOstserver triggers cleanup for states: 20,70,80
-// ,90,100 , must handle state 60 here
-// --------------------------------------------------------------------------
-void CFotaServer::ClientAwareConstructL( const RMessage2 &aMessage )
-    {
-    FLOG(_L("CFotaServer::ClientAwareConstructL >>"));
-    if ( iInitialized ) return;
-    CFotaSrvSession::TClient client 
-                    = CFotaSrvSession::CheckClientSecureIdL ( aMessage );
-	// temporary fix to keep FS from polluting FSW in case it was opened from omadmappui
-    if ( client == CFotaSrvSession::EOMADMAppUi || client == CFotaSrvSession::EFotaServer ||
-       client == CFotaSrvSession::ESoftwareChecker || client == CFotaSrvSession::ESoftwareCheckerBackground  ) 
-        {
-        //Loading the storage plugin (during DM UI launch) to adjust the reserved memory accordingly.
-        StoragePluginL();
-        iParentApp->SetUIVisibleL ( EFalse, ETrue ); // 
-        }
-
-    // Do constructing if client is other that fotaserver
-    if ( client != CFotaSrvSession::EFotaServer )
-        {
-        RArray<TInt>    states;
-        TPackageState   state;
-        CleanupClosePushL (states);
-        iDatabase->OpenDBL();
-        iDatabase->GetAllL ( states );
-    	TBool value (EFalse);
-    	if (iDownloader)
-    		{
-    		value = iDownloader->IsDownloadActive();
-    		}
-    	else
-    		{
-    		TInt err = RProperty::Get(TUid::Uid(KFotaServerUid), KFotaDownloadActive, value );
-    		FLOG(_L("value of KFotaDownloadActive & err as %d,%d "), (TInt)value,err);
-    		}
-    	FLOG(_L("Download active value is:%d "), (TInt)value);
-        // Loop states. 
-        for(TInt i = 0; i < states.Count(); ++i ) 
-            {
-            TPackageState   tmp;
-            TBool           toIdle(EFalse);
-            tmp = iDatabase->GetStateL(  states[i]  );
-            FLOG(_L("   1 got state id:%d state:%d result:%d"), tmp.iPkgId
-                , tmp.iState, tmp.iResult);
-            
-             if ( tmp.iState == RFotaEngineSession::EStartingUpdate )
-             
-             {
-             	TBool ispkgvalid= ETrue;
-             	TRAPD(err1,ispkgvalid= CheckSWVersionL()   )
-              if (!ispkgvalid && err1 == KErrNone)
-              {
-              StoragePluginL()->DeleteUpdatePackageL (  tmp.iPkgId );	
-             	tmp.iState    = RFotaEngineSession::EUpdateFailed;
-              tmp.iResult   = RFotaEngineSession::EResPackageMismatch;
-              iDatabase->SetStateL( tmp,KNullDesC8, EFDBState | EFDBResult );
-   
-             }	
-             }
-            // Update has been started (60)
-            // If there is no result file, means that update agent failed
-            // to run. Must get back to 50 to allow user to try again. 
-            if ( tmp.iState == RFotaEngineSession::EUpdateProgressing 
-                && iTimedExecuteResultFile==NULL )
-                {
-                FLOG(_L("     State 60 found, UA didnt run! id %d "), tmp.iPkgId);
-                tmp.iState    = RFotaEngineSession::EStartingUpdate;
-                iDatabase->SetStateL( tmp,KNullDesC8, EFDBState);
-                }
-
-            // These states need must trigger generic alert! (70+ )
-            if ( tmp.iState >= RFotaEngineSession::EUpdateFailed  )
-                {
-                if ( iSyncMLSession.Handle() == NULL )
-                    {
-                    iDatabase->CloseAndCommitDB();
-                    CreateDeviceManagementSessionL( tmp );
-                    iDatabase->OpenDBL();
-                    }
-                }
-
-            if (tmp.iState == RFotaEngineSession::EDownloadComplete && tmp.iResult == RFotaEngineSession::EResSuccessful )
-            	{
-                CreateDeviceManagementSessionL( tmp );
-            	}
-
-            if (value != 1) //if download is not active, EStartingDownload should be reset to EDownloadFailed
-            	{
-            	if (tmp.iState == RFotaEngineSession::EStartingDownload ||
-            			tmp.iState == RFotaEngineSession::EDownloadProgressing )
-            		{
-            		FLOG(_L("Resetting state %d to 20..."), tmp.iState);
-            		tmp.iState = RFotaEngineSession::EDownloadFailed;
-                    iDatabase->SetStateL( tmp,KNullDesC8, EFDBState ) ;
-                    iDatabase->CloseAndCommitDB();
-                    iDatabase->OpenDBL();
-            		}
-            	}
-
-            if ( tmp.iState == RFotaEngineSession::EDownloadFailed )
-                {
-                StoragePluginL()->DeleteUpdatePackageL( tmp.iPkgId ); 
-                tmp.iResult   = RFotaEngineSession::EResDLFailDueToNWIssues;
-                iDatabase->SetStateL( tmp,KNullDesC8, EFDBResult ) ;
-                iDatabase->CloseAndCommitDB();
-                CreateDeviceManagementSessionL( tmp );
-                iDatabase->OpenDBL();
-                }
-
-            // Reset package state to idle
-            if ( toIdle )
-                {
-                FLOG(_L("   2 resetting state %d to idle"), tmp.iPkgId);
-                tmp.iState    = RFotaEngineSession::EIdle;
-                iDatabase->SetStateL( tmp,KNullDesC8, EFDBState ) ;
-                DeleteFUMOTreeL();
-                }
-            }
-            iDatabase->CloseAndCommitDB();
-            CleanupStack::PopAndDestroy( &states );
-        }
-    else // client is child fotaserver
-        {
-        }
-    iInitialized = ETrue;
-    FLOG(_L("CFotaServer::ClientAwareConstructL <<"));
-    }
-
-
-// ---------------------------------------------------------------------------
-// CFotaServer::StoragePluginL
-// Getter function for iStorage. If it doesn't exist, load it.
-// ---------------------------------------------------------------------------
-//
-CFotaStorage* CFotaServer::StoragePluginL()
-    {
-    if ( iStorage == NULL )
-        {
-        LoadStoragePluginL();
-        }
-    return iStorage;
-    }
-
-
-// --------------------------------------------------------------------------
-// CFotaServer::LoadStoragePluginL 
-// Load update storage plugin via ecom framework.
-// --------------------------------------------------------------------------
-//
-void CFotaServer::LoadStoragePluginL ()
-    {
-    FLOG(_L("CFotaServer::LoadStoragePluginL"));
-    if(iStorage)
-        {
-        UnLoadStoragePluginL ();
-        }
-    TUid                if_uid;
-    if_uid.iUid = ( KStorageIFUid );
-    RImplInfoPtrArray   pluginArray;
-    REComSession::ListImplementationsL( if_uid, pluginArray );
-    CleanupClosePushL( pluginArray );
-
-    if( pluginArray.Count() )
-        {
-        for( TInt i = 0; i < pluginArray.Count(); i++ )
-            {
-            CImplementationInformation* info = pluginArray[ i ];
-            TUid id = info->ImplementationUid();
-            delete info;
-            info = NULL;
-            iStorage =(CFotaStorage*) REComSession::CreateImplementationL( id
-                                        ,iStorageDtorKey); 
-            }
-        }
-    else
-        {
-        FLOG(_L("  storage plugin not found, ERROR"));
-        User::Leave ( KErrNotFound );
-        }
-    CleanupStack::PopAndDestroy( &pluginArray );
-    }
-
-// --------------------------------------------------------------------------
-// CFotaServer::UnLoadStoragePluginL
-// Unloads storage plugin
-// --------------------------------------------------------------------------
-//
-void CFotaServer::UnLoadStoragePluginL ()
-    {
-    FLOG(_L("CFotaServer::UnLoadStoragePluginL"));
-    if ( iStorage ) 
-        {
-        delete iStorage;
-        iStorage=NULL;
-        }
-    FLOG(_L("    destroying"));
-    REComSession::DestroyedImplementation(iStorageDtorKey); // zeroes referenc
-                                                            // count of plugin
-    FLOG(_L("    finalclosing"));
-    REComSession::FinalClose();
-    }
-
-
-// --------------------------------------------------------------------------
-// StaticDoFinalizeUpdate
-// Intermediate function
-// --------------------------------------------------------------------------
-static TInt StaticDoFinalizeUpdate(TAny *aPtr)
-    {
-    FLOG(_L("[cfotaserver] StaticDoFinalizeUpdate() >>"));
-    CFotaServer* srv = (CFotaServer*) aPtr;
-    TRAPD( err,  srv->DoFinalizeUpdateL() );
-    if(err)
-        {
-        FLOG(_L("[cfotaserver] StaticDoFinalizeUpdate ERROR %d"),err);
-        }
-
-    FLOG(_L("[cfotaserver] StaticDoFinalizeUpdate() <<"));
-    return err;
-    }
-
-
-// --------------------------------------------------------------------------
-// CFotaServer::FinalizeUpdate()
-// Initialize finalization of updater
-// --------------------------------------------------------------------------
-//
-void CFotaServer::FinalizeUpdateL()
-    {
-    FLOG(_L("CFotaServer::FinalizeUpdate() >>"));
-    if ( iUpdateFinalizer )
-        {
-        iUpdateFinalizer->Cancel();
-        delete iUpdateFinalizer;
-        iUpdateFinalizer=NULL;
-        }
-    iUpdateFinalizer = CPeriodic::NewL (EPriorityNormal) ;
-    iUpdateFinalizer->Start (
-                TTimeIntervalMicroSeconds32(KDownloadFinalizerWaitTime)
-                ,TTimeIntervalMicroSeconds32(KDownloadFinalizerWaitTime)
-                ,TCallBack(StaticDoFinalizeUpdate,this) ) ;
-    FLOG(_L("CFotaServer::FinalizeUpdate() <<"));
-    }
-
-
-// --------------------------------------------------------------------------
-// CFotaServer::DoFinalizeUpdateL
-// Finalize update. Free resources
-// --------------------------------------------------------------------------
-//
-void CFotaServer::DoFinalizeUpdateL()
-    {
-    FLOG(_L("CFotaServer::DoFinalizeUpdateL() >>"));
-
-    // Free resources
-    FLOG(_L("iupdater = %d"), iUpdater);
-    if ( iUpdater ) 
-        {
-        FLOG(_L("Deleting iupdater..."));
-        iUpdater->Cancel();
-        delete iUpdater; 
-        iUpdater=NULL;
-        }
-    
-    if ( iUpdateFinalizer ) 
-        {
-        iUpdateFinalizer->Cancel();
-        }
-    // Hide UI
-    iParentApp->SetUIVisibleL ( EFalse, ETrue );
-    FLOG(_L("CFotaServer::DoFinalizeUpdateL() <<"));
-    }
-
-
-// --------------------------------------------------------------------------
-// StaticDoFinalizeDownload
-// Intermediate function
-// --------------------------------------------------------------------------
-static TInt StaticDoFinalizeDownload(TAny *aPtr)
-    {
-    FLOG(_L("[cfotaserver] StaticDoFinalizeDownload() >>"));
-    CFotaServer* srv = (CFotaServer*) aPtr;
-    TRAPD( err,  srv->DoFinalizeDownloadL() );
-    if(err)
-        {
-        FLOG(_L("[cfotaserver] StaticDoFinalizeDownload ERROR %d"),err);
-        }
-
-    FLOG(_L("[cfotaserver] StaticDoFinalizeDownload() <<"));
-    return err;
-    }
-
-
-// --------------------------------------------------------------------------
-// CFotaServer::FinalizeDownload
-// Initialize finalization of download
-// --------------------------------------------------------------------------
-//
-void CFotaServer::FinalizeDownloadL( const TPackageState& aDLState )
-    {
-    FLOG(_L("CFotaServer::FinalizeDownload() >> state:%d result:%d")
-                ,aDLState.iState, aDLState.iResult);
-    __ASSERT_ALWAYS( iDownloader, User::Panic(KFotaPanic, KErrBadHandle ));
-    
-    SetStartupReason(EFotaDefault);
-          
-    if ( iDownloadFinalizer )
-        {
-        iDownloadFinalizer->Cancel();
-        delete iDownloadFinalizer;
-        iDownloadFinalizer=NULL;
-        }
-    iDownloadFinalizer = CPeriodic::NewL (EPriorityMuchMore) ;
-    iDLFinalizeState = aDLState;
-    
-    // Not restarting,quick finalize
-    if ( iDownloader->iRestartCounter<=0 )
-        {
-        iDownloadFinalizer->Start(
-                        TTimeIntervalMicroSeconds32(KDownloadFinalizerWaitTime)
-                        ,TTimeIntervalMicroSeconds32(KDownloadFinalizerWaitTime)
-                        ,TCallBack(StaticDoFinalizeDownload,this) ) ;
-        }
-    // Restarting, wait some time
-    else
-        {
-        iDownloadFinalizer->Start(
-                        TTimeIntervalMicroSeconds32(2000000)
-                        ,TTimeIntervalMicroSeconds32(2000000)
-                        ,TCallBack(StaticDoFinalizeDownload,this) ) ;
-        }
-    FLOG(_L("CFotaServer::FinalizeDownload() <<"));
-    }
-
-
-// --------------------------------------------------------------------------
-// CFotaServer::DoFinalizeDownloadL
-// Finalize download. Free resources
-// --------------------------------------------------------------------------
-//
-void CFotaServer::DoFinalizeDownloadL()
-    {
-    FLOG(_L("CFotaServer::DoFinalizeDownloadL() >> state:%d result:%d")
-            ,iDLFinalizeState.iState, iDLFinalizeState.iResult );
-    __ASSERT_ALWAYS( iDownloader, User::Panic(KFotaPanic, KErrBadHandle ));
-    
-    if ( iDownloadFinalizer ) 
-        {
-        iDownloadFinalizer->Cancel();
-        }
-
-    if (iDownloader->iDLState.iState == RFotaEngineSession::EDownloadFailed)
-        StoragePluginL()->DeleteUpdatePackageL ( iDownloader->iDLState.iPkgId );
-        
-    // Download not to be restarted, delete
-    if ( iDownloader ) 
-    {
-    	if ( iDownloader->iRestartCounter<=0 )
-        {
-        // Set downloader's ending state to DB
-        iDatabase->OpenDBL();
-        iDatabase->SetStateL(iDLFinalizeState
-                            ,KNullDesC8,EFDBState|EFDBResult);
-        iDatabase->CloseAndCommitDB();
-
-        iDownloader->SetDownloadActive(EFalse);
-        iParentApp->SetUIVisibleL( EFalse,ETrue);
-
-        // Initiate update 
-        if ( iDownloader && iDownloader->iUpdateAfterDownload )
-            {
-            UpdateL( iDownloader->iDLState );  
-            }
-        // Report status to DM server
-        else
-            {
-            if (iDownloader->iDLState.iState == RFotaEngineSession::EDownloadProgressingWithResume )
-            	{
-            	if (iDownloader->IsFMSEnabled())
-                	{
-                	FLOG(_L("Invoking FMS..."));
-                	InvokeFmsL();
-                	SetStartupReason(EFotaDownloadInterrupted);
-                	}
-            	}
-            else
-            	{
-            	CreateDeviceManagementSessionL( iDownloader->iDLState );
-            	}
-            }
-
-        // Free resources
-        if ( iDownloader ) 
-            {
-            iDownloader->Cancel();
-			iDownloader->CancelDownload (ETrue);
-            delete iDownloader; 
-            iDownloader=NULL;
-            }
-        TInt val (EFalse);
-        TInt err = RProperty::Get(TUid::Uid(KOmaDMAppUid), KFotaDMRefresh, val );
-        if (val!=EFalse)
-        	err = RProperty::Set(TUid::Uid(KOmaDMAppUid), KFotaDMRefresh, EFalse );
-        FLOG(_L("RProperty KFotaDMRefresh EFalse, err = %d"), err);
-        }
-      }
-    // Download to be restarted
-    else
-        {
-        __ASSERT_ALWAYS( iDownloader->iUrl
-                ,User::Panic(KFotaPanic, KErrBadHandle ));
-        FLOG(_L(" Restarting download(iRestartCounter %d)"),iDownloader->iRestartCounter);
-
-        // Reuse url and iapid
-        HBufC8* url = iDownloader->iUrl->AllocLC();
-        TInt    iapid = iDownloader->iDLState.iIapId;
-
-        TBool   update= iDownloader->iUpdateAfterDownload;
-        TInt    restart=iDownloader->iRestartCounter;
-        
-        iDownloader->CancelDownload( EFalse ); //Doesn't actually deletes downloads when S&R feature is supported.
-      
-        iDownloader->DownloadL( iDLFinalizeState , *url,update,iapid, restart);
-        CleanupStack::PopAndDestroy( url );
-        }
-
-
-    FLOG(_L("CFotaServer::DoFinalizeDownloadL() <<"));
-    }
-
-
-// --------------------------------------------------------------------------
-// StaticDoCloseSMLSession 
-// Intermediate function
-// --------------------------------------------------------------------------
-static TInt StaticDoCloseSMLSession ( TAny *aPtr )
-    {
-    FLOG(_L("[cfotaserver] StaticDoCloseSMLSession() >>"));
-    CFotaServer* srv = (CFotaServer*) aPtr;
-    TRAPD( err,  srv->DoCloseSMLSessionL() );
-    if(err)
-        {
-        FLOG(_L("[cfotaserver] StaticDoCloseSMLSession ERROR %d"),err);
-        }
-
-    FLOG(_L("[cfotaserver] StaticDoCloseSMLSession() <<"));
-    return err;
-    }
-
-// --------------------------------------------------------------------------
-// CFotaServer::DoCloseSMLSessionL
-// Close syncml session, or resync
-// --------------------------------------------------------------------------
-//
-void CFotaServer::DoCloseSMLSessionL()
-    {
-    FLOG(_L("CFotaServer::DoCloseSMLSessionL() >>"));
-
-    // Must still try to sync
-    if ( iSyncMLAttempts > 0 )
-        {
-        FLOG(_L("   trycount %d => creating new job"),iSyncMLAttempts);
-	    RSyncMLDevManJob    dmJob;
-    	if(iIapId > KErrNotFound)
-    	    {
-            FLOG(_L("DoCloseSMLSessionL new job uses iap from fotadb %d"),
-                    iIapId);
-   	        RProperty::Define(KPSUidNSmlSOSServerKey,KNSmlDMSilentJob,RProperty::EInt,KAllowAllPolicy,KWritePolicy);
-            TInt r2=RProperty::Set(KPSUidNSmlSOSServerKey,KNSmlDMSilentJob,ESilent);
-			FLOG(_L("CFotaServer::DoCloseSMLSessionL() KNSmlDMSilentJob set err %d"),r2);
-            dmJob.CreateL( iSyncMLSession, iSyncProfile,iIapId );
-    	    }
-    	else
-    		{
-    		FLOG(_L("DoCloseSMLSessionL new job uses iap from profile"));
-    		dmJob.CreateL( iSyncMLSession, iSyncProfile );
-    		}
-			iSyncMLAttempts--;
-			iSyncJobId = dmJob.Identifier();
-	    dmJob.Close();
-        }
-    else 
-    // We ran out of attempts, close sml
-        {
-        if ( iSyncMLSession.Handle() ) 
-            {
-            FLOG(_L("   Closing syncml session"));
-            iSyncMLSession.CancelEvent();
-            iSyncMLSession.Close();
-            }
-        } 
-
-    if ( iTimedSMLSessionClose ) 
-        {
-        FLOG(_L("   closing smlsession timer"));
-        iTimedSMLSessionClose->Cancel();
-        delete iTimedSMLSessionClose;
-        iTimedSMLSessionClose = NULL;
-        }
-
-    FLOG(_L("CFotaServer::DoCloseSMLSessionL() <<"));
-    }
-
-
-// --------------------------------------------------------------------------
-// CFotaServer::ReadChunkL
-// Read data from chunk created by client.
-// --------------------------------------------------------------------------
-//
-void CFotaServer::ReadChunkL( const TInt aSize,TInt aError )
-	{
-    __ASSERT_ALWAYS( aSize>=0 , User::Panic(KFotaPanic, KErrArgument) );
-    TUint8* b = iChunk.Base();
-    TPtr8   data(b, aSize, aSize );
-
-    iStorage->iBytesWritten += aSize;
-    FLOG(_L("     CFotaServer::ReadChunkL  >>  reading %d bytes"),aSize);
-    if (iStorageStream && aError !=KErrServerTerminated &&
-    		aError !=KErrDiskFull )
-       {FLOG(_L("     CFotaServer::ReadChunkL  >>  inside if(iStorageStream)"));
-       TRAPD ( err, iStorageStream->WriteL(data) );
-
-       if ( !err ) 
-           {
-           iStorageStream->CommitL();
-           }
-       else
-    	  {
-          FLOG(_L("Error when writing pkg %d"), err);
-          iStorageStream->Close();
-          iStorageStream = NULL;
-          User::Leave ( err );
-          }
-       }  
-    FLOG(_L("     CFotaServer::ReadChunkL  << "));
-    }
-
-
-// --------------------------------------------------------------------------
-// CFotaServer::OpenUpdatePackageStoreL 
-// Opens package store. Calling chain in case of oma DL:  
-// fotaserver->downloadmgr->codhandler->fotaserver  (subject to change, 
-// depending on downloadmgr&codhandler changes)
-// Fotaadapter calls this function in direct way: fotaadapter->fotaserver
-//
-// --------------------------------------------------------------------------
-//
-void CFotaServer::OpenUpdatePackageStoreL ( const RMessage2& aMessage )
-    {
-    FLOG(_L("CFotaServer::OpenUpdatePackageStoreL  >>"));
-
-    // If chunk is already open, bail out
-    THandleInfo     info;
-    TInt            pkgid;
-    iChunk.HandleInfo(&info);
-    
-     
-    if(info.iNumOpenInProcess>0)
-        {
-        FLOG(_L("CFotaServer::SetChunkHandleL  chunk is open %d times by \
-            current process (%d times in thread)"),info.iNumOpenInProcess
-            ,info.iNumOpenInThread);
-        User::Leave(KErrInUse);
-        }
-
-    // Set package state 
-    pkgid = aMessage.Int0();
-    iStorageDownloadPackageId = pkgid;
-
-    TPackageState   state = GetStateL(pkgid);
-
-    // AS  16.02.05: must be in failed state until complete
-
-    FLOG(_L("CFotaServer::OpenUpdatePackageStoreL  opening update pkg storage\
-                ffor pkgid: %d "),pkgid);
-
-    TInt size2 = state.iPkgSize;
-    // Use storage api to save update pkg 
-    StoragePluginL()->OpenUpdatePackageStoreL(pkgid,size2, iStorageStream);
-
-    User::LeaveIfError( iChunk.Open(aMessage,1,EFalse) );
-	TInt err = RProperty::Define( TUid::Uid(KFotaServerUid),
-					KFotaLrgObjDl,RProperty::EInt,
-					KReadPolicy,  KWritePolicy );
-	TInt    err1 = RProperty::Set( TUid::Uid(KFotaServerUid),
-			KFotaLrgObjDl, KErrNotFound );
-	FLOG(_L("CFotaServer::OpenUpdatePackageStoreL err for KFotaLrgObjDl define is %d err is %d"),
-			err,err1 );  
-	err = RProperty::Define( TUid::Uid(KFotaServerUid),
-				KFotaLrgObjProfileId,RProperty::EInt,
-				KReadPolicy,KWritePolicy );
-	err1 = RProperty::Set( TUid::Uid(KFotaServerUid),
-						KFotaLrgObjProfileId, KErrNotFound );
-	FLOG(_L("CFotaServer::OpenUpdatePackageStoreL err for KFotaLrgObjProfileId define is %d err is %d"),
-			err,err1 );  
-    FLOG(_L("CFotaServer::OpenUpdatePackageStoreL  <<"));
-    }
-
-// --------------------------------------------------------------------------
-// CFotaServer::GetDownloadUpdatePackageSizeL 
-// Gets the downloaded update package size in bytes
-// --------------------------------------------------------------------------
-//
-void CFotaServer::GetDownloadUpdatePackageSizeL (const TInt aPkgId, TInt& aDownloadedSize, TInt& aTotalSize)
-	{
-	FLOG(_L("CFotaServer::GetDownloadUpdatePackageSize, aPkgId = %d  >>"),aPkgId);
-	TPackageState temp;
-
-	//Getting the total package size from database.
-	iDatabase->OpenDBL();
-	temp = iDatabase->GetStateL(aPkgId);
-	iDatabase->CloseAndCommitDB();
-	
-	FLOG(_L("fota state for given pkg id is = %d"),temp.iState);
-	if (temp.iState == RFotaEngineSession::EDownloadProgressing
-			|| temp.iState == RFotaEngineSession::EDownloadProgressingWithResume
-			|| temp.iState == RFotaEngineSession::EDownloadComplete
-			|| temp.iState == RFotaEngineSession::EStartingUpdate)
-		{
-		aTotalSize = temp.iPkgSize;
-		//Getting the downloaded update package size from storage pluggin.
-		StoragePluginL()->GetDownloadedUpdatePackageSizeL(aPkgId, aDownloadedSize);
-		}
-	else
-		{
-		FLOG(_L("No progressing/suspended/completed download corresponding to the given pkgid (%d)"),aPkgId);
-		User::Leave (KErrNotFound);
-		}
-
-	
-	FLOG(_L("CFotaServer::GetDownloadUpdatePackageSize, aDownloadedSize = %d, aTotalSize = %d  <<"),aDownloadedSize, aTotalSize);
-	}
-
-// --------------------------------------------------------------------------
-// CFotaServer::TryResumeDownloadL 
-// Tries to resume the download operation
-// --------------------------------------------------------------------------
-//
-void CFotaServer::TryResumeDownloadL(TBool aUserInitiated)
-	{
-	FLOG(_L("CFotaServer::TryResumeDownloadL, aUserInitiated = %d  >>"),aUserInitiated);
-	//Check whether there is a paused resume actually.
-	if(aUserInitiated)
-	    iUserResume = ETrue;
-	else
-	    iUserResume = EFalse;
-	TPackageState temp = GetStateL(-1); //Gets the state of the current/last fota download
-	iSessMode = temp.iSessionType;
-	FLOG(_L("iSessMode = %d ,temp.iSessionType=%d  "),iSessMode,
-	            temp.iSessionType);	
-	if ( temp.iState != RFotaEngineSession::EDownloadProgressingWithResume )
-		{
-		FLOG(_L("There are no paused downloads currently; hence leaving with KErrNotFound..."));
-		User::Leave (KErrNotFound);
-		}
-
-	//Resume download now
-    if(!iDownloader)
-        {
-        FLOG(_L("Creating new idownloader"));
-        iDownloader = CFotaDownload::NewL( this );
-        }
-    if (iDownloader->IsDownloadActive())
-    	{
-    	FLOG(_L("Another download is already active, hence returning..."));
-    	User::Leave (KErrAlreadyExists);
-    	}
-    iDownloader->iDLState = temp;
-	SetStartupReason(EFotaDownloadInterrupted);
-    iDownloader->TryResumeDownloadL(aUserInitiated);
-	
-	FLOG(_L("CFotaServer::TryResumeDownloadL  <<"));
-	}
-
-// --------------------------------------------------------------------------
-// CFotaServer::InvokeFmsL 
-// Starts Fota Monitory Service with relevant parameters for monitoring.
-// --------------------------------------------------------------------------
-//
-void CFotaServer::InvokeFmsL()
-	{
-	FLOG(_L("CFotaServer::InvokeFmsL  >>"));
-	//Collect all information needed to invoke FMS.
-	TPackageState temp = GetStateL(iDownloader->iDLState.iPkgId);
-	FLOG(_L("State as recorded in fota db:"));
-	FLOG(_L("iPkgId = %d"),temp.iPkgId);
-	FLOG(_L("iProfileId = %d"),temp.iProfileId);
-	FLOG(_L("iPkgName = %S"),&temp.iPkgName);
-	FLOG(_L("iPkgVersion = %S"),&temp.iPkgVersion);
-	FLOG(_L("iSendAlert = %d"),temp.iSendAlert);
-	FLOG(_L("iIapId = %d"),temp.iIapId);
-	FLOG(_L("iPkgSize = %d"),temp.iPkgSize);
-	FLOG(_L("iSessionType = %d"),temp.iSessionType);
-	FLOG(_L("iState = %d"),temp.iState);
-	FLOG(_L("iResult = %d"),temp.iResult);
-	
-	
-	//Finding the reason for download interrupt
-	TOmaDLInterruptReason reason (EGeneralInterrupt); // 3
-	
-	switch (iDownloader->iDLState.iResult)
-	{
-	case RFotaEngineSession::EResUserCancelled:
-		{
-		reason = EUserInterrupt; //0
-		break;
-		}
-	case RFotaEngineSession::EResDLFailDueToNWIssues:
-		{
-		reason = ENetworkInterrupt; //1
-		break;
-		}
-	case RFotaEngineSession::EResDLFailDueToDeviceOOM:
-		{
-		reason = EMemoryInterrupt;   //2
-		break;
-		}
-	default:
-		{
-		//reason is already EGeneralInterrupt
-		break;
-		}
-	}
-	//FotaState has the last successfully worked IAP. Hence use this for FMS monitoring.
-//	TInt apid = iDownloader->iDLState.iIapId;
-	TInt apid = temp.iIapId;
-	
-	//Finding the drive number
-	TBuf8<KMaxPath> path8;
-	path8.Zero();
-	StoragePluginL()->GetUpdatePackageLocationL(iDownloader->iDLState.iPkgId, path8);
-	TPath path16;
-	path16.Copy(path8);
-
-
-    TInt drive (EDriveC ); //Default drive is Phone Memory
-	TParse p;
-    if (!p.Set(path16,NULL,NULL))
-    	{
-    	TDriveName drivename(p.Drive());
-    	TDriveUnit driveunit(drivename);
-    	if (iFs.IsValidDrive((TInt) driveunit))
-    		drive = driveunit;
-    	}
-    else
-    	{
-    	FLOG(_L("Error while parsing for drive number! defaulting to Phone Memory (C)"));
-    	}
-
-    TInt dlsize, tsize;
-    GetDownloadUpdatePackageSizeL(iDownloader->iDLState.iPkgId, dlsize, tsize);
-	TInt neededsize = tsize - dlsize;
-	FLOG(_L("Launching FMS with params... reason = %d, iapid = %d, drive = %d, neededsize = %d"),reason, apid, drive, neededsize);
-	iFMSClient.OpenL();
-	iFMSClient.NotifyForResumeL( reason, apid, (TDriveNumber)drive, neededsize );
-	iFMSClient.Close();
-	
-	FLOG(_L("CFotaServer::InvokeFmsL  <<"));
-	}
-
-// --------------------------------------------------------------------------
-// CFotaServer::CancelFmsL 
-// Cancels any outstanding monitoring requests in Fota Monitory Service
-// --------------------------------------------------------------------------
-//
-void CFotaServer::CancelFmsL()
-	{
-	FLOG(_L("CFotaServer::CancelFmsL  >>"));
-	
-	iFMSClient.OpenL();
-	iFMSClient.CancelNotifyForResume();
-	iFMSClient.Close();
-	
-	FLOG(_L("CFotaServer::CancelFmsL  <<"));
-	}
-
-// --------------------------------------------------------------------------
-// CFotaServer::SetStartupReason 
-// Sets the startup reason for Fota. This is used in Fota Startup pluggin.
-// --------------------------------------------------------------------------
-//
-void CFotaServer::SetStartupReason(TInt aReason)
-	{
-	FLOG(_L("CFotaServer::SetStartupReason, aReason = %d  >>"), aReason);
-	
-	CRepository* centrep = NULL;
-    TRAPD( err, centrep = CRepository::NewL( KCRUidFotaServer ) )
-    if (err==KErrNone ) 
-    	{
-         centrep->Set(  KFotaUpdateState, aReason );
-        }
-    delete centrep;
-    centrep = NULL;
-
-	FLOG(_L("CFotaServer::SetStartupReason  <<"));
-	}
-
-// --------------------------------------------------------------------------
-// CFotaServer::~CFotaServer()
-// Frees database, download, chunk, filewriter, etc resources
-// --------------------------------------------------------------------------
-//
-CFotaServer::~CFotaServer()
-	{
-    FLOG(_L("CFotaServer::~CFotaServer  >>"));
-
-    if(iDatabase)
-        {
-        iDatabase->CloseAndCommitDB();
-        delete iDatabase;
-        iDatabase = NULL;
-        }
-
-    if(iDownloader)
-        {
-        iDownloader->Cancel();
-        delete iDownloader;
-        iDownloader = NULL;
-        }
-
-    if(iUpdater)
-        {
-        iUpdater->Cancel();
-        delete iUpdater;
-        iUpdater = NULL;
-        }
-
-    if(iDownloadFinalizer) 
-        {
-        iDownloadFinalizer->Cancel();
-        delete iDownloadFinalizer;
-        iDownloadFinalizer = NULL;
-        }
-
-    if(iUpdateFinalizer)
-        {
-        iUpdateFinalizer->Cancel();
-        delete iUpdateFinalizer;
-        iUpdateFinalizer = NULL;
-        }
-
-    if ( iTimedExecuteResultFile ) 
-        {
-        iTimedExecuteResultFile->Cancel();
-        delete iTimedExecuteResultFile;
-        iTimedExecuteResultFile = NULL;
-        }
-
-    if ( iAppShutter )
-        {
-        iAppShutter->Cancel();
-        delete iAppShutter;
-        iAppShutter=NULL;
-        }
-        
-    if ( iMonitor )    
-    	{
-    	delete iMonitor;
-    	iMonitor = NULL;
-    	}
-    //don't delete iEikEnv, fw will take care.
-    if (iChunk.Handle())
-    	iChunk.Close();
-    
-    if (iStorageStream) {
-    	TRAP_IGNORE(iStorageStream->CommitL());
-    	iStorageStream->Close();
-    	iStorageStream = NULL;
-    }
-    iSyncMLSession.Close();
-    TRAP_IGNORE( UnLoadStoragePluginL () );
-    iFs.Close();
-    
-    
-    if (iFMSClient.Handle())
-    	iFMSClient.Close();
-
-	if ( iNotifHandler ) 
-		{
-		iNotifHandler->Cancel();
-		delete iNotifHandler;        
-		}
-	TInt err = RProperty::Delete(TUid::Uid(KFotaServerUid),
-    		KFotaLrgObjDl);
-    FLOG( _L( "CFotaServer::~CFotaServer err for KFotaLrgObjDl is %d " ),err );  
-    err = RProperty::Delete(TUid::Uid(KFotaServerUid),
-    		KFotaLrgObjDl);
-    FLOG( _L( "CFotaServer::~CFotaServer err for KFotaLrgObjProfileId is %d " ),err );  
-    err = RProperty::Delete(TUid::Uid(KFotaServerUid),
-    		KFotaLrgObjProfileId);    
-    
-    if (iDEController)
-        {
-        delete iDEController;
-        iDEController = NULL;
-        }
- 
-	FLOG(_L("CFotaServer::~CFotaServer  <<"));  
-	}
-
-
-// ---------------------------------------------------------------------------
-// CFotaServer::UpdatePackageDownloadCompleteL
-// Sets state and package streaming related objects. If this is child
-// fotaserver (not largeobject), don't set state since parent fotaserver does
-// it.
-// ---------------------------------------------------------------------------
-void CFotaServer::UpdatePackageDownloadCompleteL(TBool aLargObj
-                                                        , const TInt aPkgId)
-    {
-    FLOG(_L("CFotaServer::UpdatePackageDownloadCompleteL %d >>"),aPkgId);
-    TInt        pkgid(aPkgId);
-
-    // Set state in case of lrg obj download 
-    // If not lrg ob download, calling app sets state
-    if (aLargObj)
-        {
-        TPackageState s;
-        s.iPkgId = aPkgId;
-        s.iState = RFotaEngineSession::EStartingUpdate;
-        iDatabase->OpenDBL();
-        iDatabase->SetStateL( s,KNullDesC8,EFDBState );
-        iDatabase->CloseAndCommitDB();
-        //To refresh in DM UI for OMA DM large object
-        TInt err = RProperty::Define( TUid::Uid(KOmaDMAppUid),
-				KFotaDMRefresh,
-				RProperty::EInt,KReadPolicy,KWritePolicy);
-		FLOG(_L("CFotaServer::UpdatePackageDownloadCompleteL KFotaDMRefresh Define, err = %d")
-														, err);        
-		if (err != KErrAlreadyExists && err != KErrNone)
-			{
-			User::LeaveIfError(err);
-			}
-		//notify DM UI, EFalse indicates no Download going on 
-		err = RProperty::Set( TUid::Uid(KOmaDMAppUid),
-				KFotaDMRefresh,
-				EFalse );
-		FLOG(_L("RProperty KFotaDMRefresh Set ETrue, err = %d"), err);           
-        }
-    // Free resources
-    iChunk.Close();
-    iStorage->UpdatePackageDownloadCompleteL(pkgid);
-    FLOG(_L("CFotaServer::UpdatePackageDownloadCompleteL %d <<"),aPkgId);
-    }
-
-
-// ---------------------------------------------------------------------------
-// CFotaServer::DeletePackageL 
-// Deletes update package from db
-// ---------------------------------------------------------------------------
-void CFotaServer::DeletePackageL ( const TInt aPkgId)
-    {
-    FLOG(_L("CFotaServer::DeletePackageL  >> id %d"),aPkgId );
-   // TInt err;
-
-    StoragePluginL()->DeleteUpdatePackageL ( aPkgId );
-//    User::LeaveIfError( err );
-    FLOG(_L("CFotaServer::DeletePackageL  <<") );
-    }
-
-
-// ---------------------------------------------------------------------------
-//  CFotaServer::DownloadL
-//  Create package downloader and download update package.
-// ---------------------------------------------------------------------------
-void CFotaServer::DownloadL(TDownloadIPCParams aParams, const TDesC8& aPkgURL)
-    {
-    FLOG(_L("[FotaServer]  Download >>"));
-
-    // If download already in progress, delete it
-    if ( iDownloader )
-        {
-        FLOG(_L("CFotaServer::DownloadL already downloading!"));
-        User::Leave (KErrAlreadyExists);
-        }
-    
-    if(!iDownloader)
-        {
-        iDownloader = CFotaDownload::NewL( this );
-        }
-        
-        TBuf<KSysVersionInfoTextLength> temp;
-    if (GetSoftwareVersion(temp) == KErrNone)
-        {
-        
-          RFileWriteStream    wstr;
-        	CleanupClosePushL ( wstr );
-        	TInt err1=wstr.Replace( iFs,KSWversionFile, EFileWrite  );
-        	if(err1==KErrNone)
-        	{
-           HBufC16*             swv;
-           swv = HBufC16::NewLC ( temp.Length() );
-           swv->Des().Copy( temp );
-           wstr.WriteInt16L( swv->Des().Length()); // length  
-           wstr.WriteL( swv->Des() );
-           wstr.WriteInt16L( 0 );
-           CleanupStack::PopAndDestroy( swv );
-               
-          }                           
-                                        
-        	CleanupStack::PopAndDestroy( &wstr ); // wstr      
-        }
-    
-    iDownloader->DownloadL(aParams,aPkgURL,EFalse);
-    FLOG(_L("[FotaServer]  Download <<"));
-    }
-
-
-// --------------------------------------------------------------------------
-// CFotaServer::DownloadAndUpdateL
-// Downloads update package and updates fw
-// --------------------------------------------------------------------------
-//
-void CFotaServer::DownloadAndUpdateL(TDownloadIPCParams aParams 
-                                            ,const TDesC8& aPkgURL)
-    {
-    FLOG(_L("CFotaServer::DownloadAndUpdateL >>"));
-
-    // If download already in progress, delete it
-    if ( iDownloader )
-        {
-        FLOG(_L("CFotaServer::DownloadAndUpdateL already downloading!"));
-        User::Leave (KErrAlreadyExists);
-        }
-    if (!iDownloader)
-        {
-        iDownloader = CFotaDownload::NewL(this);
-        }
-        TBuf<KSysVersionInfoTextLength> temp;
-    if (GetSoftwareVersion(temp) == KErrNone)
-        {
-        	RFileWriteStream    wstr;
-        	CleanupClosePushL ( wstr );
-          TInt err = wstr.Replace( iFs ,KSWversionFile, EFileWrite );
-         if(err ==KErrNone) 
-          {
-          HBufC16*             swv;
-          swv = HBufC16::NewLC ( temp.Length( ) );
-          swv->Des().Copy( temp );
-          wstr.WriteInt16L( swv->Des().Length()); // length  
-          wstr.WriteL( swv->Des() );
-          wstr.WriteInt16L( 0 );
-          CleanupStack::PopAndDestroy( swv );
-                
-          }       
-                                 
-         CleanupStack::PopAndDestroy( &wstr ); // wstr                                   
-        	
-        }
-    iDownloader->DownloadL( aParams,aPkgURL,ETrue );
-    FLOG(_L("CFotaServer::DownloadAndUpdateL <<"));
-    }
-
-// --------------------------------------------------------------------------
-// CFotaServer::UpdateL
-// Start update 
-// --------------------------------------------------------------------------
-//
-void CFotaServer::UpdateL( const TDownloadIPCParams &aParams )
-    {
-    FLOG(_L("CFotaServer::UpdateL  >>"));
-    
-     TBool isPkgvalid(ETrue);
-     isPkgvalid = CheckSWVersionL();
-      
-    if (isPkgvalid)
-        {
-        	
-        FLOG(_L("CFotaServer::UpdateL  package is valid >>"));	
-        if(!iUpdater)
-            {
-            iUpdater = CFotaUpdate::NewL(this);
-            }
-        iUpdater->StartUpdateL( aParams );
-        }
-    else
-        {
-        FLOG(_L("IMPORTANT:: Firmware version mismatch! Resetting fota state"));
-        ResetFotaStateL(aParams);
-        }
-       
-        FLOG(_L("CFotaServer::UpdateL  <<"));  
-    }
-
-
-
-// --------------------------------------------------------------------------
-// CFotaServer::CheckSWVersionL
-// Check the s/w version
-// --------------------------------------------------------------------------
-//
-
-TBool CFotaServer::CheckSWVersionL()
-
-{
-	
-	
-	  FLOG(_L("CFotaServer::CheckSWVersionL  >>"));  
-	 TBuf<KSysVersionInfoTextLength> temp;
-    HBufC16*            message16=NULL;
-    TBool isPkgvalid(ETrue);
-    if (GetSoftwareVersion(temp) == KErrNone)
-        {
-          
-         //TBuf<KSysVersionInfoTextLength>swvfromfile;
-        //Fetch the software version ...
-        RFileReadStream     rstr;
-        TInt err1=rstr.Open(iFs,KSWversionFile ,EFileRead);
-        if(err1== KErrNone)
-        {
-         CleanupClosePushL( rstr );
-         TInt msglen = rstr.ReadInt16L(); 
-         if(msglen > 0)
-         { 
-          	message16         = HBufC16::NewLC(msglen + 1);
-        	 TPtr16 tempswv = message16->Des();
-        	 TRAPD(err, rstr.ReadL(tempswv,msglen ));
-        	        
-           if ( err != KErrNone && err != KErrEof)
-            {
-             FLOG(_L("  file read err %d"),err); //User::Leave( err ); 
-              msglen =0;
-            }
-           else
-           { 
-            FLOG(_L("  msglen  %d"),msglen); 
-            TPtr swvfromfile = message16->Des();
-                     
-            FLOG(_L("  swvfromfile=%S"),message16); 
-            
-             //Compare the software versions to decide whether the download is still valid or not.
-              if (msglen != temp.Length() || temp.Compare(tempswv)!=KErrNone)
-              {
-        	     isPkgvalid = EFalse;
-        	      FLOG(_L("CFotaServer::software not matching  >>"));
-        	
-              }
-            } 
-          
-             CleanupStack::PopAndDestroy( message16 );
-         }    
-            CleanupStack::PopAndDestroy( &rstr ); 
-            
-            
-        }
-        
-       } 
-       
-        FLOG(_L("CFotaServer::CheckSWVersionL  <<"));  
-       return isPkgvalid;
-	
-	
-}	
-
-
-// --------------------------------------------------------------------------
-// CFotaServer::ScheduledUpdateL
-// Update, triggered by scheduler
-// --------------------------------------------------------------------------
-void CFotaServer::ScheduledUpdateL( TFotaScheduledUpdate aUpdate )
-    {
-    FLOG(_L("CFotaServer::ScheduledUpdateL"));
-    TPackageState s = GetStateL( aUpdate.iPkgId );
-
-    // If update is in progress, do not start new one (multiple popups)
-    if ( iUpdater )
-    	{
-    	FLOG(_L("\t\tupdate in progress"));
-		return;
-    	}
-	else
-		{
-		
-		//Check to find whether the user has already installed the package before the
-		//reminder could expire
-		
-		RFs aRfs;
-		RDir aDir;
-		TEntryArray anArray;
-		User::LeaveIfError(aRfs.Connect());
-		
-		
-		TBuf16<KMaxFileName> temp;
-		temp.Zero();
-		temp.Copy(KSwupdPath8);
-		
-		if(aDir.Open(aRfs,temp,KEntryAttNormal)==KErrNone)
-		{
-			TInt error = aDir.Read(anArray);	
-		}
-		aDir.Close();
-		aRfs.Close();
-	
-		temp.Zero();
-		temp.Copy(KSwupdFileExt8);
-		
-		TBool aStartUpdate(EFalse);
-		
-		for (TInt i=0; i<anArray.Count();i++)
-			{
-			if (anArray[i].iName.Find(temp)!=KErrNotFound)
-				{
-				aStartUpdate = ETrue;
-				break;
-				}
-			}
-		
-		if (aStartUpdate)
-			{
-			FLOG(_L("\t\tReminder expired and update packages found on dir"));
-			iUpdater = CFotaUpdate::NewL(this);
-	    	iUpdater->StartUpdateL( s );
-			}
-		else
-			{
-			FLOG(_L("\t\tReminder expired, but no update package is found on dir; skipping"));
-			}
-		}
-    }
-
-// --------------------------------------------------------------------------
-// CFotaServer::DoConnect
-// From CServer2. Initializes class members. 
-// --------------------------------------------------------------------------
-void CFotaServer::DoConnect(const RMessage2 &aMessage)
-    {
-    FLOG(_L("CFotaServer::DoConnect(const RMessage2 &aMessage) >>") );
-
-    // In case shutdown is in progress, cancel it.
-    if ( iAppShutter )
-        {
-        iAppShutter->Cancel();
-        delete iAppShutter;
-        iAppShutter=NULL;
-        }
-
-    if ( iInitialized == EFalse )
-        {
-        TRAPD( err, ClientAwareConstructL( aMessage ) );
-        if ( err ) FLOG(_L("   ClientAwareConstructL err %d"),err);
-        }
-
-    CAknAppServer::DoConnect( aMessage );
-    FLOG(_L("CFotaServer::DoConnect(const RMessage2 &aMessage) <<"));
-    }   
-
-
-// --------------------------------------------------------------------------
-// CFotaServer::GetStateL
-// Get state of a download package
-// --------------------------------------------------------------------------
-TPackageState CFotaServer::GetStateL( const TInt aPkgId)
-    {
-    TPackageState s=RFotaEngineSession::EIdle;
-
-    if (aPkgId >= 0) // Used by all clients
-    	{
-    	iDatabase->OpenDBL();
-    	s = iDatabase->GetStateL( aPkgId );
-   	    iDatabase->CloseAndCommitDB();
-    	}
-    else if (aPkgId == -2) //Used by DM UI to check if fota ui has to be in foreground
-    	{
-    	TBool value (EFalse);
-    	/** This P&S Key is used to notify DM UI on any download event. key=0 for idle and key=1 for download */     	
-    	TInt err = RProperty::Get(TUid::Uid(KOmaDMAppUid),
-                           KFotaDMRefresh,
-                           value);
-        FLOG(_L("RProperty KFotaDMRefresh Get, err = %d, val = %d"), err,value);
-		if (err==KErrNone && value)
-			{
-			FLOG(_L("Ongoing download operation detected!"));
-			s=RFotaEngineSession::EDownloadProgressing;
-			}
-    	}
-    else if ( aPkgId == -1) //Used by DM UI to get the state of last fota operation
-    	{
-		//Read status from fotastate last entry
-
-    	iDatabase->OpenDBL();
-
-		RArray<TInt>    states;
-        CleanupClosePushL (states);
-        iDatabase->GetAllL ( states );
-        // Loop states. 
-        for(TInt i = 0; i < states.Count(); ++i ) 
-            {
-            TPackageState   tmp;
-            tmp = iDatabase->GetStateL(  states[i]  );
-            FLOG(_L("***Package: %d, State = %d"),states[i],(TInt) tmp.iState);
-            if (tmp.iState!=RFotaEngineSession::EIdle)
-	            {
-            	s=tmp;
-    	        }
-            }
-			FLOG(_L("Status of current operation is %d"),(TInt)s.iState);
-		
-		CleanupStack::PopAndDestroy( &states );
-   	    iDatabase->CloseAndCommitDB();
-    	}
-    return s;
-    }
-
-
-// --------------------------------------------------------------------------
-// CFotaServer::IsPackageStoreSizeAvailable 
-// Checks if update package fits into storage
-// --------------------------------------------------------------------------
-//
-TBool CFotaServer::IsPackageStoreSizeAvailableL ( const TInt aSize)
-    {
-    FLOG(_L("CFotaServer::IsPackageStoreSizeAvailableL >>"));
-    TInt size=aSize;
-
-		// Write content size for later use (flexible memory usage)
-		RFileWriteStream str;	
-		TUint32 				size2 = aSize;
-		User::LeaveIfError(str.Replace(iFs, KSizePass, EFileWrite)); 
-		CleanupClosePushL(str);
-		str.WriteUint32L(size2);
-		CleanupStack::PopAndDestroy(1);
-
-    
-    CFotaStorage::TFreeSpace avail = StoragePluginL()->IsPackageStoreSizeAvailableL(size);
-    FLOG(_L("CFotaServer::IsPackageStoreSizeAvailableL <<"));
-    return avail==CFotaStorage::EDoesntFitToFileSystem ? EFalse : ETrue;
-    }
-
-// --------------------------------------------------------------------------
-// CFotaServer::OnSyncMLSessionEvent
-// --------------------------------------------------------------------------
-//
-void CFotaServer::OnSyncMLSessionEvent(TEvent aEvent, TInt aIdentifier
-                                       , TInt aError, TInt /*aAdditionalData*/)
-    {
-    if ( iSyncJobId != aIdentifier ) return;
-    FLOG(_L("CFotaServer::OnSyncMLSessionEvent %d err:%d (id %d==%d?)")
-            , aEvent,aError,aIdentifier,iSyncJobId);
-
-    if ( iSyncJobId == aIdentifier )
-	    {
-        TTimeIntervalMicroSeconds32 close(0);
-        TBool end ( EFalse );
-	    switch( aEvent )
-		    {
-            //EJobStart = 0
-            case EJobStartFailed: // 1 E
-                {
-                end = ETrue;
-                }
-			    break;
-            case EJobStop: // 2 E
-                {
-                end = ETrue;
-                // Sync ok => do not try anymore
-                if ( aError == KErrNone ) 
-                    {
-                    iSyncMLAttempts=0;
-                    }
-                }
-			    break;
-            case EJobRejected: // 3 E
-                {
-                end = ETrue;
-                }
-			    break;
-            // ETransportTimeout , // 7
-    	    default:
-                {
-                }
-			    break;
-            }
-
-
-        // sml session OK,close it 
-        if ( end && iSyncMLAttempts == 0 ) 
-            {
-            FLOG(_L("   Sml OK, scheduling close"));
-        	if( aError == KErrNone ) //always ask session successful
-    		  {
-    		  TInt val = KErrNotFound;
-    		  TInt    err1 = RProperty::Get( TUid::Uid(KFotaServerUid),
-    				  KFotaLrgObjDl, val );
-    		  FLOG( _L( "CFotaSrvDocument::OnSyncMLSessionEvent KFotaLrgObjDl val & err is %d, %d" )
-    		  														,val,err1 );  
-    				  if( val == EOmaDmLrgObjDlFail ) //if large object
-    					{
-    					err1 = RProperty::Set( TUid::Uid(KFotaServerUid),
-    							KFotaLrgObjDl, KErrNotFound );
-    					FLOG( _L( "CFotaSrvDocument::OnSyncMLSessionEvent err for KFotaLrgObjDl is %d" )
-    							,err1 );  
-    					err1 = RProperty::Set( TUid::Uid(KFotaServerUid),
-    							KFotaLrgObjProfileId, KErrNotFound );
-    					FLOG( _L( "CFotaSrvDocument::OnSyncMLSessionEvent err for KFotaLrgObjProfileId is %d")
-    																							 ,err1 );  
-    							FLOG( _L( "[FotaServer] CFotaSrvDocument::OnSyncMLSessionEvent pkgid is %d" )
-    									,iStorageDownloadPackageId );  
-    							TRAP_IGNORE(GenericAlertSentL( iStorageDownloadPackageId ));
-    					}
-    		  }
-            close = TTimeIntervalMicroSeconds32( 100000 );
-            }
-        // sml session NOK, retry
-        if ( end && iSyncMLAttempts>0)
-            {
-            FLOG(_L("   Sml OK, scheduling retry"));
-            close = TTimeIntervalMicroSeconds32( KSyncmlSessionRetryInterval);
-            }
-
-        if ( close > TTimeIntervalMicroSeconds32(0) )
-            {
-            if ( iTimedSMLSessionClose ) 
-                {
-                FLOG(_L("   closing smlsession timer"));
-                iTimedSMLSessionClose->Cancel();
-                delete iTimedSMLSessionClose;
-                iTimedSMLSessionClose = NULL;
-                }
-            FLOG(_L("   starting smlsession timer"));
-            TRAPD( err2, iTimedSMLSessionClose = CPeriodic::NewL (EPriorityNormal) );
-            if ( !err2 )
-            	{
-							iTimedSMLSessionClose->Start (
-                close
-                , TTimeIntervalMicroSeconds32( KSyncmlSessionRetryInterval )
-                , TCallBack( StaticDoCloseSMLSession,this ) ) ;
-							}
-							else FLOG(_L(" iTimedSMLSessionClose err %d"),err2);
-            }
-        }
-    }
-
-
-// --------------------------------------------------------------------------
-// CFotaServer::TryToShutDownFotaServer()
-// Try to shut down. After last client left, this is tried periodically.
-// --------------------------------------------------------------------------
-//
-TInt CFotaServer::TryToShutDownFotaServer()
-    {
-    RProcess pr; TFullName fn = pr.FullName();  TUint prid = pr.Id();
-	FLOG(_L( "CFotaServer::TryToShutDownFotaServer process(id %d)%S. this 0x%x")
-	                ,prid,&fn,this);
-    FLOG(_L("CFotaServer::TryToShutDownFotaServer()"));
-    FLOG(_L("iSessMode:%d,iUserResume:%d,iNeedToClose:%d"),iSessMode,
-                        iUserResume,iNeedToClose);
-    TBool val (EFalse);
-    if (iNotifHandler)
-    	val = iNotifHandler->IsOpen();
-    if( !iDownloader  && !iUpdater && !iTimedExecuteResultFile 
-        && !iSyncMLSession.Handle() && !iRetryingGASend  && !val
-        && !( iDownloader 
-             && iDownloader->IsDownloadActive() && iUserResume == EFalse /*FMS*/ 
-             && !iNeedToClose ))
-        {
-        
-        FLOG(_L("   shutting down fotaserver"));
-        if (iDownloader && iDownloader->IsDownloadActive() )
-            {
-            FLOG(_L("Shutting down active in TryToShutDownFotaServer..."));
-            StopDownload(RFotaEngineSession::EResUndefinedError);
-            }      
-       	CAknAppServer::HandleAllClientsClosed();
-       	return 1;
-        }
-    else
-        {
-        FLOG(_L("   shutdownwait:%d.%d.%d.%d.%d"), iDownloader,iUpdater
-            , iTimedExecuteResultFile,iSyncMLSession.Handle(),val);
-        }
-    return 0;
-    }
-
-
-// ---------------------------------------------------------------------------
-// StaticApplicationShutter
-// Intermediate function
-// ---------------------------------------------------------------------------
-static TInt StaticApplicationShutter(TAny *aPtr)
-    {
-    __ASSERT_ALWAYS( aPtr, User::Panic(KFotaPanic, KErrArgument) );
-    CFotaServer* srv = (CFotaServer*) aPtr;
-    srv->TryToShutDownFotaServer();
-    return KErrNone;
-    }
-
-
-// ---------------------------------------------------------------------------
-// CFotaServer::HandleAllClientsClosed()
-// Tries to shut down fotaserver. If unsuccesfull, periodically try it again
-// and again and again ...
-// ---------------------------------------------------------------------------
-void CFotaServer::HandleAllClientsClosed()
-    {   
-    FLOG(_L("CFotaServer::HandleAllClientsClosed() >>"));
-
-    if ( TryToShutDownFotaServer() == 0) 
-        {
-        FLOG(_L("   starting application shutdown" ));
-        if ( iAppShutter )
-            {
-            iAppShutter->Cancel();
-            delete iAppShutter;
-            iAppShutter=NULL;
-            }
-        TRAPD ( err , iAppShutter = CPeriodic::NewL (EPriorityNormal) );
-        __ASSERT_ALWAYS( err == KErrNone , User::Panic(KFotaPanic, err) );
-        FLOG(_L("iSessMode = %d iUserResume:%d,iNeedToClose:%d"),
-                iSessMode,iUserResume,iNeedToClose);
-        if (iDownloader && iDownloader->IsDownloadActive() &&
-                !(iUserResume == EFalse /*FMS*/ 
-                  && !iNeedToClose ) )
-        	{
-            FLOG(_L("Shutting down active..."));
-        	StopDownload(RFotaEngineSession::EResUndefinedError);
-        	}
-
-        iAppShutter->Start( KFotaTimeShutDown , KFotaTimeShutDown
-                , TCallBack(StaticApplicationShutter,this) ) ;
-        }
-
-    FLOG(_L("CFotaServer::HandleAllClientsClosed() <<"));
-    }
-
-// --------------------------------------------------------------------------
-// CFotaServer::GetUpdateTimeStampL 
-// Gets time of last update. It is stored in a file.
-// --------------------------------------------------------------------------
-void CFotaServer::GetUpdateTimeStampL (TDes16& aTime)
-    {
-    FLOG(_L("CFotaServer::GetUpdateTimeStampL  >>"));
-    TInt                err;
-
-    RFileReadStream     rstr;
-    err = rstr.Open( iFs, _L("updatetimestamp"), EFileRead );
-
-    if ( err == KErrNone) 
-        {
-        FLOG(_L(" update time stamp file found,reading"));
-        CleanupClosePushL (rstr);
-        TInt year   =  rstr.ReadInt32L();
-        TInt month  =  rstr.ReadInt32L();    
-        TInt day    =  rstr.ReadInt32L();
-        TInt hour   =  rstr.ReadInt32L();  
-        TInt minute =  rstr.ReadInt32L();
-        TInt year16   = year;
-        TInt month16  = month; 
-        TInt day16    = day;   
-        TInt hour16   = hour;  
-        TInt minute16 = minute;
-        CleanupStack::PopAndDestroy( &rstr );
-        aTime.Append (year16);
-        aTime.Append (month16);
-        aTime.Append (day16);
-        aTime.Append (hour16);
-        aTime.Append (minute16);
-        }
-    else if ( err != KErrNotFound )
-        {
-        User::Leave ( err );
-        }
-
-    if ( err == KErrNotFound ) 
-        {
-        FLOG(_L(" update time stamp not found "));
-        }
-
-    FLOG(_L("CFotaServer::GetUpdateTimeStampL  <<"));
-    }
-
-// --------------------------------------------------------------------------
-// CFotaServer::GetUpdatePackageIdsL
-// --------------------------------------------------------------------------
-//
-void CFotaServer::GetUpdatePackageIdsL(TDes16& aPackageIdList)
-    {
-    FLOG(_L("CFotaServer::GetUpdatePackageIdsL()"));
-    StoragePluginL()->GetUpdatePackageIdsL( aPackageIdList );
-    }
-
-
-
-// --------------------------------------------------------------------------
-// CFotaServer::GenericAlertSentL
-// Generic alert sent, do cleanup. FUMO spec specifies cleanup need to have 
-// for states 20,70,80,90,100. Called by syncml framework when it has sent
-// generic alert
-// --------------------------------------------------------------------------
-//
-void CFotaServer::GenericAlertSentL( const TInt aPackageID )
-    {
-    FLOG(_L("CFotaServer::GenericAlertSentL %d"), aPackageID);
-    TPackageState   state;
-    TBool           toidle(EFalse);
-    TBool           deletepkg(EFalse);
-
-    iDatabase->OpenDBL();
-    state = iDatabase->GetStateL( aPackageID );
-
-	switch( state.iState  )
-		{
-        case RFotaEngineSession::EDownloadFailed:
-            {
-            toidle = ETrue;
-            deletepkg = ETrue;
-            }
-			break;
-        case RFotaEngineSession::EUpdateFailed:
-            {
-            toidle = ETrue;
-            deletepkg = ETrue;
-            }
-			break;
-        case RFotaEngineSession::EUpdateFailedNoData:
-            {
-            toidle = ETrue;
-            }
-			break;
-        case RFotaEngineSession::EUpdateSuccessful:
-            {
-            toidle = ETrue;
-            deletepkg = ETrue;
-            }
-			break;
-        case RFotaEngineSession::EUpdateSuccessfulNoData:
-            {
-            toidle = ETrue;
-            }
-			break;
-        case RFotaEngineSession::EDownloadComplete:
-        	{
-        	state.iState = RFotaEngineSession::EStartingUpdate;
-        	state.iResult = KErrNotFound;
-            iDatabase->SetStateL( state,KNullDesC8, EFDBState );
-        	toidle = EFalse;
-        	}
-        	break;
-    	default:
-            {
-            FLOG(_L(" pkg %d (state:%d) doesnt need cleanup"), aPackageID
-                        ,state.iState );
-            }
-			break;
-        }
-    
-    if ( toidle )
-        {
-        state.iState = RFotaEngineSession::EIdle;
-        state.iResult = KErrNotFound;
-        iDatabase->SetStateL( state,KNullDesC8, EFDBState|EFDBResult );
-        DeleteFUMOTreeL();
-        }
-
-
-   	SetStartupReason(EFotaDefault);
-
-    iDatabase->CloseAndCommitDB();
-
-    if ( deletepkg )
-        {
-        StoragePluginL()->DeleteUpdatePackageL( aPackageID );
-        }
-
-    // this should already be done when user was notified 
-    // about update result
-    DoDeleteUpdateResultFileL();
-    }
-
-// --------------------------------------------------------------------------
-// CFotaServer::DoDeleteUpdateResultFileL
-// Deletes the update resule file
-// --------------------------------------------------------------------------
-void CFotaServer::DoDeleteUpdateResultFileL()
-	{
-    CFotaUpdate::DeleteUpdateResultFileL( iFs );
-	}
-
-// --------------------------------------------------------------------------
-// CFotaServer::CreateServiceL
-// Creates session object
-// --------------------------------------------------------------------------
-CApaAppServiceBase* CFotaServer::CreateServiceL( TUid aServiceType ) const
-	{
-    FLOG(_L( "CFotaServer::CreateServiceL 0x%x " ), aServiceType.iUid );
-    if ( aServiceType.iUid == KFotaServiceUid )
-        {
-	    return ((CApaAppServiceBase*) (new (ELeave) CFotaSrvSession));
-        }
-    else
-        {
-        return CAknAppServer::CreateServiceL ( aServiceType );
-        }
-	}
-
-// --------------------------------------------------------------------------
-// CFotaServer::GetEikEnv
-// Gets the EikonEnv object
-// --------------------------------------------------------------------------
-CEikonEnv* CFotaServer::GetEikEnv()
-	{
-	return iEikEnv;
-	}
-	
-// --------------------------------------------------------------------------
-// CFotaServer::StartNetworkMonitorL       
-// Starts Network Monitoring operation for defined interval and retries (FotaNetworkRegMonitor.h)
-// --------------------------------------------------------------------------
-void CFotaServer::StartNetworkMonitorL()
-	{
-	FLOG(_L("CFotaServer::StartNetworkMonitorL >>"));
-	if (!iMonitor)
-		iMonitor = CFotaNetworkRegStatus::NewL (this);
-	iMonitor->StartMonitoringL();
-	
-	FLOG(_L("CFotaServer::StartNetworkMonitorL <<"));
-	}
-	
-// --------------------------------------------------------------------------
-// CFotaServer::ReportNetworkStatus       
-// called by CFotaNetworkRegStatus for reporting status
-// --------------------------------------------------------------------------
-void CFotaServer::ReportNetworkStatus(TBool status)
-	{
-	FLOG(_L("CFotaServer::ReportNetworkStatus, status = %d >>"),status);
-	iRetryingGASend = EFalse;
-	iNetworkAvailable = status;
-	
-	if (iNetworkAvailable)
-		{
-		TRAPD (err, CreateDeviceManagementSessionL (iStoredState));
-		if (err!=KErrNone)
-			{
-			FLOG(_L("Error %d occured while sending GA after retries"),err);
-			}
-		}
-	//No need of iMonitor anymore	
-    if ( iMonitor )    
-    	{
-    	delete iMonitor;
-    	iMonitor = NULL;
-    	}
-
-	FLOG(_L("CFotaServer::ReportNetworkStatus >>"));
-	}
-
-// --------------------------------------------------------------------------
-// CFotaServer::ShutApp 
-// Shuts the DM App ui. This is used when End key is pressed during fota operation.
-// --------------------------------------------------------------------------
-//
-void CFotaServer::ShutApp()
-	{
-	FLOG(_L("CFotaServer::ShutApp >>"));
-	FLOG(_L("Ending DM UI...."));
-	TApaTaskList taskList(GetEikEnv()->WsSession());
-	TApaTask task=taskList.FindApp(TUid::Uid(KOmaDMAppUid));
-	if(task.Exists())
-		{
-		task.EndTask();
-		}
-	FLOG(_L("CFotaServer::ShutApp <<"));
-	}
-
-// --------------------------------------------------------------------------
-// CFotaServer::StopDownload 
-// Stops any ongoing download operation. Depending on the property of download, the later is either paused
-// or cancelled.
-// --------------------------------------------------------------------------
-//
-void CFotaServer::StopDownload(TInt aReason)
-	{
-	FLOG(_L("CFotaServer::StopDownload, aReason = %d >>"), aReason);
-	iUserResume = KErrNotFound;
-	iSessMode = KErrNotFound;
-    if (iDownloader)
-    	{
-        FLOG(_L("stopping fota download"));
-        iNeedToClose  = EFalse;
-        if (iDownloader->IsDownloadResumable())
-    		{
-    		TRAP_IGNORE(iDownloader->RunDownloadSuspendL(aReason));
-    		}
-   		else
-   			{
-   			TRAP_IGNORE(iDownloader->RunDownloadCancelL(aReason));
-   			}
-    	}	
-	FLOG(_L("CFotaServer::StopDownload <<"));
-	}
-
-// --------------------------------------------------------------------------
-// CFotaServer::UpdateDBdataL 
-// For OMA DM large object download failure, this method updates the database
-// and sends the generic alert.
-// --------------------------------------------------------------------------
-//
-void CFotaServer::UpdateDBdataL()
-	{	
-	TInt val(KErrNotFound),UserCancel(KErrNotFound);
-	TInt err = RProperty::Get( TUid::Uid(KFotaServerUid),
-			KFotaLrgObjDl, val);
-	FLOG(_L("CFotaServer::UpdateDBdata KFotaLrgObjDl value & err is %d, %d "),val,err);	
-	//val = 1 means LrgObj Download & its failed , -1 means not lrg object download / stream commited
-	if( val == EOmaDmLrgObjDlFail ) 
-		{
-		err = RProperty::Get( TUid::Uid(KOmaDMAppUid),
-				KDmJobCancel, UserCancel);
-		FLOG(_L("CFotaServer::UpdateDBdataL KDmJobCancel value & err is %d, %d "),UserCancel,err);
-		if( UserCancel == KErrCancel )
-			{			
-			TInt ProfId(KErrNotFound);
-			err = RProperty::Get( TUid::Uid(KFotaServerUid),
-					KFotaLrgObjProfileId, ProfId);
-			FLOG(_L("CFotaServer::UpdateDBdataL KFotaLrgObjProfileId value & err is %d, %d,pkgid is %d "),
-					ProfId,err,iStorageDownloadPackageId);
-			if(iStorageDownloadPackageId > KErrNotFound && ProfId > KErrNotFound )
-				{
-				iDatabase->OpenDBL();
-				FLOG(_L("CFotaServer::UpdateDBdataL after iDatabase->OpenDBL() "));
-				TPackageState state;
-				state.iPkgId = iStorageDownloadPackageId;
-				state.iProfileId  = ProfId;
-				state.iState = RFotaEngineSession::EDownloadFailed;
-				state.iResult = RFotaEngineSession::EResUserCancelled;				
-				iDatabase->SetStateL( state,KNullDesC8, EFDBState | EFDBResult ) ;
-				FLOG(_L("CFotaServer::UpdateDBdataL after iDatabase->SetStateL"));
-				iDatabase->CloseAndCommitDB();		
-				FLOG(_L("CFotaServer::UpdateDBdataL after iDatabase->CloseAndCommitDB "));			    
-				// Free resources
-				iChunk.Close();
-				FLOG(_L("CFotaServer::UpdateDBdataL ,chunk released "));
-				iStorage->UpdatePackageDownloadCompleteL(iStorageDownloadPackageId);		    				
-				CreateDeviceManagementSessionL(state);
-				}
-
-			}
-		}	
-	}
-// --------------------------------------------------------------------------
-// CFotaServer::MonitorBatteryL()
-// Monitors for the battery 
-// 
-// --------------------------------------------------------------------------
-//
-void CFotaServer::MonitorBattery(TInt aLevel)
-{   FLOG(_L("CFotaServer::MonitorBatteryL(), level = %d >>"), aLevel);
-    SetStartupReason(EFotaUpdateInterrupted);
-	RFMSClient fmsclient;
-	TRAPD(err,fmsclient.OpenL());
-	if(err == KErrNone)
-	{ FLOG(_L("CFotaServer::going into FMS client side MonitorBatteryL() >>"));
-		//fmsclient.Cancel();
-	  TRAPD(err1,fmsclient.MonitorForBatteryL(aLevel));
-	   if(err1)
-	   {
-	   	FLOG(_L("CFotaServer:: MonitorBatteryL() left with error %d  >>"), err1);
-	   }
-	  fmsclient.Close();
-	
-	}
-	
-	FLOG(_L("CFotaServer::MonitorBatteryL() <<"));
-  	
-	
-}
-
-// --------------------------------------------------------------------------
-// CFotaServer::CheckIapExistsL 
-// Checks for IAP Id exists or not in commsdb
-// IAP Id used for resuming the download or for sending Generic alert
-// --------------------------------------------------------------------------
-//
-TBool CFotaServer::CheckIapExistsL(TUint32 aIapId)
-    {
-    FLOG(_L("CFotaServer::CheckIapExistsL >>"));
-    TBool exists = EFalse;  
-    RCmManager cmManager;    
-    cmManager.OpenLC();
-    RCmConnectionMethod conn;
-    TRAPD(err, conn = cmManager.ConnectionMethodL( aIapId ));
-    if(err == KErrNone)//connection method exists
-       exists = ETrue;
-    conn.Close();
-    CleanupStack::PopAndDestroy();//cmManager                    
-    FLOG(_L("CFotaServer::CheckIapExistsL <<"));
-    return exists;
-    }
-
-// --------------------------------------------------------------------------
-// CFotaServer::GetSoftwareVersion
-// Gets the software version
-// 
-// --------------------------------------------------------------------------
-//
-TInt CFotaServer::GetSoftwareVersion(TDes& aVersion)
-    {
-    FLOG(_L("CFotaServer::GetSoftwareVersion >>"));
-    aVersion.Zero();
-    
-    SysVersionInfo::TVersionInfoType what = SysVersionInfo::EFWVersion;
-    TInt error (KErrNone);
-    error = SysVersionInfo::GetVersionInfo(what,aVersion);
-    FLOG(_L("CFotaServer::GetSoftwareVersion,SwV=%S <<"),&aVersion);
-    return error;
-    }
-    
-// --------------------------------------------------------------------------
-// CFotaServer::ResetFotaStateL
-// Resets the Fotastate
-// 
-// --------------------------------------------------------------------------
-//    
-void CFotaServer::ResetFotaStateL(const TDownloadIPCParams& aParams)
-    {
-    FLOG(_L("CFotaServer::ResetFotaStateL >>"));
-
-    TPackageState state;
-    if (!iDatabase->IsOpen()) iDatabase->OpenDBL();
-    //Fetch the software version that was before download from db.
-    state = iDatabase->GetStateL(aParams.iPkgId);
-    state.iState = RFotaEngineSession::EUpdateFailed;
-    state.iResult = RFotaEngineSession::EResPackageMismatch;
-    iDatabase->SetStateL( state,KNullDesC8, EFDBState | EFDBResult );
-    iDatabase->CloseAndCommitDB();
-    
-    StoragePluginL()->DeleteUpdatePackageL ( aParams.iPkgId );
-    
-    CreateDeviceManagementSessionL(state);
-    
-    FLOG(_L("CFotaServer::ResetFotaStateL <<"));
-    }
-
-// --------------------------------------------------------------------------
-// CFotaServer::SetInstallUpdateClientL 
-// Set's who is the client triggering the update
-// --------------------------------------------------------------------------
-//
-void CFotaServer::SetInstallUpdateClientL(TInt aClient)
-    {    
-    iInstallupdClient = aClient;
-    FLOG(_L("CFotaServer::SetInstallUpdateClientL() client:%d<<"),iInstallupdClient);
-    }
-
-// --------------------------------------------------------------------------
-// CFotaServer::GetInstallUpdateClientL 
-// returns the client who triggered the update
-// --------------------------------------------------------------------------
-//
-TInt CFotaServer::GetInstallUpdateClientL()
-    {
-    FLOG(_L("CFotaServer::GetInstallUpdateClientL() client:%d<<"),iInstallupdClient);
-    return iInstallupdClient ;
-    }
-
-// CFotaServer::NeedToDecryptL
-// This method is called to check if decryption is needed.
-// 
-// --------------------------------------------------------------------------
-// 
-TBool CFotaServer::NeedToDecryptL(const TInt &aPkgId, TDriveNumber &aDrive)
-    {
-    FLOG(_L("CFotaServer::NeedToDecryptL >>"));
-    
-    TBool ret (EFalse);
-
-    //Finding the drive number
-    TBuf8<KMaxPath> path8;
-    path8.Zero();
-    StoragePluginL()->GetUpdatePackageLocationL(aPkgId, path8);
-    TPath path16;
-    path16.Copy(path8);
-
-
-    TDriveNumber drive (EDriveC ); //Default drive is Phone Memory
-    TParse p;
-    if (!p.Set(path16,NULL,NULL))
-        {
-        TDriveName drivename(p.Drive());
-        TDriveUnit driveunit(drivename);
-        if (iFs.IsValidDrive((TInt) driveunit))
-            {
-            drive =  (TDriveNumber) driveunit.operator TInt();
-            iStorageDrive = drive;
-            }
-        }
-    else
-        {
-        FLOG(_L("Error while parsing for drive number! defaulting to Phone Memory (C)"));
-        }
-    FLOG(_L("Package storage drive is %d"), (TInt) drive);
-
-    if (!iDEController)
-        {
-        TRAPD(err, iDEController = CDevEncController::NewL(this));
-        if (err == KErrNotSupported)
-            {
-            //Encryption feature is not on.
-            return EFalse;
-            }
-        else
-            {
-            __LEAVE_IF_ERROR(err);
-            }
-        }
-    TRAPD(err, ret = iDEController->NeedToDecryptL(drive));
-    
-    delete iDEController; iDEController = NULL;
-    
-    if (err == KErrNotSupported)
-        {
-        //Encryption feature is ON, but the encryption adaptation is note present.
-        ret = EFalse;
-        }
-    else
-        {
-        __LEAVE_IF_ERROR(err);
-        }
-   
-    //Set the appropriate drive when ret is true
-    if (ret)
-        {
-        aDrive = drive;
-        }
-    
-    FLOG(_L("CFotaServer::NeedToDecryptL ret = %d, drive = %d <<"), ret, drive);
-    return ret;
-
-    }
-
-// --------------------------------------------------------------------------
-// CFotaServer::DoStartDecryptionL
-// This method is called to start the decryption operation.
-// 
-// --------------------------------------------------------------------------
-// 
-void CFotaServer::DoStartDecryptionL()
-    {
-    FLOG(_L("CFotaServer::DoStartDecryptionL >>"));
-    
-    if (!iDEController)
-        iDEController = CDevEncController::NewL(this);
-    
-    iDEController->DoStartDecryptionL(iStorageDrive);
-    
-    FLOG(_L("CFotaServer::DoStartDecryptionL <<"));
-    }
-
-// --------------------------------------------------------------------------
-// CFotaServer::HandleDecryptionCompleteL
-// This method is called to when decryption operation is complete.
-// 
-// --------------------------------------------------------------------------
-// 
-void CFotaServer::HandleDecryptionCompleteL(TInt aResult, TInt aValue)
-    {
-    FLOG(_L("CFotaServer::HandleDecryptionCompleteL, result = %d, value = %d >>"), aResult, aValue);
-    
-    if (aResult == KErrNone)
-        {
-        //Skip battery test as it is already performed before decryption
-        iUpdater->HandleUpdateAcceptStartL(ETrue);
-        }
-    else
-        {
-        FLOG(_L("Can't start update because of error %d"), aResult);
-        iUpdater->HandleUpdateErrorL(aResult, aValue);
-        }
-    
-    if (iDEController)
-        {
-        delete iDEController; iDEController = NULL;
-        }
-    
-    FLOG(_L("CFotaServer::HandleDecryptionCompleteL <<"));
-    }
-
-
-// --------------------------------------------------------------------------
-// CFotaServer::NeedToEncryptL
-// This method is called to check if encryption is needed.
-// 
-// --------------------------------------------------------------------------
-// 
-TBool CFotaServer::NeedToEncryptL(TDriveNumber &aDrive)
-    {
-    FLOG(_L("CFotaServer::NeedToEncryptL >>"));
-    
-    TDriveNumber drive;
-    if (!iDEController)
-        {
-        TRAPD(err, iDEController = CDevEncController::NewL(this));
-        if (err == KErrNotSupported)
-            {
-            return EFalse;
-            }
-        else
-            {
-            __LEAVE_IF_ERROR(err);
-            }
-        }
-    
-    TBool ret = iDEController->NeedToEncryptL(drive);
-    delete iDEController; iDEController = NULL;
-    
-    if (ret)
-        {
-        aDrive = drive;
-        iStorageDrive = drive;
-        }
-    
-    FLOG(_L("CFotaServer::NeedToEncryptL, ret = %d drive = %d << "), ret, aDrive);
-    return ret;
-    }
-
-// --------------------------------------------------------------------------
-// CFotaServer::DoStartEncryptionL
-// This method is called to start the encryption operation.
-// 
-// --------------------------------------------------------------------------
-// 
-void CFotaServer::DoStartEncryptionL()
-    {
-    FLOG(_L("CFotaServer::DoStartEncryptionL >>"));
-    
-    if (!iDEController)
-        iDEController = CDevEncController::NewL(this);
-    
-    iDEController->DoStartEncryptionL(iStorageDrive);
-    
-    FLOG(_L("CFotaServer::DoStartEncryptionL <<"));
-    }
-
-// --------------------------------------------------------------------------
-// CFotaServer::HandleEncryptionCompleteL
-// This method is called when the encryption operation is complete.
-// 
-// --------------------------------------------------------------------------
-// 
-void CFotaServer::HandleEncryptionCompleteL(TInt aResult, TInt aValue)
-    {
-    FLOG(_L("CFotaServer::HandleEncryptionCompleteL, result = %d, value = %d >>"), aResult, aValue);
-    
-    if (aResult == KErrNone)
-        {
-        //Do nothing
-        }
-    else
-        {
-        FLOG(_L("Can't start update because of error %d"), aResult);
-        iUpdater->HandleEncryptionErrorL(aResult);
-        }
-    
-    if (iDEController)
-        {
-        delete iDEController; iDEController = NULL;
-        }
-    
-    FLOG(_L("CFotaServer::HandleEncryptionCompleteL <<"));
-    }
-
-
-// --------------------------------------------------------------------------
-// CFotaServer::GetDEOperation
-// This method returns the device encryption operation.
-// 
-// --------------------------------------------------------------------------
-// 
-TInt CFotaServer::GetDEOperation()
-    {
-    FLOG(_L("CFotaServer::GetDEOperation >>"));
-    TInt ret (EIdle);
-
-    if (iDEController)
-        ret = iDEController->GetDEOperation();
-    
-    FLOG(_L("CFotaServer::GetDEOperation, ret = %d <<"), ret);
-    return ret;
-    }
-