fotaapplication/fotaserver/src/FotaServer.cpp
branchRCL_3
changeset 26 19bba8228ff0
parent 25 b183ec05bd8c
child 27 5cc2995847ea
--- a/fotaapplication/fotaserver/src/FotaServer.cpp	Tue Aug 31 16:04:06 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,2708 +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 <apgtask.h>
-#include <apgwgnam.h>
-#include <schtime.h>
-#include <csch_cli.h>
-#include <e32property.h>
-#include <cmmanager.h>
-#include <cmconnectionmethod.h> 
-#include <DevManInternalCRKeys.h>
-#include <nsmlconstants.h>
-#include <centralrepository.h>
-#include <sysversioninfo.h>
-#include <hbstackedlayout.h>
-#include <hbmainwindow.h>
-#include <hbview.h>
-#include <featmgr.h>
-#include <DevEncProtectedPSKey.h>
-#include <hbapplication.h>
-#include <xqconversions.h>
-#include <hbtransparentwindow.h>
-#include <es_sock.h>
-#include <es_enum_internal.h>
-#include <es_sock_partner.h>
-#include <e32property.h>
-#include <xqserviceutil.h>
-
-#include "FotaServer.h"
-#include "FotaSrvDebug.h"
-#include "FotasrvSession.h"
-#include "fotaConst.h"
-#include "nsmldmtreedbclient.h"
-#include "fotaserverPrivatePSKeys.h"
-#include "FotaNetworkRegStatus.h"
-#include "FotaDlMgrClient.h"
-#include "fotadevicedialogobserver.h"
-#include "fotanotifiers.h"
-#include "fotaserverPrivatePSKeys.h"
-
-#define __LEAVE_IF_ERROR(x) if(KErrNone!=x) {FLOG(_L("LEAVE in %s: %d"), __FILE__, __LINE__); User::Leave(x); }
-
-TInt CFotaServer::iSessionCount = 0;
-
-
-// ============================= LOCAL FUNCTIONS =============================
-
-// ---------------------------------------------------------------------------
-// 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;
-    __LEAVE_IF_ERROR(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::NewInstance
-// ----------------------------------------------------------------------------------------
-CFotaServer* CFotaServer::NewInstance(HbMainWindow& mainwindow)
-    {
-    FLOG(_L("CFotaServer::NewInstance >>"));
-    
-    CFotaServer* self = new CFotaServer(mainwindow);
-    
-    if (self)
-        {
-        TRAPD( err, self->ConstructL());
-        
-        if (err != KErrNone)
-            {
-            delete self; self = NULL;
-            }
-        }
-    FLOG(_L("CFotaServer::NewInstance >>"));
-    return self;
-    }
-
-// ----------------------------------------------------------------------------------------
-// CFotaSrvSession::NewSessionL() 
-// ----------------------------------------------------------------------------------------
-CSession2* CFotaServer::NewSessionL(const TVersion&, const RMessage2&) const
-    {
-    iSessionCount++;
-    FLOG(_L("Number of active sessions = %d"), iSessionCount);
-    return new (ELeave) CFotaSrvSession();
-    }
-
-void CFotaServer::ReportFwUpdateStatusL(TPackageState& aState)
-    {
-    FLOG(_L("CFotaServer::ReportFwUpdateStatusL >>"));
-
-    TFotaClient requester = GetUpdateRequester();
-
-    if (requester == EDMHostServer)
-        {
-        FLOG(_L("Reporting status back to hostserver..."));
-        ServerCanShut(EFalse);
-        CreateDeviceManagementSessionL(aState);
-        }
-    else
-        {
-        //iServerCanShut = EFalse; Don't do here. Should be set in downloadmgrcli based on error type.
-        //ResetFotaStateL(aState.iPkgId);
-        SetStartupReason(EFotaDefault);
-        StopServerWhenPossible();
-        FLOG(_L("Not reporting status as requester is unknown!"));
-        }
-
-    FLOG(_L("CFotaServer::ReportFwUpdateStatusL >>"));
-    }
-
-void CFotaServer::StartDownloadDialog(const QString &aName,
-        const QString &aVersion, const TInt &aSize)
-    {
-    FLOG(_L("CFotaServer::StartDownloadDialog >>"));
-    //The dialog should not timeout here.
-    if (!iFullScreenDialog)
-        {
-        //ConstructApplicationUI(ETrue);
-        iFullScreenDialog = new FotaFullscreenDialog(this);
-        }
-
-    iFullScreenDialog->SetSoftwareDetails(aSize, aVersion, aName);
-
-    iFullScreenDialog->SetWarningDetails(EHbFotaDownload);
-
-    TBool postpone = IsUserPostponeAllowed();
-    if (!postpone)
-        {
-        FLOG(_L("Disabling option to resume later!"));
-        iFullScreenDialog->DisableRSK(ETrue);
-        }
-    
-    FLOG(_L("CFotaServer::StartDownloadDialog <<"));
-    }
-
-void CFotaServer::UpdateDownloadDialog(TInt aProgress)
-    {
-    FLOG(_L("CFotaServer::UpdateDownloadDialog >>"));
-    if (!iFullScreenDialog)
-        {
-        QString name = XQConversions::s60Desc8ToQString(
-                iPackageState.iPkgName);
-        QString version = XQConversions::s60Desc8ToQString(
-                iPackageState.iPkgVersion);
-        StartDownloadDialog(name, version, iPackageState.iPkgSize);
-        ConstructApplicationUI(ETrue);
-        }
-
-    iFullScreenDialog->UpdateProgressBar(aProgress);
-    FLOG(_L("CFotaServer::UpdateDownloadDialog <<"));
-    }
-
-void CFotaServer::ShowDialogL(TFwUpdNoteTypes adialogid)
-    {
-    FLOG(_L("CFotaServer::ShowDialogL  adialogid = %d<<"), adialogid);
-
-    if (iNotifier)
-        {
-        FLOG(_L("Deleting the open device dialog!!"));
-        iNotifier->Cancel();
-        }
-
-    ServerCanShut(EFalse);
-    iDialogId = (TInt) adialogid;
-
-    iNotifParams = CHbSymbianVariantMap::NewL();
-
-    HBufC* keyDialog = HBufC::NewL(10);
-    CleanupStack::PushL(keyDialog);
-    *keyDialog = KKeyDialog;
-
-    HBufC* keyParam1 = HBufC::NewL(10);
-    CleanupStack::PushL(keyParam1);
-    *keyParam1 = KKeyParam1;
-
-    HBufC* keyParam2 = HBufC::NewL(10);
-    CleanupStack::PushL(keyParam2);
-    *keyParam2 = KKeyParam2;
-
-    HBufC* keyParam3 = HBufC::NewL(10);
-    CleanupStack::PushL(keyParam3);
-    *keyParam3 = KKeyParam3;
-
-    HBufC* keyParam4 = HBufC::NewL(10);
-    CleanupStack::PushL(keyParam4);
-    *keyParam4 = KKeyParam4;
-
-    CHbSymbianVariant* dialogId = CHbSymbianVariant::NewL(&adialogid,
-            CHbSymbianVariant::EInt);
-    CleanupStack::PushL(dialogId);
-    iNotifParams->Add(*keyDialog, dialogId);
-
-    if (!iNotifier)
-        iNotifier = CFotaDownloadNotifHandler::NewL(this);
-
-    switch (adialogid)
-        {
-        case EFwUpdNotEnoughBattery:
-        case EFwUpdDeviceBusy:
-            {
-            FLOG(_L("CFotaServer::EFwUpdNotEnoughBattery/EFwUpdDeviceBusy"));
-            iNotifier->LaunchNotifierL(iNotifParams, adialogid);
-            }
-            break;
-        case EFwUpdResumeUpdate:
-        case EFwUpdResumeDownload:
-            {
-            FLOG(_L("CFotaServer::EFwUpdResumeUpdate / EFwUpdResumeDownload"));
-            CHbSymbianVariant* param1Val = CHbSymbianVariant::NewL(
-                    &iPackageState.iPkgSize, CHbSymbianVariant::EInt);
-            CleanupStack::PushL(param1Val);
-            iNotifParams->Add(*keyParam1, param1Val);
-            TBuf16<KFotaMaxPkgNameLength>    temp1;
-            temp1.Copy(iPackageState.iPkgVersion);
-            CHbSymbianVariant* param2Val = CHbSymbianVariant::NewL(
-                    //&iPackageState.iPkgVersion, CHbSymbianVariant::EDes);
-                    &temp1, CHbSymbianVariant::EDes);
-            CleanupStack::PushL(param2Val);
-            iNotifParams->Add(*keyParam2, param2Val);
-            TBuf16<KFotaMaxPkgNameLength>    temp2;
-            temp2.Copy(iPackageState.iPkgName);
-            CHbSymbianVariant* param3Val = CHbSymbianVariant::NewL(
-                    &temp2, CHbSymbianVariant::EDes);
-            CleanupStack::PushL(param3Val);
-            iNotifParams->Add(*keyParam3, param3Val);
-            TBool postpone = IsUserPostponeAllowed();
-            CHbSymbianVariant* param4Val = CHbSymbianVariant::NewL(&postpone,
-                    CHbSymbianVariant::EInt);
-            CleanupStack::PushL(param4Val);
-            iNotifParams->Add(*keyParam4, param4Val);
-            iNotifier->LaunchNotifierL(iNotifParams, adialogid);
-            CleanupStack::PopAndDestroy(4);
-
-            }
-            break;
-
-        default:
-            {
-            FLOG(_L("CFotaServer::default"));
-            //Do nothing
-            }
-            break;
-        }
-    CleanupStack::PopAndDestroy(6);
-    FLOG(_L("CFotaServer::ShowDialogL >>"));
-
-    }
-
-void CFotaServer::HandleDialogResponse(int response, TInt aDialogId)
-    {
-    FLOG( _L("CFotaServer::HandleDialogResponse, response = %d dialog = %d >>"), response, aDialogId);
-
-    switch (aDialogId)
-        {
-        case EFwUpdNotEnoughBattery:
-        case EFwUpdDeviceBusy:
-            {
-            SetServerActive(EFalse);
-
-            StopServerWhenPossible();
-            }
-            break;
-        case EFwUpdResumeDownload:
-            {
-            if (response == EHbLSK) //Continue
-                {
-                FLOG(_L("User accepted to resume the download"));
-
-                TRAP_IGNORE(CancelFmsL());
-                TRAP_IGNORE(DownloaderL()->TryResumeDownloadL());
-                }
-            else //Resume Later
-                {
-                FLOG(_L("User denied resuming the download"));
-                DecrementUserPostponeCount();
-                SetServerActive(EFalse);
-                SetStartupReason(EFotaDownloadInterrupted);
-                
-                TRAP_IGNORE(InvokeFmsL());
-                
-                StopServerWhenPossible();
-                }
-            }
-            break;
-        case EFwUpdResumeUpdate:
-            {
-            if (response == EHbLSK) //Continue
-                {
-                FLOG(_L("User accepted to resume the update"));
-                iPackageState.iResult = KErrNotFound;
-                TRAPD(err,
-                        iDatabase->OpenDBL();
-                        iDatabase->SetStateL( iPackageState ,KNullDesC8,EFDBResult );
-                );
-                FLOG(_L("Updating the fota database... err = %d"), err);
-                iDatabase->CloseAndCommitDB();
-
-                TRAP(err, iUpdater->StartUpdateL( iPackageState ));
-                FLOG(_L("Starting update, err = %d"), err);
-                }
-            else //Update Later
-                {
-                FLOG(_L("User denied resuming the update"));
-                iPackageState.iState = RFotaEngineSession::EStartingUpdate;
-                iPackageState.iResult = RFotaEngineSession::EResUserCancelled;
-                TRAPD(err,
-                        iDatabase->OpenDBL();
-                        iDatabase->SetStateL( iPackageState ,KNullDesC8,EFDBState|EFDBResult );
-                        iDatabase->CloseAndCommitDB();
-                );
-                FLOG(_L("Updating the fota database... err = %d"), err);
-
-                DecrementUserPostponeCount();
-                SetServerActive(EFalse);
-                SetStartupReason(EFotaUpdateInterrupted);
-
-                TRAP(err, InvokeFmsL());
-                FLOG(_L("Invoking fms, err = %d"), err);
-
-                StopServerWhenPossible();
-                }
-            }
-            break;
-        default:
-            {
-            //Do nothing
-            }
-            break;
-        }
-    /*
-     if(iNotifParams)
-     {
-     delete iNotifParams; iNotifParams = NULL;
-     }
-     
-     if(iNotifier)
-     {
-     delete iNotifier; iNotifier = NULL;
-     }*/
-    iDialogId = 0;
-    FLOG(_L("CFotaServer::HandleDialogResponse<<"));
-    }
-
-void CFotaServer::SetServerActive(TBool aValue)
-    {
-    FLOG(_L("CFotaServer::SetServerActive, aValue = %d"), aValue);
-
-    TInt err = RProperty::Set(TUid::Uid(KOmaDMAppUid), KFotaServerActive,
-            aValue);
-    FLOG(_L("RProperty SetServerActive Set %d, err = %d"), aValue, err);
-
-    if (err == KErrNotFound)
-        {
-        err = RProperty::Define(TUid::Uid(KOmaDMAppUid), KFotaServerActive,
-                RProperty::EInt, KReadPolicy, KWritePolicy);
-        err = RProperty::Set(TUid::Uid(KOmaDMAppUid), KFotaServerActive,
-                aValue);
-        FLOG(_L("RProperty SetServerActive Set %d, err = %d"), aValue,
-                err);
-        }
-
-    FLOG(_L("CFotaServer::SetServerActive <<"));
-    }
-
-void CFotaServer::ShowFullScreenDialog(TInt aType)
-    {
-    FLOG(_L("CFotaServer::ShowFullScreenDialog, type = %d >>"), aType);
-
-    if (!iFullScreenDialog)
-        {
-        const QString  ver =   QString::fromUtf8( reinterpret_cast<const char*> (iPackageState.iPkgVersion.Ptr()), iPackageState.iPkgVersion.Length());
-        const QString name =   QString::fromUtf8( reinterpret_cast<const char*> (iPackageState.iPkgName.Ptr()), iPackageState.iPkgName.Length());
-        iFullScreenDialog = new FotaFullscreenDialog(this);
-
-        iFullScreenDialog->SetSoftwareDetails(iPackageState.iPkgSize, ver, name);
-        iFullScreenDialog->SetWarningDetails(EHbFotaDownload);
-        ConstructApplicationUI(ETrue);
-        }
-
-    if (aType == EHbFotaUpdate)
-        {
-        iFullScreenDialog->UpdateProgressBar(100);
-        TBool postpone = IsUserPostponeAllowed();
-        if (!postpone)
-            {
-            FLOG(_L("Disabling option to resume later!"));
-            iFullScreenDialog->DisableRSK(ETrue);
-            }
-
-        iFullScreenDialog->ShowUpdateDialog();
-        }
-    else if (aType == EHbFotaLowBattery)
-        {
-        iFullScreenDialog->UpdateProgressBar(100);
-        iFullScreenDialog->DisableRSK(EFalse);
-        iFullScreenDialog->SetWarningDetails(EHbFotaLowBattery);
-        }
-
-    FLOG(_L("CFotaServer::ShowFullScreenDialog <<"));
-    }
-
-// --------------------------------------------------------------------------
-// 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;
-        iPackageState = 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())
-            {
-            __LEAVE_IF_ERROR( 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)
-            {
-
-            CRepository *cenrep = CRepository::NewL(
-                    KCRUidDeviceManagementInternalKeys);
-            TInt x = cenrep->Set(KDevManClientInitiatedFwUpdateId,
-                    iPackageState.iProfileId);
-            delete cenrep;
-            FLOG(_L("Status writing the cenrep for GA: %d"), x);
-
-            iSyncMLSession.OpenL();
-
-            if (aState.iIapId <0)
-                aState.iIapId = 0;
-            
-            FLOG(_L("IAP set in the Fota profile %d is :%d"),
-                    aState.iProfileId, aState.iIapId);
-
-            FLOG(_L("From Db Using IAP: %d to send GA"), aState.iIapId);
-
-            RSyncMLDevManJob dmJob;
-            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);
-                TInt temp2(0);
-                gavalue.Val(temp2);
-                dmJob.CreateL(iSyncMLSession, aState.iProfileId, temp2);
-                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(HbMainWindow& mainwindow) :
-    CServer2(EPriorityStandard, EUnsharableSessions) /*CServer2(0)*/,
-            iDatabase(0), iInitialized(EFalse), iDownloader(0), iUpdater(0),
-            iDownloadFinalizer(0), iUpdateFinalizer(0), iTimedExecuteResultFile(0), iTimedSMLSessionClose(0),
-            iAppShutter(0), iMonitor(NULL), iSyncMLAttempts(0), iSyncJobId(-1),iRetryingGASend(EFalse),
-            iNetworkAvailable(EFalse),iFullScreenDialog(NULL), iNotifParams(NULL), iNotifier(NULL),
-            iServerCanShut(EFalse), iAsyncOperation(EFalse),iDialogId (0), iConstructed(EFalse), iMainwindow(mainwindow)
-    {
-    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();
-    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);
-        }
-
-    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()
-    {
-    FLOG(_L("CFotaServer::ConstructL() >>"));
-    TBool updated(EFalse);
-    TInt err;
-    iLastFwUrl.Zero();
-    StartL(KFotaServerName);
-
-    __LEAVE_IF_ERROR(iFs.Connect());
-
-    err = iFs.CreatePrivatePath(EDriveC);
-    if (err != KErrNone && err != KErrAlreadyExists)
-        {
-        __LEAVE_IF_ERROR(err);
-        }
-    __LEAVE_IF_ERROR(iFs.SetSessionToPrivate(EDriveC));
-
-    if (!iDatabase)
-        {
-        TRAPD( err,iDatabase = CFotaDB::NewL() );
-        if (err)
-            {
-            FLOG(_L("CFotaServer::  DB creationg error %d"), err);
-            __LEAVE_IF_ERROR(err);
-            }
-        }
-
-    updated = CFotaUpdate::CheckUpdateResults(iFs);
-
-    // Update has happened, and result file is in place
-    if (updated)
-        {
-        FLOG(_L("scheduling update result file execution"));
-        ServerCanShut(EFalse);
-
-        if (iTimedExecuteResultFile)
-            {
-            iTimedExecuteResultFile->Cancel();
-            delete iTimedExecuteResultFile;
-            iTimedExecuteResultFile = NULL;
-            }
-        iTimedExecuteResultFile = CPeriodic::NewL(EPriorityNormal);
-        iTimedExecuteResultFile->Start(TTimeIntervalMicroSeconds32(
-                KDownloadFinalizerWaitTime), TTimeIntervalMicroSeconds32(
-                KDownloadFinalizerWaitTime), TCallBack(
-                StaticDoExecuteResultFile, this));
-        }
-
-    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;
-
-    ConstructApplicationUI(EFalse);
-    CreateDiskReservation();
-
-    TFotaClient client = CFotaSrvSession::CheckClientSecureIdL(aMessage);
-
-    RArray<TInt> states;
-    TPackageState state;
-    CleanupClosePushL(states);
-    iDatabase->OpenDBL();
-    iDatabase->GetAllL(states);
-    TBool dlactive(EFalse);
-
-    dlactive = DownloaderL()->IsDownloadActive();
-
-    FLOG(_L("Download active value is:%d "), (TInt) dlactive);
-    // Loop states. 
-    for (TInt i = 0; i < states.Count(); ++i)
-        {
-        TPackageState tmp;
-
-        tmp = iDatabase->GetStateL(states[i],iLastFwUrl);
-        FLOG(_L("   1 got state id:%d state:%d result:%d"), tmp.iPkgId,
-                tmp.iState, tmp.iResult);
-
-        //Download was started earlier and was interrupted.
-        if (tmp.iState == RFotaEngineSession::EStartingUpdate || tmp.iState
-                == RFotaEngineSession::EDownloadProgressing || tmp.iState
-                == RFotaEngineSession::EDownloadProgressing)
-
-            {
-            TBool ispkgvalid = ETrue;
-            //Software version check from the time download started.
-            TRAPD(err1,ispkgvalid= CheckSWVersionL() )
-            if (err1 == KErrNone && !ispkgvalid)
-                {
-                FLOG(_L("Mismatch in software version  since the download started! Hence resetting!"));
-
-                DownloaderL()->DeleteUpdatePackageL();
-
-                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 EUpdateProgressing 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 && client != EDMHostServer)
-            {
-            if (iSyncMLSession.Handle() == NULL)
-                {
-                iDatabase->CloseAndCommitDB();
-                ReportFwUpdateStatusL(tmp);
-                iDatabase->OpenDBL();
-                }
-            }
-
-        if (tmp.iState == RFotaEngineSession::EDownloadComplete
-                && tmp.iResult == RFotaEngineSession::EResSuccessful && client != EDMHostServer)
-            {
-            ReportFwUpdateStatusL(tmp);
-            }
-
-        if (dlactive == EFalse) //if download is not active, EStartingDownload should be reset to EDownloadFailed
-            {
-            if (tmp.iState == RFotaEngineSession::EStartingDownload)
-                {
-                FLOG(_L("Resetting state %d to 20..."), tmp.iState);
-                tmp.iState = RFotaEngineSession::EDownloadFailed;
-                iDatabase->SetStateL(tmp, KNullDesC8, EFDBState);
-                iDatabase->CloseAndCommitDB();
-                iDatabase->OpenDBL();
-                }
-            else if (tmp.iState == RFotaEngineSession::EStartingDownload)
-                {
-                FLOG(_L("Resetting state %d to 30..."), tmp.iState);
-                tmp.iState = RFotaEngineSession::EDownloadProgressing;
-                iDatabase->SetStateL(tmp, KNullDesC8, EFDBState);
-                iDatabase->CloseAndCommitDB();
-                iDatabase->OpenDBL();
-                }
-            }
-        if (tmp.iState == RFotaEngineSession::EDownloadProgressing)
-            {
-            FLOG(_L("Firmware update state is EDownloadProgressing"));
-            //FMS will start fota server when it is appropriate to resume download.
-            }
-        else if (tmp.iState == RFotaEngineSession::EStartingUpdate)
-            {
-            FLOG(_L("Firmware update state is EStartingUpdate"));
-            //FMS will start fota server when it is appropriate to start install.
-            }
-        if (tmp.iState == RFotaEngineSession::EDownloadFailed && client != EDMHostServer)
-            {
-            FLOG(_L("Resetting state %d to 20..."), tmp.iState);
-            DownloaderL()->DeleteUpdatePackageL();
-            tmp.iResult = RFotaEngineSession::EResDLFailDueToNWIssues;
-            iDatabase->SetStateL(tmp, KNullDesC8, EFDBResult);
-            iDatabase->CloseAndCommitDB();
-            ReportFwUpdateStatusL(tmp);
-            iDatabase->OpenDBL();
-            }
-
-        }
-    iDatabase->CloseAndCommitDB();
-    CleanupStack::PopAndDestroy(&states);
-
-    iInitialized = ETrue;
-    FLOG(_L("CFotaServer::ClientAwareConstructL <<"));
-    }
-
-// --------------------------------------------------------------------------
-// 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()
-    {
-    FLOG(_L("CFotaServer::FinalizeDownload() >> state:%d result:%d"),
-            iPackageState.iState, iPackageState.iResult);
-    __ASSERT_ALWAYS( iDownloader, User::Panic(KFotaPanic, KErrBadHandle ));
-
-    if (iDownloadFinalizer)
-        {
-        iDownloadFinalizer->Cancel();
-        delete iDownloadFinalizer;
-        iDownloadFinalizer = NULL;
-        }
-    iDownloadFinalizer = CPeriodic::NewL(EPriorityMuchMore);
-
-    // Not restarting,quick finalize
-    iDownloadFinalizer->Start(TTimeIntervalMicroSeconds32(
-            KDownloadFinalizerWaitTime), TTimeIntervalMicroSeconds32(
-            KDownloadFinalizerWaitTime), TCallBack(StaticDoFinalizeDownload,
-            this));
-    FLOG(_L("CFotaServer::FinalizeDownload() <<"));
-    }
-
-// --------------------------------------------------------------------------
-// CFotaServer::DoFinalizeDownloadL
-// Finalize download. Free resources
-// --------------------------------------------------------------------------
-//
-void CFotaServer::DoFinalizeDownloadL()
-    {
-
-    FLOG(_L("CFotaServer::DoFinalizeDownloadL() >> state:%d result:%d"),
-            iPackageState.iState, iPackageState.iResult);
-    __ASSERT_ALWAYS( iDownloader, User::Panic(KFotaPanic, KErrBadHandle ));
-
-
-    if (iDownloadFinalizer)
-        {
-        iDownloadFinalizer->Cancel();
-        delete iDownloadFinalizer;
-        iDownloadFinalizer = NULL;
-        }
-
-    // Set downloader's ending state to DB
-    iDatabase->OpenDBL();
-    iDatabase->SetStateL(iPackageState, KNullDesC8, EFDBState | EFDBResult);
-    iDatabase->CloseAndCommitDB();
-
-    if (iPackageState.iResult != RFotaEngineSession::EResDLFailDueToDeviceOOM)
-        {
-        FLOG(_L("Adjusting the reserved memory..."));
-        DownloaderL()->CreateDiskReservation();
-        }
-
-    // Initiate update 
-    if (iPackageState.iState == RFotaEngineSession::EDownloadComplete
-            && iPackageState.iUpdateLtr)
-        {
-        TRAP_IGNORE(TryUpdateL(EOMADMAppUi));
-
-        }
-    else if (iPackageState.iState == RFotaEngineSession::EDownloadProgressing)
-        {
-        FLOG(_L("Download has paused due to an error. Invoking FMS..."));
-        if (iFullScreenDialog)
-            {
-            iFullScreenDialog->Close();
-            iFullScreenDialog->deleteLater();
-            iFullScreenDialog = NULL;
-            }
-        SetStartupReason(EFotaDownloadInterrupted);
-        InvokeFmsL();
-        StopServerWhenPossible();
-        SetServerActive(EFalse);
-        iAsyncOperation = EFalse;
-        }
-    else
-        {
-        if (iFullScreenDialog)
-            {
-            iFullScreenDialog->Close();
-            iFullScreenDialog->deleteLater();
-            iFullScreenDialog = NULL;
-            }
-        ConstructApplicationUI(EFalse);
-        ReportFwUpdateStatusL(iPackageState);
-        SetServerActive(EFalse);
-        iAsyncOperation = EFalse;
-        }
-
-    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 (iPackageState.iIapId > KErrNotFound)
-            {
-            FLOG(_L("DoCloseSMLSessionL new job uses iap from fotadb %d"),
-                    iPackageState.iIapId);
-            dmJob.CreateL(iSyncMLSession, iSyncProfile, iPackageState.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::TryResumeDownloadL 
-// Tries to resume the download operation
-// --------------------------------------------------------------------------
-//
-void CFotaServer::TryResumeDownloadL(TFotaClient aClient, TBool aSilentDl)
-    {
-    FLOG(_L("CFotaServer::TryResumeDownloadL, client = %d aSilent = %d  >>"),
-            (TInt) aClient, aSilentDl);
-    //Check whether there is a paused resume actually.
-    iAsyncOperation = ETrue;
-    SetServerActive(ETrue);
-    WakeupServer();
-
-    if (DownloaderL()->IsDownloadActive())
-        {
-        FLOG(_L("Another download is already active, hence returning..."));
-        __LEAVE_IF_ERROR (KErrAlreadyExists);
-        }
-
-    if (iPackageState.iPkgId == KErrNotFound)
-        iPackageState = GetStateL(-1); //Gets the state of the current/last fota download
-
-    FLOG(_L("Session type is =%d  "), iPackageState.iSessionType);
-
-    if (iPackageState.iState != RFotaEngineSession::EDownloadProgressing)
-        {
-        FLOG(_L("There are no paused downloads currently; hence leaving with KErrNotFound..."));
-        SetServerActive(EFalse);
-        __LEAVE_IF_ERROR (KErrNotFound);
-        }
-
-    //Resume download now
-
-    iPackageState.iSessionType = aSilentDl;
-
-    if (aSilentDl && iPackageState.iResult
-            == RFotaEngineSession::EResUserCancelled)
-        {
-        //If user has paused download earlier, then resume should be non-silent.
-        FLOG(_L("Converting to non-silent download as user had paused it earlier!"));
-        iPackageState.iSessionType = EFalse;
-        }
-    
-    TRAP_IGNORE(SetIapToUseL());
-    FLOG(_L("Using IAP = %d for the download"), iPackageState.iIapId);
-    
-    FLOG(_L("Session type = %d"), iPackageState.iSessionType);
-    iDatabase->OpenDBL();
-    iDatabase->SetStateL(iPackageState, KNullDesC8, EFDBIapId||EFDBSessionType);
-    iDatabase->CloseAndCommitDB();
-
-    if (iPackageState.iSessionType || aClient == EOMADMAppUi)
-        {
-        ConstructApplicationUI(EFalse);
-        DownloaderL()->TryResumeDownloadL();
-        }
-    else
-        {
-        ShowDialogL(EFwUpdResumeDownload);
-        }
-
-    FLOG(_L("CFotaServer::TryResumeDownloadL  <<"));
-    }
-
-void CFotaServer::PauseDownloadL()
-    {
-
-    if (DownloaderL()->IsDownloadActive())
-        {
-        DownloaderL()->PauseDownloadL();
-        }
-    else
-        {
-        FLOG(_L("No download is active. Hence leaving with KErrNotFound"));
-        __LEAVE_IF_ERROR(KErrNotFound);
-        }
-    }
-// --------------------------------------------------------------------------
-// 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.
-    CancelFmsL();
-
-    FLOG(_L("State as recorded in fota db:"));
-    FLOG(_L("iPkgId = %d"), iPackageState.iPkgId);
-    FLOG(_L("iProfileId = %d"), iPackageState.iProfileId);
-    FLOG(_L("iPkgName = %S"), &iPackageState.iPkgName);
-    FLOG(_L("iPkgVersion = %S"), &iPackageState.iPkgVersion);
-    FLOG(_L("iSendAlert = %d"), iPackageState.iSendAlert);
-    FLOG(_L("iIapId = %d"), iPackageState.iIapId);
-    FLOG(_L("iPkgSize = %d"), iPackageState.iPkgSize);
-    FLOG(_L("iSessionType = %d"), iPackageState.iSessionType);
-    FLOG(_L("iState = %d"), iPackageState.iState);
-    FLOG(_L("iResult = %d"), iPackageState.iResult);
-
-    if (iPackageState.iState == RFotaEngineSession::EDownloadProgressing)
-        {
-        //Finding the reason for download interrupt
-        TFmsIpcCommands reason(EDLGeneralInterrupt); // 13
-
-        switch (iPackageState.iResult)
-            {
-            case RFotaEngineSession::EResUserCancelled:
-                {
-                reason = EDLUserInterrupt; //10
-                break;
-                }
-            case RFotaEngineSession::EResDLFailDueToNWIssues:
-                {
-                reason = EDLNetworkInterrupt; //11
-                break;
-                }
-            case RFotaEngineSession::EResDLFailDueToDeviceOOM:
-                {
-                reason = EDLMemoryInterrupt; //12
-                break;
-                }
-            default:
-                {
-                //reason is already EGeneralInterrupt
-                break;
-                }
-            }
-
-        //Finding the drive number
-        TBuf<KMaxPath> path;
-        path.Zero();
-        DownloaderL()->GetUpdatePackageLocation(path);
-
-        TInt drive(EDriveC); //Default drive is Phone Memory
-        TParse p;
-        if (path.Length() && !p.Set(path, NULL, NULL))
-            {
-            TDriveName drivename(p.Drive());
-            TDriveUnit driveunit(drivename);
-            if (iFs.IsValidDrive((TInt) driveunit)) //some crash here
-                drive = driveunit;
-            }
-        else
-            {
-            FLOG(_L("Error while parsing for drive number! defaulting to Phone Memory (C)"));
-            }
-
-        TInt dlsize = DownloaderL()->GetDownloadPackageSize();
-
-        TInt neededsize = iPackageState.iPkgSize - dlsize;
-
-        if (neededsize < 0)
-            neededsize = 0;
-
-        FLOG(_L("Launching FMS with params... reason = %d, iapid = %d, drive = %d, neededsize = %d"),
-                reason, iPackageState.iIapId, drive, neededsize);
-        iFMSClient.OpenL();
-        iFMSClient.NotifyForResumeL(reason, iPackageState.iIapId,
-                (TDriveNumber) drive, neededsize);
-        iFMSClient.Close();
-        }
-    else if (iPackageState.iState == RFotaEngineSession::EStartingUpdate)
-        {
-        //Finding the reason for update interrupt
-        TFmsIpcCommands reason(ENoInterrupt);
-
-        switch (iPackageState.iResult)
-            {
-            case RFotaEngineSession::EResUserCancelled:
-                {
-                reason = EDLUserInterrupt;
-                }
-                break;
-            case RFotaEngineSession::EResLowBattery:
-                {
-                reason = EUpdMonitorbattery;
-                }
-            default:
-                {
-                break;
-                }
-            }
-        FLOG(_L("Launching FMS with params... reason = %d, iapid = %d"), reason, iPackageState.iIapId);
-        iFMSClient.OpenL();
-        iFMSClient.NotifyForUpdateL(reason);
-        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.Cancel();
-    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)
-        {
-        err = centrep->Set(KFotaUpdateState, aReason);
-        }
-    delete centrep;
-    centrep = NULL;
-
-    FLOG(_L("CFotaServer::SetStartupReason, err = %d  <<"), err);
-    }
-
-void CFotaServer::SetUpdateRequester(TFotaClient aRequester)
-    {
-    FLOG(_L("CFotaServer::SetUpdateRequester, requester = %d  >>"),
-            aRequester);
-
-    CRepository* centrep = NULL;
-    TRAPD( err, centrep = CRepository::NewL( KCRUidFotaServer ) )
-    if (err == KErrNone)
-        {
-        err = centrep->Set(KUpdateRequesterUid, (TInt) aRequester);
-        }
-    delete centrep;
-    centrep = NULL;
-
-    FLOG(_L("CFotaServer::SetUpdateRequester, err = %d  <<"), err);
-    }
-
-TFotaClient CFotaServer::GetUpdateRequester()
-    {
-    FLOG(_L("CFotaServer::GetUpdateRequester >>"));
-
-    TInt ret(EUnknown);
-
-    CRepository* centrep = NULL;
-    TRAPD( err, centrep = CRepository::NewL( KCRUidFotaServer ) );
-    if (err == KErrNone)
-        {
-        err = centrep->Get(KUpdateRequesterUid, ret);
-        }
-    delete centrep;
-    centrep = NULL;
-
-    FLOG(_L("CFotaServer::GetUpdateRequester, requester = %d, err = %d  <<"),
-            ret, err);
-
-    return (TFotaClient) ret;
-    }
-
-// --------------------------------------------------------------------------
-// CFotaServer::~CFotaServer()
-// Frees database, download, chunk, filewriter, etc resources
-// --------------------------------------------------------------------------
-//
-CFotaServer::~CFotaServer()
-    {
-    FLOG(_L("CFotaServer::~CFotaServer  >>"));
-
-    if (iDatabase)
-        {
-        iDatabase->CloseAndCommitDB();
-        delete iDatabase;
-        iDatabase = NULL;
-        }
-
-    if (iUpdater)
-        {
-        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 (iTimedSMLSessionClose)
-        {
-        iTimedSMLSessionClose->Cancel();
-        delete iTimedSMLSessionClose;
-        iTimedSMLSessionClose = NULL;
-        }
-
-    if (iFs.Handle())
-        iFs.Close();
-
-    if (iSyncMLSession.Handle())
-        iSyncMLSession.Close();
-
-    if (iMonitor)
-        {
-        delete iMonitor;
-        iMonitor = NULL;
-        }
-
-    if (iFMSClient.Handle())
-        iFMSClient.Close();
-
-    if (iDownloader)
-        {
-        delete iDownloader;
-        iDownloader = NULL;
-        }
-
-    if (iFullScreenDialog)
-        {
-        iFullScreenDialog->deleteLater();
-        }
-
-		/*
-    if (iNotifParams)
-        {
-        delete iNotifParams;
-        iNotifParams = NULL;
-        }
-
-    if (iNotifier)
-        {
-        delete iNotifier;
-        iNotifier = NULL;
-        }*/
-
-    FLOG(_L("CFotaServer::~CFotaServer  <<"));
-    }
-
-// ---------------------------------------------------------------------------
-// CFotaServer::DeletePackageL 
-// Deletes update package from db
-// ---------------------------------------------------------------------------
-void CFotaServer::DeletePackageL(const TInt aPkgId)
-    {
-    FLOG(_L("CFotaServer::DeletePackageL  >> id %d"), aPkgId);
-
-    DownloaderL()->DeleteUpdatePackageL();
-
-    FLOG(_L("CFotaServer::DeletePackageL  <<"));
-    }
-
-// ---------------------------------------------------------------------------
-//  CFotaServer::DownloadL
-//  Create package downloader and download update package.
-// ---------------------------------------------------------------------------
-void CFotaServer::DownloadL(TDownloadIPCParams aParams,
-        const TDesC8& aPkgURL, TFotaClient aRequester, TBool aSilent,
-        TBool aUpdateLtr)
-    {
-    FLOG(_L("[FotaServer]  Download >>"));
-    iAsyncOperation = ETrue;
-    SetServerActive(ETrue);
-    WakeupServer();
-
-
-    if (DownloaderL()->IsDownloadActive())
-        {
-        FLOG(_L("One download is already active, hence leaving!"));
-        __LEAVE_IF_ERROR(KErrAlreadyExists);
-        }
-
-    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      
-        }
-
-    iPackageState = aParams;
-    iPackageState.iUpdateLtr = aUpdateLtr;
-    iPackageState.iSessionType = aSilent;
-    iPackageState.iIapId = -2; //Signifies default connection to use.
-    TRAP_IGNORE(SetIapToUseL());
-    FLOG(_L("Using IAP = %d for the download"), iPackageState.iIapId);
-
-    //First entry to fota database
-    FLOG(_L("DownloadManagerClient::DownloadL, State 1 - writing to database"));
-
-    iDatabase->OpenDBL();
-    iDatabase->SetStateL(iPackageState, aPkgURL, EFDBState | EFDBResult
-            | EFDBProfileId | EFDBPkgUrl | EFDBPkgName | EFDBVersion
-            | EFDBUpdateLtr | EFDBSessionType | EFDBIapId);
-    iDatabase->CloseAndCommitDB();
-
-    //Cancel any outstanding requests to monitor.
-    CancelFmsL();
-    SetUpdateRequester(aRequester);
-    ResetCounters();
-    
-    DownloaderL()->DownloadL(aPkgURL);
-
-
-    FLOG(_L("[FotaServer]  Download <<"));
-    }
-
-// --------------------------------------------------------------------------
-// CFotaServer::UpdateL
-// Start update 
-// --------------------------------------------------------------------------
-//
-void CFotaServer::TryUpdateL(TFotaClient aClient)
-    {
-    FLOG(_L("CFotaServer::TryUpdateL, client = %d  >>"), (TInt) aClient);
-    iAsyncOperation = ETrue;
-    SetServerActive(ETrue);
-    WakeupServer();
-
-    TBool isPkgvalid(ETrue);
-    isPkgvalid = CheckSWVersionL();
-
-    if (!isPkgvalid)
-        {
-        FLOG( _L("Fota Update:: Firmware version mismatch! Resetting fota state"));
-
-        ResetFotaStateToFailL();
-        SetServerActive(EFalse);
-        __LEAVE_IF_ERROR(KErrNotFound);
-        }
-    
-    if (iPackageState.iPkgId == KErrNotFound)
-        iPackageState = GetStateL(-1);
-    
-    iPackageState.iState = RFotaEngineSession::EStartingUpdate;
-    iPackageState.iResult = KErrNotFound;
-    iPackageState.iSendAlert = EFalse;
-
-    iDatabase->OpenDBL();
-    iDatabase->SetStateL(iPackageState, KNullDesC8, EFDBState | EFDBResult);
-    iDatabase->CloseAndCommitDB();
-
-    SetStartupReason(EFotaUpdateInterrupted);
-
-    if (IsDeviceDriveBusyL())
-        {
-        FLOG(
-                _L("Fota Update:: Device encryption is onging, hence aborting update!"));
-        ShowDialogL(EFwUpdDeviceBusy);
-        
-        __LEAVE_IF_ERROR(KErrNotReady);
-        }
-
-    FLOG(_L("Fota Update:: Firmware version check okie"));
-
-    if (!iUpdater)
-        {
-        iUpdater = CFotaUpdate::NewL(this);
-        }
-
-    if (aClient != EFMSServer)
-        {
-        //Check any active phone call
-        TInt callactive(EFalse);
-        iFMSClient.OpenL();
-        TInt err1 = iFMSClient.IsPhoneCallActive(callactive);
-
-        if (callactive)
-            {
-            FLOG(_L("Fota Update:: Active call found; differing showing the install dialog!"));
-
-            iPackageState.iResult = RFotaEngineSession::EResUpdateFailed;
-            iDatabase->OpenDBL();
-            iDatabase->SetStateL(iPackageState, KNullDesC8, EFDBResult);
-            iDatabase->CloseAndCommitDB();
-
-            iFMSClient.NotifyForUpdateL(EUpdMonitorPhoneCallEnd);
-            iFMSClient.Close();
-            SetServerActive(EFalse);
-            __LEAVE_IF_ERROR(KErrNotReady);
-            }
-        iFMSClient.Close();
-
-        FLOG(_L("Fota Update:: Active phone call check okie "));
-
-        TBool batt = iUpdater->CheckBatteryL();
-
-#if defined (__WINS__)
-        batt = ETrue;
-#endif
-
-        if (aClient == EOMADMAppUi || aClient == EDMHostServer)
-            {
-            FLOG(_L("Device Updates/Adapter. Show Full screen dialog."));
-            LoopBatteryCheckL(batt);
-            }
-        else
-            {
-            if (batt)
-                {
-                FLOG(_L("Not Device Updates. Show device dialog."));
-
-                ShowDialogL(EFwUpdResumeUpdate);
-                }
-            else
-                {
-                FLOG(_L("Not Device Updates. Leave and monitor for battery."));
-
-                iPackageState.iState = RFotaEngineSession::EStartingUpdate;
-                iPackageState.iResult = RFotaEngineSession::EResLowBattery;
-
-                iDatabase->OpenDBL();
-                iDatabase->SetStateL(iPackageState, KNullDesC8, EFDBState
-                        | EFDBResult);
-                iDatabase->CloseAndCommitDB();
-
-                InvokeFmsL();
-
-                __LEAVE_IF_ERROR(KErrBadPower);
-                }
-            }
-        }
-    else
-        {
-        ShowDialogL(EFwUpdResumeUpdate);
-        }
-    FLOG(_L("CFotaServer::TryUpdateL  <<"));
-    }
-
-void CFotaServer::LoopBatteryCheckL(TBool aBatteryLevel)
-    {
-    FLOG(_L("CFotaServer::LoopBatteryCheckL, level = %d"), aBatteryLevel);
-    if (aBatteryLevel)
-        {
-        FLOG(_L("Fota Update:: Battery check success;  monitoring battery until update"));
-        ShowFullScreenDialog(EHbFotaUpdate);
-        ConstructApplicationUI(ETrue);
-        iUpdater->MonitorBatteryChargeLevel();
-        }
-    else
-        {
-        FLOG(_L("Fota Update:: Battery check failed;  monitoring for charger connection"));
-
-        iPackageState.iState = RFotaEngineSession::EStartingUpdate;
-        iPackageState.iResult = RFotaEngineSession::EResLowBattery;
-        iDatabase->OpenDBL();
-        iDatabase->SetStateL(iPackageState, KNullDesC8, EFDBResult);
-        iDatabase->CloseAndCommitDB();
-
-        ShowFullScreenDialog(EHbFotaLowBattery);
-        ConstructApplicationUI(ETrue);
-        iUpdater->MonitorBatteryChargingStatus();
-        }
-    FLOG(_L("CFotaServer::LoopBatteryCheckL <<"));
-    }
-
-
-void CFotaServer::FinalizeUpdate()
-    {
-    FLOG(_L("CFotaServer::FinalizeUpdate >>"));
-    
-    if (iPackageState.iResult == RFotaEngineSession::EResLowBattery)
-        {
-        TRAP_IGNORE(InvokeFmsL());
-        }
-    SetServerActive(EFalse);
-    ServerCanShut(ETrue);
-    StopServerWhenPossible();
-    FLOG(_L("CFotaServer::FinalizeUpdate <<"));
-    }
-
-
-FotaFullscreenDialog* CFotaServer::FullScreenDialog()
-    {
-    return iFullScreenDialog;
-    }
-
-void CFotaServer::HandleFullScreenDialogResponse(TInt aResponse)
-    {
-    FLOG(_L("CFotaServer::HandleFullScreenDialogResponse, response = %d >>"),
-            aResponse);
-
-    TBool active (EFalse);
-    TRAP_IGNORE(active = DownloaderL()->IsDownloadActive());
-    CEikonEnv* env = CEikonEnv::Static();
-
-    if (iPackageState.iState == RFotaEngineSession::EDownloadProgressing)
-        {
-
-        //swapProcess(EFalse);
-        ConstructApplicationUI(EFalse);
-        if (aResponse == EHbLSK)
-            {
-            //HIDE is pressed
-            FLOG(_L("HIDE is pressed"));
-            if (env)
-                {
-                CApaWindowGroupName* wgName (NULL);
-                TRAP_IGNORE( wgName = CApaWindowGroupName::NewL(env->WsSession()));
-                if (wgName)
-                    {
-                    wgName->SetHidden(EFalse); // hides us from FSW and protects us from OOM FW etc.
-                    delete wgName;
-                    }
-                }
-            }
-        else
-            {
-            DecrementUserPostponeCount();
-            if (active)
-                {
-                FLOG(_L("CONTINUE LATER is pressed on update dialog"));
-                /*
-                if (env)
-                    {
-                    CApaWindowGroupName* wgName;
-                    TRAP_IGNORE(wgName = CApaWindowGroupName::NewL(env->WsSession()));
-                    if (wgName)
-                        {
-                        wgName->SetHidden(ETrue); // hides us from FSW and protects us from OOM FW etc.
-                        delete wgName;
-                        }
-                    }*/
-                TRAP_IGNORE(PauseDownloadL());
-                }
-            }
-        }
-    else if (iPackageState.iState == RFotaEngineSession::EDownloadComplete
-            || iPackageState.iState == RFotaEngineSession::EStartingUpdate)
-        {
-        if (aResponse == EHbLSK)
-            {
-            FLOG(_L("CONTINUE is pressed/Timeout on update dialog"));
-            iPackageState.iResult = KErrNotFound;
-            TRAPD(err,
-                    iDatabase->OpenDBL();
-                    iDatabase->SetStateL( iPackageState ,KNullDesC8,EFDBResult );
-                    iDatabase->CloseAndCommitDB();
-            );
-            FLOG(_L("Updating the fota database... err = %d"), err);
-
-            TInt callactive(EFalse);
-            
-            TRAP(err, 
-            iFMSClient.OpenL();
-            TInt err1 = iFMSClient.IsPhoneCallActive(callactive);
-            iFMSClient.Close();
-            );
-            
-            if (callactive)
-                {
-                FLOG(_L("Fota Update:: Active call found; differing showing the install dialog!"));
-
-                iPackageState.iResult = RFotaEngineSession::EResUpdateFailed;
-                TRAP(err, 
-                    iDatabase->OpenDBL();
-                    iDatabase->SetStateL(iPackageState, KNullDesC8, EFDBResult);
-                    iDatabase->CloseAndCommitDB();
-                    );
-                
-                TRAP(err,
-                    iFMSClient.OpenL();
-                    iFMSClient.NotifyForUpdateL(EUpdMonitorPhoneCallEnd);
-                    iFMSClient.Close();
-                    );
-                
-                FLOG(_L("Deleting the fullscreen dialog..."));
-                iFullScreenDialog->deleteLater();
-                iFullScreenDialog = NULL;
-                SetServerActive(EFalse);
-                return;
-                }
-
-            TRAP(err, iUpdater->StartUpdateL( iPackageState ));
-            FLOG(_L("Starting update, err = %d"), err);
-            }
-        else
-            {
-            FLOG(_L("CONTINUE LATER is pressed on update dialog"));
-            ConstructApplicationUI(EFalse);
-
-            iUpdater->CancelMonitor();
-
-            if (iFullScreenDialog->IsLSKEnabled())
-                {
-                DecrementUserPostponeCount();
-                }
-
-            iPackageState.iState = RFotaEngineSession::EStartingUpdate;
-            iPackageState.iResult = RFotaEngineSession::EResUserCancelled;
-            TRAPD(err,
-                    iDatabase->OpenDBL();
-                    iDatabase->SetStateL( iPackageState ,KNullDesC8,EFDBState|EFDBResult );
-                    iDatabase->CloseAndCommitDB();
-            );
-            FLOG(_L("Updating the fota database... err = %d"), err);
-
-            SetStartupReason(EFotaUpdateInterrupted);
-            SetServerActive(EFalse);
-            TRAP(err, InvokeFmsL());
-            StopServerWhenPossible();
-
-            iAsyncOperation = EFalse;
-            FLOG(_L("Invoking fms, err = %d"), err);
-            }
-        }
-    FLOG(_L("CFotaServer::HandleFullScreenDialogResponse <<"));
-    }
-
-void CFotaServer::UpdateBatteryLowInfo(TBool aValue)
-    {
-    FLOG(_L("CFotaServer::UpdateBatteryLowInfo >>"));
-
-    if (aValue)
-        {
-        FLOG(
-                _L("Fota Update:: Battery has become low; disabling installation"));
-        iPackageState.iResult = RFotaEngineSession::EResUpdateFailed;
-        TRAP_IGNORE(
-                iDatabase->OpenDBL();
-                iDatabase->SetStateL( iPackageState ,KNullDesC8,EFDBResult );
-                iDatabase->CloseAndCommitDB();
-            );
-
-        ShowFullScreenDialog(EHbFotaLowBattery);
-        }
-    else
-        {
-        ShowFullScreenDialog(EHbFotaUpdate);
-        FLOG(
-                _L("Fota Update:: Battery is still sufficient; enabling installation"));
-        }
-    FLOG(_L("CFotaServer::UpdateBatteryLowInfo <<"));
-    }
-
-// --------------------------------------------------------------------------
-// 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,
-        TFotaClient aClient)
-    {
-    FLOG(_L("CFotaServer::ScheduledUpdateL >>"));
-
-    iAsyncOperation = ETrue;
-    WakeupServer();
-
-    TPackageState s = GetStateL(aUpdate.iPkgId);
-
-    if (s.iState == RFotaEngineSession::EDownloadProgressing)
-        {
-        FLOG(_L("Trying to resume the download in non-silent mode"));
-        iPackageState = s;
-        TryResumeDownloadL(aClient, EFalse);
-        }
-    else if (s.iState == RFotaEngineSession::EStartingUpdate)
-        {
-        // If update is in progress, do not start new one (multiple popups)
-        if (iUpdater)
-            {
-            FLOG(_L("\t\tupdate in progress"));
-            return;
-            }
-        else
-            {
-            FLOG(_L("Trying to resume the installation in non-silent mode"));
-            iPackageState = s;
-            TryUpdateL(aClient);
-            }
-        }
-    FLOG(_L("CFotaServer::ScheduledUpdateL <<"));
-    }
-
-// --------------------------------------------------------------------------
-// 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 (iInitialized == EFalse)
-        {
-        TRAPD( err, ClientAwareConstructL( aMessage ) );
-        if (err)
-            FLOG(_L("   ClientAwareConstructL err %d"), err);
-        }
-    CServer2::DoConnect(aMessage);
-    FLOG(_L("CFotaServer::DoConnect(const RMessage2 &aMessage) <<"));
-    }
-
-// --------------------------------------------------------------------------
-// CFotaServer::GetStateL
-// Get state of a download package
-// --------------------------------------------------------------------------
-TPackageState CFotaServer::GetStateL(const TInt aPkgId)
-    {
-    FLOG(_L("CFotaServer::GetStateL >>"));
-    TPackageState s = RFotaEngineSession::EIdle;
-
-    if (aPkgId >= 0) // Used by all clients
-        {
-        iDatabase->OpenDBL();
-        s = iDatabase->GetStateL(aPkgId,iLastFwUrl);
-        iDatabase->CloseAndCommitDB();
-        }
-    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;
-            TBuf8<KMaxFileName> tmpurl;
-            tmp = iDatabase->GetStateL(states[i], tmpurl);
-            FLOG(_L("***Package: %d, State = %d"), states[i],
-                    (TInt) tmp.iState);
-            if (tmp.iState != RFotaEngineSession::EIdle)
-                {
-                s = tmp;
-                iLastFwUrl.Copy(tmpurl);
-                }
-            }
-        FLOG(_L("Status of current operation is %d"), (TInt) s.iState);
-
-        CleanupStack::PopAndDestroy(&states);
-        iDatabase->CloseAndCommitDB();
-        }
-    FLOG(_L("CFotaServer::GetStateL <<"));
-    return s;
-    }
-
-// --------------------------------------------------------------------------
-// CFotaServer::OnSyncMLSessionEvent
-// --------------------------------------------------------------------------
-//
-void CFotaServer::OnSyncMLSessionEvent(TEvent aEvent, TInt aIdentifier,
-        TInt aError, TInt /*aAdditionalData*/)
-    {
-    FLOG(_L("CFotaServer::OnSyncMLSessionEvent >>"));
-
-    if (iSyncJobId != aIdentifier)
-        return;
-    FLOG(_L("CFotaServer::OnSyncMLSessionEvent %d err:%d (id %d==%d?)"),
-            aEvent, aError, aIdentifier, iSyncJobId);
-    TBool end(EFalse);
-
-    if (iSyncJobId == aIdentifier)
-        {
-
-        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;
-            }
-        }
-
-    if (end && iSyncMLAttempts == 0)
-        {
-        if (iTimedSMLSessionClose)
-            {
-            FLOG(_L("   closing smlsession timer"));
-            iTimedSMLSessionClose->Cancel();
-            delete iTimedSMLSessionClose;
-            iTimedSMLSessionClose = NULL;
-            }
-        StopServerWhenPossible();
-        
-        }
-    else if (end)
-        {
-
-        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(TTimeIntervalMicroSeconds32(
-                    KSyncmlSessionRetryInterval),
-                    TTimeIntervalMicroSeconds32(
-                            KSyncmlSessionRetryInterval), TCallBack(
-                            StaticDoCloseSMLSession, this));
-            }
-        else
-            FLOG(_L(" iTimedSMLSessionClose err %d"), err2);
-        }
-    FLOG(_L("CFotaServer::OnSyncMLSessionEvent <<"));
-    }
-
-// --------------------------------------------------------------------------
-// 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)
-        {
-        __LEAVE_IF_ERROR ( err );
-        }
-
-    if (err == KErrNotFound)
-        {
-        FLOG(_L(" update time stamp not found "));
-        }
-
-    FLOG(_L("CFotaServer::GetUpdateTimeStampL  <<"));
-    }
-
-void CFotaServer::GetCurrentFwDetailsL(TDes8& aName, TDes8& aVersion,
-        TInt& aSize)
-    {
-    FLOG(_L("CFotaServer::GetCurrentFwDetailsL >>"));
-
-    TPackageState package = GetStateL(-1);
-
-    aName.Copy(package.iPkgName);
-    aVersion.Copy(package.iPkgVersion);
-    aSize = package.iPkgSize;
-
-    FLOG(_L("CFotaServer::GetCurrentFwDetailsL <<"));
-    }
-// --------------------------------------------------------------------------
-// CFotaServer::GetUpdatePackageIdsL
-// --------------------------------------------------------------------------
-//
-void CFotaServer::GetUpdatePackageIdsL(TDes16& aPackageIdList)
-    {
-    FLOG(_L("CFotaServer::GetUpdatePackageIdsL()"));
-    __LEAVE_IF_ERROR(KErrNotSupported);
-    }
-
-// --------------------------------------------------------------------------
-// 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::ResetFotaStateL(const TInt aPackageID)
-    {
-    FLOG(_L("CFotaServer::ResetFotaStateL %d"), aPackageID);
-    TPackageState state;
-    TBool toidle(EFalse);
-    TBool deletepkg(EFalse);
-
-    iDatabase->OpenDBL();
-    state = iDatabase->GetStateL(aPackageID, iLastFwUrl);
-
-    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;
-            }
-            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();
-        }
-
-    iDatabase->CloseAndCommitDB();
-
-    SetStartupReason(EFotaDefault);
-
-    if (deletepkg)
-        {
-        DownloaderL()->DeleteUpdatePackageL();
-        }
-    }
-
-void CFotaServer::ResetCounters()
-    {
-    FLOG(_L("CFotaServer::ResetCounters >>"));
-
-    CRepository* centrep = NULL;
-    TInt maxcount(0);
-    TRAPD( err, centrep = CRepository::NewL( KCRUidFotaServer ) );
-    if (err == KErrNone)
-        {
-        err = centrep->Get(KFOTAMaxPostponeCount, maxcount);
-        err = centrep->Set(KFOTAUserPostponeCount, maxcount);
-        err = centrep->Set(KFOTADownloadRestartCount, KMaxDownloadRestartCount);
-        }
-    delete centrep;
-    centrep = NULL;
-
-    FLOG(_L("CFotaServer::ResetCounters, postpone count set to %d, err = %d <<"), maxcount, err);
-    }
-
-TBool CFotaServer::IsUserPostponeAllowed()
-    {
-    FLOG(_L("CFotaServer::IsUserPostponeAllowed >>"));
-
-    TBool ret(ETrue);
-    CRepository* centrep = NULL;
-    TInt count(1);
-    TRAPD( err, centrep = CRepository::NewL( KCRUidFotaServer ) );
-    if (err == KErrNone)
-        {
-        err = centrep->Get(KFOTAUserPostponeCount, count);
-        }
-    delete centrep;
-    centrep = NULL;
-
-    if (count == 0)
-        ret = EFalse;
-    else if (count == -1) //-1 signifies infinite postpone
-        ret = ETrue;
-    
-    FLOG(_L("CFotaServer::IsUserPostponeAllowed, count = %d, ret = %d, err = %d >>"), count, ret, err);
-    
-    return ret;
-    }
-
-void CFotaServer::DecrementUserPostponeCount()
-    {
-    FLOG(_L("CFotaServer::DecrementUserPostponeCount >>"));
-
-    CRepository* centrep = NULL;
-    TInt count;
-    TRAPD( err, centrep = CRepository::NewL( KCRUidFotaServer ) );
-    if (err == KErrNone)
-        {
-        err = centrep->Get(KFOTAUserPostponeCount, count);
-        if (--count < 0)
-            count = 0;
-        err = centrep->Set(KFOTAUserPostponeCount, count);
-        }
-    delete centrep;
-    centrep = NULL;
-
-    FLOG(
-            _L("CFotaServer::DecrementUserPostponeCount, tries left: %d, err = %d >>"),
-            count, err);
-    }
-
-TBool CFotaServer::DecrementDownloadRestartCount()
-    {
-    FLOG(_L("CFotaServer::DecrementDownloadRestartCount >>"));
-    
-    TBool ret (ETrue);
-    CRepository* centrep = NULL;
-    TInt count;
-    
-    TRAPD( err, centrep = CRepository::NewL( KCRUidFotaServer ) );
-    if (err == KErrNone)
-        {
-        err = centrep->Get(KFOTADownloadRestartCount, count);
-        if (--count < 0)
-            count = 0;
-        err = centrep->Set(KFOTADownloadRestartCount, count);
-        }
-    delete centrep;
-    centrep = NULL;
-    
-    if (count == 0)
-        ret = EFalse;
-    
-    FLOG(_L("CFotaServer::DecrementDownloadRestartCount, ret = %d, err = %d <<"), ret, err);
-    return ret;
-    }
-
-
-// --------------------------------------------------------------------------
-// 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 (iPackageState));
-        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::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::IsDeviceDriveBusyL 
-// Finds if device encryption or decryption is in progress.
-// It is harmful to restart device whilst encryption/decryption is in progress
-// --------------------------------------------------------------------------
-//
-TBool CFotaServer::IsDeviceDriveBusyL()
-    {
-    FLOG(_L("CFotaServer::IsDeviceDriveBusyL >>"));
-
-    TBool ret(EFalse);
-    FeatureManager::InitializeLibL();
-    TBool defeature = FeatureManager::FeatureSupported(
-            KFeatureIdFfDeviceEncryptionFeature);
-    FeatureManager::UnInitializeLib();
-
-    if (defeature)
-        {
-        TInt value(EOpIdle); // Encryption idle
-        RProperty::Get(KDevEncProtectedUid, KDevEncOperationKey, value);
-
-        if (value != EOpIdle)
-            ret = ETrue;
-        }
-
-    FLOG(_L("CFotaServer::IsDeviceDriveBusyL, ret = %d <<"), ret);
-    return ret;
-    }
-// --------------------------------------------------------------------------
-// CFotaDownload::SetIapToUseL
-// Sets the IAP ID to use. This menthod is used in fresh and resume download.
-// --------------------------------------------------------------------------
-//
-void CFotaServer::SetIapToUseL()
-    {
-    FLOG(_L("CFotaServer::SetIapToUseL >>"));
-
-    TInt aIapId(KErrNotFound);
-
-    // GET IAP FROM PROFILE ----------------------------------------------
-
-    FLOG(_L("[FotaServer]   1"));
-    RSyncMLSession syncsession;
-    syncsession.OpenL();
-    FLOG(_L("[FotaServer]   2"));
-    RSyncMLDevManProfile smlprof;
-    RArray<TSmlTransportId> connections;
-    TSmlTransportId transport;
-    RSyncMLConnection connection;
-
-    CleanupClosePushL(syncsession);
-    CleanupClosePushL(smlprof);
-    CleanupClosePushL(connections);
-    CleanupClosePushL(connection);
-
-    FLOG(_L("[FotaServer]   1.1 opening syncml profileid %d "),
-            iPackageState.iProfileId);
-    smlprof.OpenL(syncsession, iPackageState.iProfileId, 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);
-
-    CleanupStack::PopAndDestroy(&connection);
-    CleanupStack::PopAndDestroy(&connections);
-    CleanupStack::PopAndDestroy(&smlprof);
-    CleanupStack::PopAndDestroy(&syncsession);
-
-    if (aIapId > KErrNotFound)
-        {
-        iPackageState.iIapId = aIapId;
-        }
-    else if (iPackageState.iState != RFotaEngineSession::EDownloadProgressing)
-        {
-        // GET IAP FROM CURRENT CONNECTION ----------------------------------------------
-
-        FLOG(_L("IAP in DM profile is default. Hence reading from the connection manager..."));
-        TInt sockIapid(-1);
-        RSocketServ serv;
-        CleanupClosePushL(serv);
-        User::LeaveIfError(serv.Connect());
-
-        RConnection conn;
-        CleanupClosePushL(conn);
-        User::LeaveIfError(conn.Open(serv));
-
-        TUint count(0);
-        User::LeaveIfError(conn.EnumerateConnections(count));
-        // enumerate connections
-        for (TUint idx = 1; idx <= count; ++idx)
-            {
-            TConnectionInfo connectionInfo;
-            TConnectionInfoBuf connInfo(connectionInfo);
-
-            TInt err = conn.GetConnectionInfo(idx, connInfo); // iapid
-            if (err != KErrNone)
-                {
-                CleanupStack::PopAndDestroy(2); // conn, serv
-                User::Leave(err);
-                }
-            // enumerate connectionclients
-            TConnectionEnumArg conArg;
-            conArg.iIndex = idx;
-            TConnEnumArgBuf conArgBuf(conArg);
-            err = conn.Control(KCOLConnection, KCoEnumerateConnectionClients,
-                    conArgBuf);
-            if (err != KErrNone)
-                {
-                CleanupStack::PopAndDestroy(2); // conn, serv
-                User::Leave(err);
-                }
-            TInt cliCount = conArgBuf().iCount;
-            for (TUint j = 1; j <= cliCount; ++j)
-                {
-                TConnectionGetClientInfoArg conCliInfo;
-                conCliInfo.iIndex = j;
-                TConnGetClientInfoArgBuf conCliInfoBuf(conCliInfo);
-                err = conn.Control(KCOLConnection,
-                        KCoGetConnectionClientInfo, conCliInfoBuf);
-
-                if (err != KErrNone)
-                    {
-                    CleanupStack::PopAndDestroy(2); // conn, serv
-                    User::Leave(err);
-                    }
-                TConnectionClientInfo conCliInf = conCliInfoBuf().iClientInfo;
-                TUid uid = conCliInf.iUid;
-                if (uid == TUid::Uid(KSosServerUid))
-                    {
-                    sockIapid = connInfo().iIapId;
-                    FLOG(_L("[FotaServer]  IAP found from ESOCK %d"), sockIapid);
-                    iPackageState.iIapId = sockIapid;
-                    }
-
-                FLOG(_L("[FotaServer]  CFotaDownload::DownloadL uid %x"),
-                        uid.iUid);
-                }
-            }
-        CleanupStack::PopAndDestroy(2); // conn, serv     
-        }
-
-    FLOG(_L("CFotaDownload::SetIapToUseL, iap = %d <<"), iPackageState.iIapId);
-    }
-// --------------------------------------------------------------------------
-// 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::ResetFotaStateToFailL()
-    {
-    FLOG(_L("CFotaServer::ResetFotaStateToFailL >>"));
-
-    TPackageState state;
-    if (!iDatabase->IsOpen())
-        iDatabase->OpenDBL();
-    //Fetch the software version that was before download from db.
-    state = iDatabase->GetStateL(iPackageState.iPkgId, iLastFwUrl);
-    state.iState = RFotaEngineSession::EUpdateFailed;
-    state.iResult = RFotaEngineSession::EResPackageMismatch;
-    iDatabase->SetStateL(state, KNullDesC8, EFDBState | EFDBResult);
-    iDatabase->CloseAndCommitDB();
-
-    DownloaderL()->DeleteUpdatePackageL();
-
-    ReportFwUpdateStatusL(state);
-
-    FLOG(_L("CFotaServer::ResetFotaStateToFailL <<"));
-    }
-
-void CFotaServer::CreateDiskReservation()
-    {
-    FLOG(_L("CFotaServer::CreateDiskReservation >>"));
-
-    TRAP_IGNORE(DownloaderL()->CreateDiskReservation());
-
-    FLOG(_L("CFotaServer::CreateDiskReservation <<"));
-    }
-
-void CFotaServer::DeleteDiskReservation(TDesC& path)
-    {
-    FLOG(_L("CFotaServer::DeleteDiskReservation >>"));
-
-    QString temp = QString::fromUtf8(reinterpret_cast<const char*> (path.Ptr()), path.Length());
-
-    TRAP_IGNORE(DownloaderL()->DeleteDiskReservation(temp));
-
-    FLOG(_L("CFotaServer::DeleteDiskReservation <<"));
-    }
-
-inline DownloadManagerClient* CFotaServer::DownloaderL()
-    {
-    if (!iDownloader)
-        {
-        FLOG(_L("Creating new download client..."));
-        iDownloader = DownloadManagerClient::NewL(this);
-        }
-
-    return iDownloader;
-    }
-
-void CFotaServer::DropSession()
-    {
-    FLOG(_L("CFotaServer::DropSession >>"));
-
-    iSessionCount--;
-
-    FLOG(_L("Number of active sessions = %d"), iSessionCount);
-
-    if (iSessionCount == 0 && !iAsyncOperation)
-        {
-        StopServerWhenPossible();
-        ServerCanShut(ETrue);
-        }
-
-    FLOG(_L("CFotaServer::DropSession <<"));
-    }
-
-static TInt StaticApplicationShutter(TAny *aPtr)
-    {
-    __ASSERT_ALWAYS( aPtr, User::Panic(KFotaPanic, KErrArgument) );
-    CFotaServer* srv = (CFotaServer*) aPtr;
-    srv->StopServerWhenPossible();
-    return KErrNone;
-    }
-
-void CFotaServer::WakeupServer()
-    {
-    FLOG(_L("CFotaServer::WakeupServer >>"));
-    ServerCanShut(EFalse);
-    if (iAppShutter)
-        {
-        iAppShutter->Cancel();
-        delete iAppShutter;
-        iAppShutter = NULL;
-        }
-
-    FLOG(_L("CFotaServer::WakeupServer >>"));
-    }
-
-void CFotaServer::StopServerWhenPossible()
-    {
-    FLOG(_L("CFotaServer::StopServerWhenPossible, sessioncount = %d, servercanshut = %d >>"), iSessionCount, iServerCanShut);
-    //Check if it's the right time to do so..
-
-    if (iSessionCount == 0 && iServerCanShut)
-        {
-        FLOG(_L("Shutting down the Fota server..."));
-        //Do some cleanup
-
-        if (iAppShutter)
-            {
-            iAppShutter->Cancel();
-            delete iAppShutter;
-            iAppShutter = NULL;
-            }
-
-        //Exit. This will stop the active scheduler too.
-        QApplication::exit();
-        }
-    else if (iSessionCount == 0)
-        {
-        FLOG(_L("Diferring shutdown now. Started shutdown timer..."));
-
-        if (!iAppShutter)
-            {
-            TRAP_IGNORE(
-                    iAppShutter = CPeriodic::NewL (EPriorityNormal);
-                    iAppShutter->Start(KFotaTimeShutDown, KFotaTimeShutDown,
-                    TCallBack(StaticApplicationShutter, this));
-                    );
-            }
-
-        }
-    else
-        {
-        //one or more client is still open
-        FLOG(_L("Diferring shutdown now."));
-        WakeupServer();
-        }
-    FLOG(_L("CFotaServer::StopServerWhenPossible <<"));
-    }
-
-void CFotaServer::ServerCanShut(TBool aParam)
-    {
-    FLOG(_L("CFotaServer::ServerCanShut, param = %d >>"), aParam);
-
-    iServerCanShut = aParam;
-
-    FLOG(_L("CFotaServer::ServerCanShut <<"));
-
-    }
-
-void CFotaServer::ConstructApplicationUI(TBool aVal)
-    {
-    FLOG(_L("CFotaServer::ConstructApplicationUI, value = %d >>"), aVal);
-
-    if (!aVal)
-        iMainwindow.lower();
-    else
-        iMainwindow.raise();
-    
-    FLOG(_L("CFotaServer::ConstructApplicationUI <<"));
-    }
-
-
-void CFotaServer::SetVisible(TBool aVisible)
-{
-    FLOG(_L("CFotaServer::SetVisible >>"));
-
-    if(iFullScreenDialog)
-	iFullScreenDialog->SetVisible(aVisible);
-
-    FLOG(_L("CFotaServer::SetVisible <<"));
-}
-
-//End of file