satengine/SatServer/Commands/RefreshRequiredCmd/src/CRefreshRequiredHandler.cpp
changeset 46 2fa1fa551b0b
parent 42 35488577e233
child 48 78df25012fda
--- a/satengine/SatServer/Commands/RefreshRequiredCmd/src/CRefreshRequiredHandler.cpp	Mon Aug 23 15:50:31 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,847 +0,0 @@
-/*
-* Copyright (c) 2002-2008 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:  Handles RefreshRequired command
-*
-*/
-
-
-
-// INCLUDE FILES
-#include    <msatrefreshobserver.h>
-#include    "MSatSSimSubscriberId.h"
-#include    "MSatSystemState.h"
-#include    "MSatEventMonitorContainer.h"
-#include    "MSatSUiClientHandler.h"
-#include    "CRefreshRequiredHandler.h"
-#include    "MSatApi.h"
-#include    "MSatUtils.h"
-#include    "MSatBIPUtils.h"
-#include    "MSatUiSession.h"
-#include    "SatSOpcodes.h"
-#include    "MSatRefreshSubSession.h"
-#include    "msatmultimodeapi.h"
-#include    "SatLog.h"
-
-// CONSTANTS
-const TInt KAidMinSize( 12 );
-
-
-// ============================ MEMBER FUNCTIONS ===============================
-
-// -----------------------------------------------------------------------------
-// CRefreshRequiredHandler::CRefreshRequiredHandler
-// C++ default constructor can NOT contain any code, that
-// might leave.
-// -----------------------------------------------------------------------------
-//
-//lint -e{1403, 1769} Can not be initialized, harmless.
-CRefreshRequiredHandler::CRefreshRequiredHandler() :
-    CSatCommandHandler(),
-    iRefreshRequiredData(),
-    iRefreshRequiredPckg( iRefreshRequiredData ),
-    iRefreshRequiredRsp(),
-    iRefreshRequiredRspPckg( iRefreshRequiredRsp ),
-    iQueryData(),
-    iQueryPckg( iQueryData ),
-    iQueryRsp(),
-    iQueryRspPckg( iQueryRsp ),
-    iRefreshQueryClientCount( 0 ),
-    iAllowRefresh( ETrue )
-    {
-    LOG( SIMPLE, "REFRESHREQ: \
-        CRefreshRequiredHandler::CRefreshRequiredHandler calling - exiting" )
-    }
-
-// -----------------------------------------------------------------------------
-// CRefreshRequiredHandler::ConstructL
-// Symbian 2nd phase constructor can leave.
-// -----------------------------------------------------------------------------
-//
-void CRefreshRequiredHandler::ConstructL()
-    {
-    LOG( SIMPLE, "REFRESHREQ: CRefreshRequiredHandler::ConstructL calling" )
-
-    // Register events to be listen.
-    iUtils->RegisterL( this, MSatUtils::ERefreshAllowed );
-    iUtils->RegisterL( this, MSatUtils::ERefreshNotAllowed );
-
-    LOG( SIMPLE, "REFRESHREQ: CRefreshRequiredHandler::ConstructL exiting" )
-    }
-
-// -----------------------------------------------------------------------------
-// CRefreshRequiredHandler::NewL
-// Two-phased constructor.
-// -----------------------------------------------------------------------------
-//
-CRefreshRequiredHandler* CRefreshRequiredHandler::NewL( MSatUtils* aUtils )
-    {
-    LOG( SIMPLE, "REFRESHREQ: CRefreshRequiredHandler::NewL calling" )
-
-    CRefreshRequiredHandler* self = new( ELeave ) CRefreshRequiredHandler;
-
-    CleanupStack::PushL( self );
-    self->BaseConstructL( aUtils );
-    self->ConstructL();
-    CleanupStack::Pop( self );
-
-    LOG( SIMPLE, "REFRESHREQ: CRefreshRequiredHandler::NewL exiting" )
-    return self;
-    }
-
-
-// Destructor
-CRefreshRequiredHandler::~CRefreshRequiredHandler()
-    {
-    LOG( SIMPLE, "REFRESHREQ: \
-        CRefreshRequiredHandler::~CRefreshRequiredHandler calling" )
-
-    Cancel();
-
-    LOG( SIMPLE, "REFRESHREQ: \
-        CRefreshRequiredHandler::~CRefreshRequiredHandler exiting" )
-    }
-
-// -----------------------------------------------------------------------------
-// CRefreshRequiredHandler::Event
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-//
-void CRefreshRequiredHandler::Event( TInt aEvent )
-    {
-    LOG( SIMPLE, "REFRESHREQ: CRefreshRequiredHandler::Event calling" )
-
-    switch ( aEvent )
-        {
-        case MSatUtils::ERefreshAllowed:
-            {
-            LOG( NORMAL, "REFRESHREQ:   Event: ERefreshAllowed" )
-            AllowRefresh( ETrue );
-            break;
-            }
-
-        case MSatUtils::ERefreshNotAllowed:
-            {
-            LOG( NORMAL, "REFRESHREQ:   Event: ERefreshNotAllowed" )
-            AllowRefresh( EFalse );
-            break;
-            }
-
-        default:
-            {
-            LOG2( NORMAL, "REFRESHREQ:   Event: %i", aEvent )
-            CSatCommandHandler::Event( aEvent );
-            break;
-            }
-        }
-
-    LOG( SIMPLE, "REFRESHREQ: CRefreshRequiredHandler::Event exiting" )
-    }
-
-// -----------------------------------------------------------------------------
-// CRefreshRequiredHandler::ClientResponse
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-//
-void CRefreshRequiredHandler::ClientResponse()
-    {
-    LOG( SIMPLE, "REFRESHREQ: CRefreshRequiredHandler::ClientResponse calling" )
-    TBool commandAllowed( ETrue );
-
-    // Check ui client response for accepting refresh.
-    if ( iQueryRsp.iAccepted )
-        {
-        LOG( SIMPLE, "REFRESHREQ: CRefreshRequiredHandler::ClientResponse \
-             accept refresh" )
-        // Check phone state again, whether refresh is still allowed,
-        if ( BusyNotAllowed() )
-            {
-            LOG( SIMPLE, "REFRESHREQ: CRefreshRequiredHandler::ClientResponse \
-            BusyNotAllowed" )
-            // Refresh not allowed due phone is busy.
-            iRefreshRequiredRsp.iAdditionalInfo.SetLength( 1 );
-            iRefreshRequiredRsp.iAdditionalInfo[0] = RSat::KMeBusyOnCall;
-            commandAllowed = EFalse;
-            }
-        }
-    // Client did not accept refresh.
-    else
-        {
-        // Refresh is prevented by the user
-        iRefreshRequiredRsp.iAdditionalInfo.SetLength( 1 );
-        iRefreshRequiredRsp.iAdditionalInfo[0] = RSat::KScreenBusy;
-        commandAllowed = EFalse;
-
-        if ( iQueryRsp.iSessionTerminatedByUser )
-            {
-            LOG( SIMPLE, "REFRESHREQ:   close the ui session" )
-            // Next SimSession end will close the ui session
-            iUtils->NotifyEvent( MSatUtils::ESessionTerminatedByUser );
-            }
-        LOG( SIMPLE, "REFRESHREQ:   User did not accept refresh" )
-        }
-
-    if ( commandAllowed )
-        {
-        LOG( SIMPLE, "REFRESHREQ:   commandAllowed" )
-        // Refresh allowed.
-        iRefreshRequiredRsp.iInfoType = RSat::KNoAdditionalInfo;
-        iRefreshRequiredRsp.iGeneralResult = RSat::KSuccess;
-
-        if ( RSat::ESimReset == iRefreshRequiredData.iType )
-            {
-            LOG( SIMPLE, "REFRESHREQ:   ESimReset" )
-            iUtils->NotifyEvent( MSatUtils::ESimResetCalled );
-            }
-        }
-    else
-        {
-        // Notify clients already allowed Refresh about cancel.
-        NotifyRefreshClientsCancel();
-
-        // Refresh not allowed.
-        iRefreshRequiredRsp.iInfoType = RSat::KMeProblem;
-        iRefreshRequiredRsp.iGeneralResult = RSat::KMeUnableToProcessCmd;
-        }
-
-    // Send the response
-    iRefreshRequiredRsp.SetPCmdNumber( iRefreshRequiredData.PCmdNumber() );
-    RefreshAllowed( iRefreshRequiredRspPckg );
-
-    LOG( SIMPLE, "REFRESHREQ: CRefreshRequiredHandler::ClientResponse exiting" )
-    }
-
-// -----------------------------------------------------------------------------
-// CRefreshRequiredHandler::DoCancel
-// Cancels the sat request.
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-//
-void CRefreshRequiredHandler::DoCancel()
-    {
-    LOG( SIMPLE, "REFRESHREQ: CRefreshRequiredHandler::DoCancel calling" )
-
-    iUtils->USatAPI().NotifyRefreshRequiredCancel();
-
-    LOG( SIMPLE, "REFRESHREQ: CRefreshRequiredHandler::DoCancel exiting" )
-    }
-
-// -----------------------------------------------------------------------------
-// CRefreshRequiredHandler::IssueUSATRequest
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-//
-void CRefreshRequiredHandler::IssueUSATRequest( TRequestStatus& aStatus )
-    {
-    LOG( SIMPLE,
-        "REFRESHREQ: CRefreshRequiredHandler::IssueUSATRequest calling" )
-
-    // Clear the IPC package.
-    new (&iRefreshRequiredData) RSat::TRefreshV2();
-    iQueryRsp.iAccepted = EFalse; // default
-
-    iUtils->USatAPI().NotifyRefreshRequired( aStatus, iRefreshRequiredPckg );
-
-    LOG( SIMPLE,
-        "REFRESHREQ: CRefreshRequiredHandler::IssueUSATRequest exiting" )
-    }
-
-// -----------------------------------------------------------------------------
-// CRefreshRequiredHandler::CommandAllowed
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-//
-TBool CRefreshRequiredHandler::CommandAllowed()
-    {
-    LOG( SIMPLE, "REFRESHREQ: CRefreshRequiredHandler::CommandAllowed calling" )
-    TBool commandAllowed( ETrue );
-
-    #ifdef ENABLE_SAT_LOGGING
-
-    // Log Refresh type.
-    switch ( iRefreshRequiredData.iType )
-        {
-        case RSat::ERefreshTypeNotSet:
-            {
-            LOG( NORMAL,
-                "REFRESHREQ:   Refresh type: ERefreshTypeNotSet" )
-            break;
-            }
-
-        case RSat::ESimInitFullFileChangeNotification:
-            {
-            LOG( NORMAL,
-                "REFRESHREQ:   Refresh type: ESimInitFullFileChangeNotificat." )
-            break;
-            }
-
-        case RSat::EFileChangeNotification:
-            {
-            LOG( NORMAL,
-                "REFRESHREQ:   Refresh type: EFileChangeNotification" )
-            break;
-            }
-
-        case RSat::ESimInitFileChangeNotification:
-            {
-            LOG( NORMAL,
-                "REFRESHREQ:   Refresh type: ESimInitFileChangeNotification" )
-            break;
-            }
-
-        case RSat::ESimInit:
-            {
-            LOG( NORMAL,
-                "REFRESHREQ:   Refresh type: ESimInit" )
-            break;
-            }
-
-        case RSat::ESimReset:
-            {
-            LOG( NORMAL,
-                "REFRESHREQ:   Refresh type: ESimReset" )
-            break;
-            }
-
-        case RSat::EUsimApplicationReset:
-            {
-            LOG( NORMAL,
-                "REFRESHREQ:   Refresh type: EUsimApplicationReset" )
-            break;
-            }
-
-        case RSat::E3GSessionReset:
-            {
-            LOG( NORMAL,
-                "REFRESHREQ:   Refresh type: E3GSessionReset" )
-            break;
-            }
-
-        default:
-            {
-            LOG2( NORMAL,
-                "REFRESHREQ:   Refresh type: unknown %d",
-                iRefreshRequiredData.iType )
-            break;
-            }
-        }
-
-    // Log the file list.
-    TInt fileCount ( iRefreshRequiredData.iFileList.Length() );
-    LOG2( NORMAL, "REFRESHREQ:   Refresh file count: %d", fileCount )
-    for ( TInt fileIndex = 0; fileIndex < fileCount; fileIndex++ )
-        {
-        LOG2( NORMAL, "REFRESHREQ:     Refresh file: %x",
-            iRefreshRequiredData.iFileList[ fileIndex ] )
-        }
-
-    #endif
-
-    // Check EFimsi file refresh type.
-    if ( !EFIMSIRefreshAllowed() )
-        {
-        LOG( NORMAL, "REFRESHREQ:   EFIMSIRefreshAllowed false" )
-        // Refresh not allowed
-        iRefreshRequiredRsp.iGeneralResult = RSat::KCmdDataNotUnderstood;
-        iRefreshRequiredRsp.iInfoType = RSat::KNoAdditionalInfo;
-        commandAllowed = EFalse;
-        }
-    // Check phone state.
-    else if ( BusyNotAllowed() )
-        {
-        LOG( NORMAL, "REFRESHREQ:   BusyNotAllowed true" )
-        // Refresh not allowed
-        iRefreshRequiredRsp.iGeneralResult = RSat::KMeUnableToProcessCmd;
-        iRefreshRequiredRsp.iInfoType = RSat::KMeProblem;
-        iRefreshRequiredRsp.iAdditionalInfo.SetLength( 1 );
-        iRefreshRequiredRsp.iAdditionalInfo[0] = RSat::KMeBusyOnCall;
-        commandAllowed = EFalse;
-        }
-    //Check the AidState.
-    else
-        {
-        const TAidState aidState = AidState();
-        LOG2( NORMAL, "REFRESHREQ: AID state: %i", aidState )
-        switch ( aidState )
-            {
-            case EAidNotActive:
-                {
-                iRefreshRequiredRsp.iGeneralResult =
-                    RSat::KRefreshUSIMNotActive;
-                iRefreshRequiredRsp.iInfoType = RSat::KNoAdditionalInfo;
-                commandAllowed = EFalse;
-                break;
-                }
-
-            case EAidInvalid:
-                {
-                iRefreshRequiredRsp.iGeneralResult =
-                    RSat::KCmdDataNotUnderstood;
-                iRefreshRequiredRsp.iInfoType = RSat::KNoAdditionalInfo;
-                commandAllowed = EFalse;
-                break;
-                }
-
-            default:
-                {
-                LOG( NORMAL, "REFRESHREQ:   Refresh allowed" )
-                break;
-                }
-            }
-        }
-
-    // When refresh is not allowed, send terminal response to sim.
-    if ( !commandAllowed )
-        {
-        LOG( NORMAL, "REFRESHREQ:   Refresh not allowed" )
-        iRefreshRequiredRsp.SetPCmdNumber( iRefreshRequiredData.PCmdNumber() );
-
-        // Send the response
-        RefreshAllowed( iRefreshRequiredRspPckg );
-        }
-
-    LOG2( SIMPLE, "REFRESHREQ: CRefreshRequiredHandler::CommandAllowed \
-          exiting, commandAllowed: %d", commandAllowed )
-    return commandAllowed;
-    }
-
-// -----------------------------------------------------------------------------
-// CRefreshRequiredHandler::NeedUiSession
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-//
-TBool CRefreshRequiredHandler::NeedUiSession()
-    {
-    LOG( NORMAL, "REFRESHREQ: CRefreshRequiredHandler::NeedUiSession calling" )
-    TBool needUiSession( EFalse );
-
-    if ( RSat::ESimReset == iRefreshRequiredData.iType
-            && iUtils->SystemState().IsConfirmSatOperationsOn() )
-        {
-        LOG( NORMAL, "REFRESHREQ:   Need ui session" )
-        needUiSession = ETrue;
-        }
-
-    // Notify Cover UI if it's supported
-    if ( needUiSession && iUtils->CoverUiSupported() )
-        {
-        LOG( NORMAL, "REFRESHREQ:   CoverUiSupported" )
-        TSatCommandData medEventData;
-        medEventData.iPCmdNumber = RSat::ERefresh;
-
-        //Doesn't have alpha id
-        medEventData.iAlphaId.iStatus = RSat::EAlphaIdNotSet;
-        medEventData.iDuration.iNumOfUnits = KSatSustainedDuration;
-        medEventData.iDuration.iTimeUnit = RSat::ESeconds;
-        medEventData.iIconID.iQualifier = RSat::ENoIconId;
-
-        TSatCommandPckg tPckg( medEventData );
-        iUtils->RaiseSatEvent( tPckg );
-        }
-
-    LOG2( NORMAL, "REFRESHREQ: CRefreshRequiredHandler::NeedUiSession exiting\
-          needUiSession: %d", needUiSession )
-    return needUiSession;
-    }
-
-// -----------------------------------------------------------------------------
-// CRefreshRequiredHandler::HandleCommand
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-//
-void CRefreshRequiredHandler::HandleCommand()
-    {
-    LOG( SIMPLE, "REFRESHREQ: CRefreshRequiredHandler::HandleCommand calling" )
-
-    // Ask permission from clients.
-    if ( QueryRefreshClients() )
-        {
-        LOG( SIMPLE, "REFRESHREQ: CRefreshRequiredHandler::HandleCommand \
-             refresh" )
-        DoRefresh();
-        }
-
-    LOG( SIMPLE, "REFRESHREQ: CRefreshRequiredHandler::HandleCommand exiting" )
-    }
-
-// -----------------------------------------------------------------------------
-// CRefreshRequiredHandler::UiLaunchFailed
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-//
-void CRefreshRequiredHandler::UiLaunchFailed()
-    {
-    LOG( SIMPLE, "REFRESHREQ: CRefreshRequiredHandler::UiLaunchFailed calling" )
-
-    iRefreshRequiredRsp.iGeneralResult = RSat::KMeUnableToProcessCmd;
-    iRefreshRequiredRsp.iInfoType = RSat::KNoAdditionalInfo;
-    iRefreshRequiredRsp.SetPCmdNumber( iRefreshRequiredData.PCmdNumber() );
-
-    // Send the response
-    RefreshAllowed( iRefreshRequiredRspPckg );
-
-    LOG( SIMPLE, "REFRESHREQ: CRefreshRequiredHandler::UiLaunchFailed exiting" )
-    }
-
-// -----------------------------------------------------------------------------
-// CRefreshRequiredHandler::EFIMSIRefreshAllowed
-// If an EFimsi file change occurs under certain conditions a refresh is not
-// allowed.
-// -----------------------------------------------------------------------------
-//
-TBool CRefreshRequiredHandler::EFIMSIRefreshAllowed() const
-    {
-    LOG( SIMPLE,
-        "REFRESHREQ: CRefreshRequiredHandler::EFIMSIRefreshAllowed calling" )
-    TBool refreshAllowed( ETrue );
-
-    // If changed file is EFimsi and the refresh type is any of the ones
-    // specifed below, no refresh will take place as the behaviour of the UE
-    // is unpredicatable.
-    if ( RSat::EFileChangeNotification == iRefreshRequiredData.iType )
-        {
-        LOG( SIMPLE,
-        "REFRESHREQ: CRefreshRequiredHandler::EFIMSIRefreshAllowed \
-        EFileChangeNotification" )
-        const TChar efImsi( RSat::KImsiEf );
-        const TInt imsi( iRefreshRequiredData.iFileList.Locate( efImsi ) );
-
-        // Does the EFimsi file want to be updated.
-        if ( KErrNotFound != imsi )
-            {
-            LOG( SIMPLE, "REFRESHREQ:   EFImsi file refresh not allowed" )
-            refreshAllowed = EFalse;
-            }
-        }
-
-    LOG2( SIMPLE,
-        "REFRESHREQ: CRefreshRequiredHandler::EFIMSIRefreshAllowed exiting,\
-        refreshAllowed: %d", refreshAllowed )
-    return refreshAllowed;
-    }
-
-// -----------------------------------------------------------------------------
-// CRefreshRequiredHandler::BusyNotAllowed
-// Check whether Refresh is allowed.
-// -----------------------------------------------------------------------------
-//
-TBool CRefreshRequiredHandler::BusyNotAllowed()
-    {
-    LOG( SIMPLE, 
-        "REFRESHREQ: CRefreshRequiredHandler::BusyNotAllowed calling" )
-    TBool notAllowed( EFalse );
-
-    // Busy checked only for reset due only it may prevent call.
-    if ( RSat::EFileChangeNotification != iRefreshRequiredData.iType )
-        {
-        LOG( SIMPLE,
-        "REFRESHREQ: CRefreshRequiredHandler::EFIMSIRefreshAllowed \
-        not EFileChangeNotification" )
-        // Refresh is not allowed when call is active or incoming.
-        if ( iUtils->SystemState().IsCallActive() ||
-             iUtils->SystemState().IsCallIncoming() )
-            {
-            notAllowed = ETrue;
-            LOG( NORMAL, "REFRESHREQ:   Refresh not allowed: phone is busy" )
-            }
-        }
-
-    LOG2( SIMPLE, 
-        "REFRESHREQ: CRefreshRequiredHandler::BusyNotAllowed  exiting,\
-        notAllowed: %d", notAllowed )
-    return notAllowed;
-    }
-
-// -----------------------------------------------------------------------------
-// CRefreshRequiredHandler::QueryRefreshClients
-// Notifies the observers that refresh query should start.
-// -----------------------------------------------------------------------------
-//
-TBool CRefreshRequiredHandler::QueryRefreshClients()
-    {
-    LOG( SIMPLE,
-        "REFRESHREQ: CRefreshRequiredHandler::QueryRefreshClients calling" )
-    TBool allowNow( ETrue );
-    TInt clientCount( iUtils->RefreshSubSessions().Count() );
-
-    // By default refresh is allowed after all clients have queried.
-    iAllowRefresh = ETrue;
-
-    // When there are clients, we must ask them first and refresh will be
-    // started later, after all clients have allowed it.
-    // When there are clients, we can just start refresh.
-    if ( 0 != clientCount )
-        {
-        LOG2( NORMAL, "REFRESHREQ:   Client count: %d", clientCount )
-        allowNow = EFalse;
-        iRefreshQueryClientCount = clientCount;
-        for ( TInt i = 0; i < clientCount; i++ )
-            {
-            iUtils->RefreshSubSessions()[i]->QueryClient(
-                iRefreshRequiredData );
-            }
-        }
-
-    LOG2( SIMPLE, 
-        "REFRESHREQ: CRefreshRequiredHandler::QueryRefreshClients exiting,\
-        allowNow: %d", allowNow )
-    return allowNow;
-    }
-
-// -----------------------------------------------------------------------------
-// CRefreshRequiredHandler::AllowRefresh
-// Waits for all the responses of refresh query and
-// starts or declines the refresh.
-// -----------------------------------------------------------------------------
-//
-void CRefreshRequiredHandler::AllowRefresh( TBool aAllow )
-    {
-    LOG( SIMPLE, "REFRESHREQ: CRefreshRequiredHandler::AllowRefresh calling" )
-    LOG2( SIMPLE, "REFRESHREQ: CRefreshRequiredHandler::AllowRefresh \
-          iAllowRefresh: %d", iAllowRefresh )
-    LOG2( SIMPLE, "REFRESHREQ: CRefreshRequiredHandler::AllowRefresh \
-          iRefreshQueryClientCount: %d", iRefreshQueryClientCount )
-    // if iAllowRefresh already false no need to set new value.
-    if ( iAllowRefresh )
-        {
-        iAllowRefresh = aAllow;
-        }
-
-    // Check whether all clients have replied.
-    iRefreshQueryClientCount--;
-    if ( iRefreshQueryClientCount <= 0 )
-        {
-        if ( iAllowRefresh )
-            {
-            DoRefresh();
-            }
-        else
-            {
-            LOG( NORMAL, "REFRESHREQ:   At least one client rejected refresh" )
-            // Notify clients already allowed Refresh about cancel.
-            NotifyRefreshClientsCancel();
-
-            // Construct a proper refresh response data package
-            iRefreshRequiredRsp.iInfoType = RSat::KNoAdditionalInfo;
-            iRefreshRequiredRsp.SetPCmdNumber(
-                iRefreshRequiredData.PCmdNumber() );
-            iRefreshRequiredRsp.iGeneralResult = RSat::KPCmdNotAcceptedByUser;
-
-            // Send the response
-            RefreshAllowed( iRefreshRequiredRspPckg );
-            }
-        }
-
-    LOG( SIMPLE, "REFRESHREQ: CRefreshRequiredHandler::AllowRefresh exiting" )
-    }
-
-// -----------------------------------------------------------------------------
-// CRefreshRequiredHandler::DoRefresh
-// Starts the refresh
-// -----------------------------------------------------------------------------
-//
-void CRefreshRequiredHandler::DoRefresh()
-    {
-    LOG( SIMPLE, "REFRESHREQ: CRefreshRequiredHandler::DoRefresh calling" )
-
-    if ( RSat::ESimReset == iRefreshRequiredData.iType )
-        {
-        LOG( SIMPLE, "REFRESHREQ: CRefreshRequiredHandler::DoRefresh \
-        ESimReset" )
-        // Register service request handler for RefreshRequired command,
-        // If there is already service request for query, registering
-        // updates command handler, so client responses comes to this
-        // command handler.
-        TRAPD( err, iUtils->RegisterServiceRequestL(
-            ESatSProactiveQuery,
-            ESatSProactiveQueryResponse,
-            this ) );
-
-        if ( KErrNone != err )
-            {
-            iRefreshRequiredRsp.iGeneralResult = RSat::KMeUnableToProcessCmd;
-            iRefreshRequiredRsp.iInfoType = RSat::KMeProblem;
-            iRefreshRequiredRsp.iAdditionalInfo.SetLength( 1 );
-            iRefreshRequiredRsp.iAdditionalInfo[0] = RSat::KNoSpecificMeProblem;
-            iRefreshRequiredRsp.SetPCmdNumber(
-                iRefreshRequiredData.PCmdNumber() );
-
-            // Notify clients already allowed Refresh about cancel.
-            NotifyRefreshClientsCancel();
-
-            // Send the response
-            RefreshAllowed( iRefreshRequiredRspPckg );
-            LOG2( SIMPLE, 
-                "REFRESHREQ: CRefreshRequiredHandler::DoRefresh error", err )
-            }
-        else
-            {
-            iUtils->NotifyEvent( MSatUtils::ERefreshExecuting );
-
-            // Ask the user permission to refresh. Reply will come
-            // to ClientResponse method.
-            if ( iUtils->SystemState().IsConfirmSatOperationsOn() )
-                {
-                LOG( SIMPLE, "REFRESHREQ: CRefreshRequiredHandler::DoRefresh \
-                     IsConfirmSatOperationsOn true" )
-                iQueryData.iCommand = ESatSRefreshQuery;
-                iUtils->SatUiHandler().UiSession()->SendCommand(
-                    &iQueryPckg,
-                    &iQueryRspPckg,
-                    ESatSProactiveQuery );
-                }
-            else
-                {
-                LOG( SIMPLE, "REFRESHREQ: CRefreshRequiredHandler::DoRefresh \
-                     IsConfirmSatOperationsOn false" )
-                iQueryRsp.iAccepted = ETrue;
-                ClientResponse();
-                }
-            }
-        }
-    else
-        {
-        LOG( SIMPLE, "REFRESHREQ: CRefreshRequiredHandler::DoRefresh refresh" )
-        // Construct a proper refresh response data package.
-        iRefreshRequiredRsp.iInfoType = RSat::KNoAdditionalInfo;
-        iRefreshRequiredRsp.SetPCmdNumber( iRefreshRequiredData.PCmdNumber() );
-        iRefreshRequiredRsp.iGeneralResult = RSat::KSuccess;
-
-        // Send the response
-        RefreshAllowed( iRefreshRequiredRspPckg );
-        }
-
-    LOG( SIMPLE, "REFRESHREQ: CRefreshRequiredHandler::DoRefresh exiting" )
-    }
-
-// -----------------------------------------------------------------------------
-// CRefreshHandler::NotifyRefreshClientsCancel
-// Notifies waiting clients about refrsh cancel.
-// -----------------------------------------------------------------------------
-//
-void CRefreshRequiredHandler::NotifyRefreshClientsCancel()
-    {
-    LOG( SIMPLE, 
-        "REFRESHREQ: CRefreshHandler::NotifyRefreshClientsCancel calling" )
-    LOG2( SIMPLE,
-        "REFRESHREQ: CRefreshHandler::NotifyRefreshClientsCancel \
-        RefreshSubSessions().Count: %d",iUtils->RefreshSubSessions().Count() )
-    for ( TInt i = 0; i < iUtils->RefreshSubSessions().Count() ; i++ )
-        {
-        iUtils->RefreshSubSessions()[i]->NotifyClientCancel();
-        }
-
-    LOG( SIMPLE, "REFRESHREQ: CRefreshHandler::NotifyRefreshClientsCancel exit" )
-    }
-
-// -----------------------------------------------------------------------------
-// CRefreshRequiredHandler::RefreshAllowed
-// Sends the RefreshRequired specific response to the SIM and renews the sat
-// request. Notem, this replaces TerminalRsp() here.
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-//
-void CRefreshRequiredHandler::RefreshAllowed( const TDesC8& aRsp )
-    {
-    LOG( SIMPLE, "REFRESHREQ: CRefreshRequiredHandler::RefreshAllowed calling" )
-
-    iUtils->USatAPI().RefreshAllowed( aRsp );
-    iUtils->NotifyEvent( MSatUtils::EDelaySimSessionEnd );
-    Start();
-
-    LOG( SIMPLE, "REFRESHREQ: CRefreshRequiredHandler::RefreshAllowed exiting" )
-    }
-    
-// -----------------------------------------------------------------------------
-// CRefreshHandler::CheckIndicatedAid
-// Check the state of the indicated Aid.
-// -----------------------------------------------------------------------------
-//
-CRefreshRequiredHandler::TAidState 
-CRefreshRequiredHandler::AidState() const
-    {
-    LOG( SIMPLE, "REFRESHREQ: CRefreshRequiredHandler::AidState calling" )
-
-    TAidState aidState( EAidNotActive );
-    if ( !iRefreshRequiredData.iAid.Length() )
-        {
-        aidState = EAidNull;
-        LOG( SIMPLE, "REFRESHREQ: Indicated AID Null" )
-        }
-    else if ( !IsValidAid( iRefreshRequiredData.iAid ) )
-        {
-        aidState = EAidInvalid;
-        LOG( SIMPLE, "REFRESHREQ: Indicated AID Invalid" )
-        }
-    else
-        {
-        RSat::TAid aid;
-        MSatAsyncToSync* wrapper = iUtils->CreateAsyncToSyncHelper();
-        if ( wrapper )
-            {
-            iUtils->MultiModeApi().GetCurrentActiveUSimApplication(
-                wrapper->RequestStatus() , aid );
-            // wait until GetCurrentActiveUSimApplication return aid
-            TInt err = wrapper->SetActiveAndWait();
-            LOG2( NORMAL, "REFRESHREQ: CRefreshHandler::TAidState err %d",err )
-            wrapper->Release();
-            
-            if ( KErrNone == err )
-                {
-                #ifdef ENABLE_SAT_LOGGING
-                for ( TInt i=0; i < aid.Length(); i++ )
-                    {
-                    LOG2( DETAILED, "REFRESHREQ: AID from TSY: %x", aid[i] )
-                    }
-                #endif
-                if ( aid == iRefreshRequiredData.iAid )
-                    {
-                    aidState = EAidActive;
-                    }
-                }
-            else if ( KErrNotSupported == err )
-                {
-                aidState = EAidActive;
-                }
-            }
-        LOG( SIMPLE, "REFRESHREQ: CRefreshRequiredHandler::AidState exit" )
-        }
-    return aidState;
-    }
-
-// -----------------------------------------------------------------------------
-// Check whether the given AID is valid.
-// According to TS 110 220
-// -----------------------------------------------------------------------------
-TBool CRefreshRequiredHandler::IsValidAid( const RSat::TAid& aAid ) const
-    {
-    LOG( SIMPLE, "REFRESHREQ: CRefreshRequiredHandler::\
-            IsValidAid calling-exiting" )
-    TInt result ( EFalse );
-    // Check the length of AID, it should be between 12 to 16 bytes
-    // ETSI: A0,00,00,00,09;
-    // 3GPP: A0,00,00,00,87
-    // the fifth byte is not sure in other situations. 
-    //compare the first to fourth byte
-    if ( KAidMinSize <= aAid.Length() && RSat::KAidMaxSize >= aAid.Length() )
-        {
-        if ( EAidA0 == aAid[0]&& EAid0 == aAid[1] &&
-            EAid0 == aAid[2]&& EAid0 == aAid[3] )
-            {
-            result = ETrue;
-            }
-        }
-    return result;
-    }
-
-//  End of File