satengine/SatServer/Commands/OpenChannelCmd/src/COpenChannelHandler.cpp
changeset 46 2fa1fa551b0b
parent 42 35488577e233
child 48 78df25012fda
--- a/satengine/SatServer/Commands/OpenChannelCmd/src/COpenChannelHandler.cpp	Mon Aug 23 15:50:31 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1164 +0,0 @@
-/*
-* Copyright (c) 2002-2010 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 OpenChannel command
-*
-*/
-
-
-#include    <etelpckt.h>
-#include    <etelmmerr.h>
-
-#include    "COpenChannelHandler.h"
-#include    "MSatApi.h"
-#include    "MSatUtils.h"
-#include    "MSatUiSession.h"
-#include    "MSatSystemState.h"
-#include    "MSatApnHandler.h"
-#include    "SatSOpcodes.h"
-#include    "MSatSUiClientHandler.h"
-#include    "SatLog.h"
-#include    "extendedconnpref.h"
-
-const TUint8 KChannelStatusLength( 2 );
-
-// ======== MEMBER FUNCTIONS ========
-
-// -----------------------------------------------------------------------------
-// Two-phased constructor.
-// -----------------------------------------------------------------------------
-//
-COpenChannelHandler* COpenChannelHandler::NewL( MSatUtils* aUtils )
-    {
-    LOG( SIMPLE, "OPENCHANNEL: COpenChannelHandler::NewL calling" )
-
-    COpenChannelHandler* self = new( ELeave ) COpenChannelHandler;
-
-    CleanupStack::PushL( self );
-    self->BaseConstructL( aUtils );
-    self->ConstructL();
-    CleanupStack::Pop( self );
-
-    LOG( SIMPLE, "OPENCHANNEL: COpenChannelHandler::NewL exiting" )
-    return self;
-    }
-
-// -----------------------------------------------------------------------------
-// Destructor
-// -----------------------------------------------------------------------------
-//
-COpenChannelHandler::~COpenChannelHandler()
-    {
-    LOG( SIMPLE,
-        "OPENCHANNEL: COpenChannelHandler::~COpenChannelHandler calling" )
-
-    Cancel();
-    iDataChannel = NULL;
-
-    delete iConnectionInfo.iOverrideSet;
-
-    LOG( SIMPLE,
-        "OPENCHANNEL: COpenChannelHandler::~CCloseChannelHandler exiting" )
-    }
-
-// ---------------------------------------------------------------------------
-// From class MSatCommand.
-// Response from the client.
-// ---------------------------------------------------------------------------
-//
-void COpenChannelHandler::ClientResponse()
-    {
-    LOG( SIMPLE, "OPENCHANNEL: COpenChannelHandler::ClientResponse calling" )
-
-    // Query response from client.
-    if ( !iQueryRsp.iAccepted ) // Not accepted by user
-        {
-        // Close data channel
-        CloseChannel();
-
-        if ( iQueryRsp.iSessionTerminatedByUser ) // Terminated by user
-            {
-            LOG( NORMAL, "OPENCHANNEL: COpenChannelHandler::ClientResponse \
-                Session terminated by user" )
-            // Notify sim session end command that next sim session end
-            // should close the ui session.
-            iUtils->NotifyEvent( MSatUtils::ESessionTerminatedByUser );
-
-            // Terminal response, SimSessionTerminatedByUser
-            iOpenChannelRsp.iGeneralResult = RSat::KPSessionTerminatedByUser;
-            }
-        else
-            {
-            LOG( NORMAL, "OPENCHANNEL: COpenChannelHandler::ClientResponse \
-                User not accept command" )
-
-            // Send terminal response -> User not accepted
-            iOpenChannelRsp.iGeneralResult = RSat::KPCmdNotAcceptedByUser;
-            }
-
-        iOpenChannelRsp.iInfoType = RSat::KNoAdditionalInfo;
-        iOpenChannelRsp.iAdditionalInfo.Zero();
-        iOpenChannelRsp.SetPCmdNumber( iOpenChannelData.PCmdNumber() );
-        TerminalRsp( iPCmd, iOpenChannelRspPckg );
-        }
-    else // Accepted by user
-        {
-        LOG( NORMAL,
-            "OPENCHANNEL: COpenChannelHandler::ClientResponse User accepted" )
-        // User accepted
-        const TInt linkEst( iOpenChannelData.iLinkEst );
-
-        // SetUp channel if activation is on demand
-        if ( ( RSat::EOnDemand == linkEst ) && ( KErrNone != SetUpChannel() ) )
-            {
-            // Close channel and send error if setup failed
-            CloseChannel();
-            LOG( NORMAL, "OPENCHANNEL: COpenChannelHandler::ClientResponse \
-                SetUp failed" )
-            iOpenChannelRsp.iGeneralResult = RSat::KMeUnableToProcessCmd;
-            iOpenChannelRsp.iInfoType = RSat::KNoAdditionalInfo;
-            iOpenChannelRsp.iAdditionalInfo.Zero();
-            iOpenChannelRsp.SetPCmdNumber( iOpenChannelData.PCmdNumber() );
-            TerminalRsp( iPCmd, iOpenChannelRspPckg );
-            }
-        else
-            {
-            // Send terminal response
-            SendSuccessTerminalRsp();
-            }
-
-        }
-
-    LOG( SIMPLE, "OPENCHANNEL: COpenChannelHandler::ClientResponse exiting" )
-    }
-
-// -----------------------------------------------------------------------------
-// From class MSatConnectionObserver.
-// Notification from the connection.
-// -----------------------------------------------------------------------------
-//
-void COpenChannelHandler::ConnectionNotification( TInt aError )
-    {
-    LOG2( SIMPLE, "OPENCHANNEL: COpenChannelHandler::ConnectionNotification\
-         calling with code %i", aError )
-
-    // Check connection status
-    if ( KErrNone == aError )
-        {
-        // If information indication to the user is needed, show it now.
-        if ( iNeedUiSession )
-            {
-            LOG( NORMAL, "OPENCHANNEL: COpenChannelHandler::HandleCommand \
-                Sending UI Notification" )
-
-            // Send confirmation to UI and wait for client response
-            SendConfirmToUi();
-            }
-        else
-            {
-            // Send successfull terminal response
-            SendSuccessTerminalRsp();
-            }
-        }
-    else
-        {
-        // Activation failed, Close channel and send error
-        LOG( NORMAL, "OPENCHANNEL: COpenChannelHandler::ConnectionNotification \
-            Channel activation failed" )
-
-        // Close channel
-        CloseChannel();
-
-        // PDP Activation failed
-        iOpenChannelRsp.iGeneralResult = RSat::KBearerIndepProtocolError;
-        iOpenChannelRsp.iInfoType = RSat::KMeProblem;
-        iOpenChannelRsp.iAdditionalInfo.SetLength( 1 );
-        iOpenChannelRsp.iAdditionalInfo[0] = RSat::KNoSpecificBIPError;
-        iOpenChannelRsp.SetPCmdNumber( iOpenChannelData.PCmdNumber() );
-        TerminalRsp( iPCmd, iOpenChannelRspPckg );
-        }
-
-    LOG( SIMPLE,
-        "OPENCHANNEL: COpenChannelHandler::ConnectionNotification exiting" )
-    }
-
-// -----------------------------------------------------------------------------
-// From class CSatCommandHandler.
-// Event notification.
-// -----------------------------------------------------------------------------
-//
-void COpenChannelHandler::Event( TInt aEvent )
-    {
-    LOG( SIMPLE, "OPENCHANNEL: COpenChannelHandler::Event calling" )
-
-    // Check event
-    if ( MSatUtils::ESatUiLaunched == aEvent )
-        {
-        LOG( SIMPLE, "OPENCHANNEL: COpenChannelHandler::Event ESatUiLaunched" )
-        iUtils->UnregisterEvent( this, MSatUtils::ESatUiLaunched );
-
-        // Send confirm to UI
-        SendConfirmToUi();
-        }
-
-    LOG( SIMPLE, "OPENCHANNEL: COpenChannelHandler::Event exiting" )
-    }
-
-// -----------------------------------------------------------------------------
-// From class CActive.
-// Cancels the sat request.
-// -----------------------------------------------------------------------------
-//
-void COpenChannelHandler::DoCancel()
-    {
-    LOG( SIMPLE, "OPENCHANNEL: COpenChannelHandler::DoCancel calling" )
-
-    iUtils->USatAPI().NotifyOpenChannelCancel();
-
-    LOG( SIMPLE, "OPENCHANNEL: COpenChannelHandler::DoCancel exiting" )
-    }
-
-// -----------------------------------------------------------------------------
-// From class CSatCommandHandler.
-// Requests the command notification.
-// -----------------------------------------------------------------------------
-//
-void COpenChannelHandler::IssueUSATRequest( TRequestStatus& aStatus )
-    {
-    LOG( SIMPLE, "OPENCHANNEL: COpenChannelHandler::IssueUSATRequest calling" )
-
-    // Reset values
-    iDataChannel = NULL;
-    iSetUpWithModifications = EFalse;
-    iNeedUiSession = EFalse;
-
-    // Reset open channel data.
-    new (&iOpenChannelData) RSat::TOpenGprsChannelV4();
-    new (&iQueryData) TSatQueryV1();
-
-    iUtils->USatAPI().NotifyOpenChannel( aStatus, iOpenChannelPckg );
-    iUtils->NotifyEvent( MSatUtils::EBipCommandDoneExecuting );
-
-    LOG( SIMPLE, "OPENCHANNEL: COpenChannelHandler::IssueUSATRequest exiting" )
-    }
-
-// -----------------------------------------------------------------------------
-// From class CSatCommandHandler.
-// OpenChannel command is not allowed in following situations:
-//      - Phone is not registered to homenetwork and roaming.
-//      - phone is ringing, alerting or call is on and OpenChannel command
-//        is "make call only if not busy", "make call only if not busy wiht
-//        redial" or "Call type not set".
-// -----------------------------------------------------------------------------
-//
-TBool COpenChannelHandler::CommandAllowed()
-    {
-    LOG( SIMPLE, "OPENCHANNEL: COpenChannelHandler::CommandAllowed calling" )
-
-    // Define the PCmd here since this is the first place after notification
-    iPCmd = RSat::EOpenChannelGprs; // Other possible values
-                                    // RSat::EOpenChannelCs
-                                    // RSat::EOpenChannelLocal
-
-    // Check parameters here, because every terminal response must contain info
-    // about Bearer Set and BufferSize.
-    TBool result( CheckParameters() );
-
-    // Indicates channel activation type
-    const TBool activateImmediately(
-        RSat::EImmediate == iOpenChannelData.iLinkEst );
-
-    //lint -e{961} Else block not needed.
-    if ( ( RSat::EAlphaIdProvided != iOpenChannelData.iAlphaId.iStatus ) &&
-         ( RSat::ESelfExplanatory == iOpenChannelData.iIconId.iQualifier ||
-           RSat::ENotSelfExplanatory == iOpenChannelData.iIconId.iQualifier ) )
-        {
-        iOpenChannelRsp.iGeneralResult = RSat::KCmdDataNotUnderstood;
-        iOpenChannelRsp.iInfoType = RSat::KNoAdditionalInfo;
-        iOpenChannelRsp.iAdditionalInfo.Zero();
-        result = EFalse;
-        LOG( NORMAL, "OPENCHANNEL: COpenChannelHandler::CommandAllowed \
-            icon received without alpha id" )
-        }
-    // If parameters are OK, check rest.
-    else if ( result && activateImmediately )
-        {
-        // Set result to False. If checks goes OK, this is set to ETrue.
-        result = EFalse;
-
-        RMobilePhone::TMobilePhoneRegistrationStatus registrationStatus(
-            iUtils->SystemState().GetNetworkRegistrationStatus() );
-
-        // Indicates is there service on network
-        const TBool noService(
-            ( RMobilePhone::ERegisteredOnHomeNetwork != registrationStatus ) &&
-            ( RMobilePhone::ERegisteredRoaming != registrationStatus ) );
-
-        if ( RMobilePhone::ERegistrationUnknown == registrationStatus )
-            {
-            LOG( NORMAL,
-                "OPENCHANNEL: COpenChannelHandler::CommandAllowed \
-                NetworkRegStatus not available" )
-            iOpenChannelRsp.iGeneralResult = RSat::KMeUnableToProcessCmd;
-            iOpenChannelRsp.iInfoType = RSat::KMeProblem;
-            iOpenChannelRsp.iAdditionalInfo.SetLength( 1 );
-            iOpenChannelRsp.iAdditionalInfo[0] = RSat::KNoSpecificMeProblem;
-            }
-        // Check registration status
-        else if ( noService )
-            {
-            // No service
-            LOG( NORMAL,
-                "OPENCHANNEL: COpenChannelHandler::CommandAllowed No service" )
-
-            iOpenChannelRsp.iGeneralResult = RSat::KMeUnableToProcessCmd;
-            iOpenChannelRsp.iInfoType = RSat::KMeProblem;
-            iOpenChannelRsp.iAdditionalInfo.SetLength( 1 );
-            iOpenChannelRsp.iAdditionalInfo[0] = RSat::KNoService;
-            }
-        else
-            {
-            // Command allowed
-            LOG( NORMAL, "OPENCHANNEL: COpenChannelHandler::CommandAllowed \
-                Command is allowed Immediate activation" )
-            result = ETrue;
-            }
-        }
-
-    if ( !result ) // Send Terminal response, if result is not OK
-        {
-        LOG( NORMAL, "OPENCHANNEL: COpenChannelHandler::CommandAllowed \
-        result not OK" )
-        iOpenChannelRsp.SetPCmdNumber( iOpenChannelData.PCmdNumber() );
-        TerminalRsp( iPCmd, iOpenChannelRspPckg );
-        }
-    else
-        {
-        // Register to handle UI commands.
-        TRAPD( err, iUtils->RegisterServiceRequestL( ESatSProactiveQuery,
-            ESatSProactiveQueryResponse, this ) );
-
-        LOG2( NORMAL, "OPENCHANNEL: COpenChannelHandler::CommandAllowed \
-        err: %d", err )
-        // Above function leaves only when there is not enough memory to
-        // allocate new object. So this case is very rare.
-        if ( KErrNone != err )
-            {
-            LOG( NORMAL, "OPENCHANNEL: COpenChannelHandler::CommandAllowed \
-                 Error while registering service request" )
-
-            // Send general terminal response (no BIP specific)
-            iOpenChannelRsp.iGeneralResult = RSat::KMeUnableToProcessCmd;
-            iOpenChannelRsp.iInfoType = RSat::KMeProblem;
-            iOpenChannelRsp.iAdditionalInfo.SetLength( 1 );
-            iOpenChannelRsp.iAdditionalInfo[0] = RSat::KNoSpecificMeProblem;
-            iOpenChannelRsp.SetPCmdNumber( iOpenChannelData.PCmdNumber() );
-            TerminalRsp( iPCmd, iOpenChannelRspPckg );
-
-            // Cannot complete, there are some major memory problems
-            result = EFalse;
-            }
-        // Set icon command flag whether icon data was received and 
-        // set qualifier to no icon id
-        // To be removed when icons are allowed in this command
-        else if ( ( RSat::ESelfExplanatory ==
-            iOpenChannelData.iIconId.iQualifier ) ||
-            ( RSat::ENotSelfExplanatory ==
-            iOpenChannelData.iIconId.iQualifier ) )
-            {
-            LOG( NORMAL, "OPENCHANNEL: COpenChannelHandler::CommandAllowed \
-                 ENoIconId" )
-            iIconCommand = ETrue;
-            iOpenChannelData.iIconId.iQualifier = RSat::ENoIconId;
-            }
-        else
-            {
-            LOG( NORMAL, "OPENCHANNEL: COpenChannelHandler::CommandAllowed \
-                 others" )
-            iIconCommand = EFalse;
-            }
-        }
-
-    LOG2( SIMPLE, "OPENCHANNEL: COpenChannelHandler::CommandAllowed exiting,\
-    result: %d", result )
-    return result;
-    }
-
-// -----------------------------------------------------------------------------
-// From class CSatCommandHandler.
-// Need for ui session.
-// -----------------------------------------------------------------------------
-//
-TBool COpenChannelHandler::NeedUiSession()
-    {
-    LOG( SIMPLE, "OPENCHANNEL: COpenChannelHandler::NeedUiSession calling" )
-
-    // UI is NOT needed in case where AlphaID is provided and it is a NULL
-    iNeedUiSession =
-        !( RSat::EAlphaIdNull == iOpenChannelData.iAlphaId.iStatus );
-
-    LOG( SIMPLE, "OPENCHANNEL: COpenChannelHandler::NeedUiSession exiting" )
-    // We do not need UI session at this point, but we will launch it by
-    // ourselves when we do.
-    return EFalse;
-    }
-
-// -----------------------------------------------------------------------------
-// From class CSatCommandHandler.
-// Called when USAT API notifies that command.
-// -----------------------------------------------------------------------------
-//
-void COpenChannelHandler::HandleCommand()
-    {
-    LOG( SIMPLE, "OPENCHANNEL: COpenChannelHandler::HandleCommand calling" )
-
-    // Notify others
-    iUtils->NotifyEvent( MSatUtils::EOpenChannelExecuting );
-    iUtils->NotifyEvent( MSatUtils::EBipCommandExecuting );
-
-    TInt error( MSatBIPUtils::ESatBIPNoChannelAvail ); // By default, negative
-
-    // Create data channel
-    TRAPD( leaveErr,
-        iDataChannel = iUtils->BipUtils().CreateChannelL(
-            iBearerType, error ) );
-
-    // Check the channel creation
-    if ( ( MSatBIPUtils::ESatBIPSuccess != error ) || 
-         ( KErrNone != leaveErr ) )
-        {
-        LOG( NORMAL, "OPENCHANNEL: COpenChannelHandler::HandleCommand\
-            Channel creation failed" )
-
-        // Channel creation failed -> Send terminal response
-        iOpenChannelRsp.iGeneralResult = RSat::KBearerIndepProtocolError;
-        iOpenChannelRsp.iInfoType = RSat::KMeProblem;
-        iOpenChannelRsp.iAdditionalInfo.SetLength( 1 );
-        iOpenChannelRsp.iAdditionalInfo[0] = RSat::KNoChannelAvailable;
-        iOpenChannelRsp.SetPCmdNumber( iOpenChannelData.PCmdNumber() );
-        TerminalRsp( iPCmd, iOpenChannelRspPckg );
-
-        LOG( SIMPLE, "OPENCHANNEL: COpenChannel::HandleCommand exiting" )
-        return;
-        }
-
-    LOG( NORMAL,
-        "OPENCHANNEL: COpenChannelHandler::HandleCommand Channel creation OK" )
-
-    // Open channel or request confirmation from user
-    const TInt linkEst( iOpenChannelData.iLinkEst );
-
-    // If not confirmation to user or immediate activation, open channel
-    if ( ( !iNeedUiSession || RSat::EImmediate == linkEst )
-           && KErrNone != SetUpChannel() )
-        {
-        // Setup failed, close channel and send error
-        LOG( NORMAL,
-            "OPENCHANNEL: COpenChannelHandler::HandleCommand SetUp failed" )
-
-        // Close channel, there was an error
-        CloseChannel();
-
-        // Channel setup failed
-        iOpenChannelRsp.iGeneralResult = RSat::KBearerIndepProtocolError;
-        iOpenChannelRsp.iInfoType = RSat::KMeProblem;
-        iOpenChannelRsp.iAdditionalInfo.SetLength( 1 );
-        iOpenChannelRsp.iAdditionalInfo[0] = RSat::KNoSpecificBIPError;
-        iOpenChannelRsp.SetPCmdNumber( iOpenChannelData.PCmdNumber() );
-        TerminalRsp( iPCmd, iOpenChannelRspPckg );
-
-        LOG( SIMPLE, "OPENCHANNEL: COpenChannelHandler::HandleCommand \
-            exiting" )
-        return;
-        }
-
-    // If immediate activation, activate.
-    if ( RSat::EImmediate == linkEst )
-        {
-        LOG( SIMPLE, "OPENCHANNEL: COpenChannelHandler::HandleCommand \
-             immediate activation" )
-        // Check activation
-        TInt activateError = ActivateChannel();
-        if ( KErrNone != activateError )
-            {
-            // Activation failed, Close channel and send error
-            LOG2( NORMAL, "OPENCHANNEL: COpenChannelHandler::HandleCommand \
-                Channel activation failed error = %i", activateError )
-            // Close channel
-            CloseChannel();
-
-            // Check is there a call ongoing
-            const TBool callIsOngoing( iUtils->SystemState().IsCallActive() ||
-                iUtils->SystemState().IsCallIncoming() );
-
-            iOpenChannelRsp.iGeneralResult = RSat::KBearerIndepProtocolError;
-
-            // Map the error to correct response
-            if ( KErrGprsUserAuthenticationFailure == activateError )
-                {
-                LOG( DETAILED, 
-                "OPENCHANNEL: COpenChannelHandler::HandleCommand Security \
-                error" )
-                activateError = RSat::KSecurityError;
-                }
-            else if ( KErrGprsServicesNotAllowed == activateError || callIsOngoing )
-                {
-                LOG( DETAILED, 
-                "OPENCHANNEL: COpenChannelHandler::HandleCommand Busy on \
-                call or CC on GPRS" )
-                activateError = RSat::KMeBusyOnCall;
-                iOpenChannelRsp.iGeneralResult = RSat::KMeUnableToProcessCmd;
-                }
-            else if ( ( KErrMMEtelActivationBlockedByCallControlNoText ==
-                            activateError ) ||
-                      ( KErrMMEtelActivationBlockedByCallControlWithText ==
-                            activateError ) )
-                {
-                iOpenChannelRsp.iGeneralResult = RSat::KInteractionWithCCPermanentError;
-                activateError = RSat::KActionNotAllowed;
-
-                LOG( DETAILED, 
-                "OPENCHANNEL: COpenChannelHandler::HandleCommand CC on GPRS \
-                not allowed" )
-                }
-            else
-                {
-                LOG( DETAILED, 
-                "OPENCHANNEL: COpenChannelHandler::HandleCommand No specific \
-                BIP error" )
-                activateError = RSat::KNoSpecificBIPError;
-                }
-
-            // PDP Activation failed
-            iOpenChannelRsp.iInfoType = RSat::KMeProblem;
-            iOpenChannelRsp.iAdditionalInfo.SetLength( 1 );
-            iOpenChannelRsp.iAdditionalInfo[0] =
-                static_cast<TUint16>( activateError );
-            iOpenChannelRsp.SetPCmdNumber( iOpenChannelData.PCmdNumber() );
-            TerminalRsp( iPCmd, iOpenChannelRspPckg );
-            }
-        }
-    else // OnDemand. Send terminal response or confirm to UI
-        {
-        // If information indication to the user is needed, show it now.
-        if ( iNeedUiSession )
-            {
-            LOG( NORMAL, "OPENCHANNEL: COpenChannelHandler::HandleCommand \
-                Sending UI Notification" )
-            // Send confirmation to UI and wait for client response
-            SendConfirmToUi();
-            }
-        else
-            {
-            // Send successfull terminal response
-            SendSuccessTerminalRsp();
-            }
-        }
-
-    LOG( SIMPLE, "OPENCHANNEL: COpenChannelHandler::HandleCommand exiting" )
-    }
-
-// -----------------------------------------------------------------------------
-// From class CSatCommandHandler.
-// Indicates the failure of launching ui client.
-// -----------------------------------------------------------------------------
-//
-void COpenChannelHandler::UiLaunchFailed()
-    {
-    LOG( SIMPLE, "OPENCHANNEL: COpenChannelHandler::UiLaunchFailed calling" )
-
-    iOpenChannelRsp.iGeneralResult = RSat::KMeUnableToProcessCmd;
-    iOpenChannelRsp.iInfoType = RSat::KMeProblem;
-    iOpenChannelRsp.iAdditionalInfo.SetLength( 1 );
-    iOpenChannelRsp.iAdditionalInfo[0] = RSat::KNoSpecificMeProblem;
-    iOpenChannelRsp.SetPCmdNumber( iOpenChannelData.PCmdNumber() );
-    TerminalRsp( iPCmd, iOpenChannelRspPckg );
-
-    LOG( SIMPLE, "OPENCHANNEL: COpenChannelHandler::UiLaunchFailed exiting" )
-    }
-
-// -----------------------------------------------------------------------------
-// C++ default constructor can NOT contain any code, that
-// might leave.
-// -----------------------------------------------------------------------------
-//
-//lint -e{1403, 1769} Can not be initialized.
-COpenChannelHandler::COpenChannelHandler() :
-    CSatCommandHandler(),
-    iOpenChannelData(),
-    iOpenChannelPckg( iOpenChannelData ),
-    iOpenChannelRsp(),
-    iOpenChannelRspPckg( iOpenChannelRsp ),
-    iQueryData(),
-    iQueryPckg( iQueryData ),
-    iQueryRsp(),
-    iQueryRspPckg( iQueryRsp ),
-    // To be removed when icons are allowed in this command
-    iIconCommand( EFalse )
-    {
-    LOG( SIMPLE, "OPENCHANNEL: COpenChannelHandler::COpenChannelHandler \
-        calling - exiting" )
-    }
-
-// -----------------------------------------------------------------------------
-// Symbian 2nd phase constructor can leave.
-// -----------------------------------------------------------------------------
-//
-void COpenChannelHandler::ConstructL()
-    {
-    LOG( SIMPLE, "OPENCHANNEL: COpenChannelHandler::ConstructL calling" )
-
-    iUtils->RegisterServiceRequestL( ESatSProactiveQuery,
-        ESatSProactiveQueryResponse, this );
-
-    LOG( SIMPLE, "OPENCHANNEL: COpenChannelHandler::ConstructL exiting" )
-    }
-
-// -----------------------------------------------------------------------------
-// Sets new connection settings for channel to open.
-// -----------------------------------------------------------------------------
-//
-void COpenChannelHandler::SetConnectionSettingsL(
-    MSatBIPUtils::TSatBearerType aBearerType )
-    {
-    LOG2( SIMPLE,
-        "OPENCHANNEL: COpenChannelHandler::SetConnectionSettingsL calling,\
-        aBearerType: %d", aBearerType )
-
-    RPacketContext::TProtocolType pdpType = RPacketContext::EPdpTypeIPv4;
-    TUint32 defaultId( 0 );
-    switch ( aBearerType )
-        {
-        case MSatBIPUtils::ESatGPRS:
-            {
-            // Resolve override settings
-            if ( iOpenChannelData.iAccessName.Length() > 0 )
-                {
-                LOG( NORMAL, 
-                "OPENCHANNEL: COpenChannelHandler::SetConnectionSettingsL \
-                Getting APN" )
-
-                TUint32 iapId( 0 );
-                TUint32 nwId( 0 );
-                TBool apnCreated( EFalse );
-
-                pdpType = RPacketContext::EPdpTypeIPv6;
-
-                if ( RSat::EIPv4Address ==
-                    iOpenChannelData.iDestinationAddress.iType )
-                    {
-                    LOG( NORMAL, 
-                    "OPENCHANNEL: COpenChannelHandler::SetConnectionSettingsL \
-                    IPV4 Address" )
-                    pdpType = RPacketContext::EPdpTypeIPv4;
-                    }
-                iUtils->BipUtils().ApnHandler().GetApnInfoL
-                    (
-                    iOpenChannelData.iAccessName,
-                    iOpenChannelData.iUserLogin,
-                    iOpenChannelData.iUserPassword,
-                    iapId,
-                    nwId,
-                    apnCreated,
-                    pdpType, // IPv6 or IPv4
-                    iOpenChannelData.iLocalAddress.iAddress
-                    );
-
-                if ( apnCreated )
-                    {
-                    LOG( NORMAL, 
-                    "OPENCHANNEL: COpenChannelHandler::SetConnectionSettingsL \
-                    APN created by SAT" )
-                    // Store APN Id for later use
-                    iConnectionInfo.iCreatedApnId = nwId;
-                    }
-
-                SetOverrideSettingsL( iapId );
-                }
-            else
-                {
-                LOG( NORMAL, "OPENCHANNEL: SetConnectionSettingsL \
-                No APN, using defaults" )
-                // No APN, use default settings
-                TRAPD( err, defaultId = 
-                iUtils->BipUtils().ApnHandler().FindDefaultApL( pdpType ) );
-                LOG2( NORMAL, "OPENCHANNEL: SetConnectionSettingsL \
-                    No APN, using defaults err = %i", err )
-                SetOverrideSettingsL( defaultId );
-                }
-            break;
-            }
-
-        default:
-            {
-            LOG( NORMAL, "OPENCHANNEL: COpenChannelHandler::\
-                SetConnectionSettingsL exiting default" )
-            // Leave if not supported
-            User::Leave( KErrNotSupported );
-            }
-        }
-
-#ifdef SAT_USE_DUMMY_TSY
-    // No APN, use default settings
-    TRAPD( err, 
-    defaultId = iUtils->BipUtils().ApnHandler().FindDefaultApL( pdpType ) );
-    LOG2( NORMAL, "OPENCHANNEL: COpenChannelHandler::SetConnectionSettingsL \
-        No APN, using defaults err = %i", err )
-    SetOverrideSettingsL( defaultId );
-#endif // SAT_USE_DUMMY_TSY
-
-    LOG( SIMPLE,
-        "OPENCHANNEL: COpenChannelHandler::SetConnectionSettingsL exiting" )
-    }
-
-// -----------------------------------------------------------------------------
-// Sets override settings into connection information.
-// -----------------------------------------------------------------------------
-//
-void COpenChannelHandler::SetOverrideSettingsL( const TUint32 aIapId )
-    {
-    
-    LOG2( SIMPLE,
-    "OPENCHANNEL: COpenChannelHandler::SetOverrideSettingsL aIapId: %i", 
-    aIapId )
-
-    delete iConnectionInfo.iOverrideSet;
-    iConnectionInfo.iOverrideSet = NULL;
-
-    // Override connection preferences
-    TExtendedConnPref* overrideSettings = new( ELeave ) TExtendedConnPref;
-    overrideSettings->SetIapId( aIapId );
-    overrideSettings->SetNoteBehaviour( 
-            TExtendedConnPref::ENoteBehaviourConnSilent );
-    iConnectionInfo.iOverrideSet = overrideSettings;
-
-    LOG( SIMPLE,
-        "OPENCHANNEL: COpenChannelHandler::SetOverrideSettingsL exiting" )
-    }
-
-// -----------------------------------------------------------------------------
-// Sets up data channel. Does not activate context.
-// -----------------------------------------------------------------------------
-//
-TInt COpenChannelHandler::SetUpChannel()
-    {
-    LOG( SIMPLE, "OPENCHANNEL: COpenChannelHandler::SetUpChannel calling" )
-
-    // get connection settings from CommDB and
-    // set connection settings to data channel
-    TRAPD( status,
-           SetConnectionSettingsL( iBearerType );
-           iDataChannel->SetupConnectionL( iConnectionInfo ); );
-
-    LOG2( SIMPLE,
-        "OPENCHANNEL: COpenChannelHandler::SetUpChannel exiting with status %i",
-        status )
-    return status;
-    }
-
-// -----------------------------------------------------------------------------
-// Activates context.
-// -----------------------------------------------------------------------------
-//
-TInt COpenChannelHandler::ActivateChannel()
-    {
-    LOG( SIMPLE, "OPENCHANNEL: COpenChannelHandler::ActivateChannel calling" )
-
-    // Activate the connection
-    TRAPD( err, iDataChannel->ActivateConnectionL( this ) );
-
-    LOG2( SIMPLE, "OPENCHANNEL: COpenChannelHandler::ActivateChannel exiting\
-        with error %i:", err )
-    return err;
-    }
-
-// -----------------------------------------------------------------------------
-// Creates and sends the terminal response on successful cases.
-// -----------------------------------------------------------------------------
-//
-void COpenChannelHandler::SendSuccessTerminalRsp()
-    {
-    LOG( SIMPLE,
-        "OPENCHANNEL: COpenChannelHandler::SendSuccessTerminalRsp calling" )
-
-    iDataChannel->GetNegotiatedQoSParams( iOpenChannelRsp.iBearer.iParams );
-
-    // Get the channel status
-    RSat::TChannelStatus channelStatus;
-    TRAPD( err, channelStatus = iUtils->BipUtils().GenerateChannelStatusL(
-            iDataChannel->ChannelId(), 0 ) );
-    LOG2( SIMPLE, "OPENCHANNEL: COpenChannelHandler::SendSuccessTerminalRsp \
-          error: %i", err )
-    
-    if ( KErrNone == err )
-        {
-        iOpenChannelRsp.iInfoType = RSat::KChannelStatusInfo;
-        iOpenChannelRsp.iAdditionalInfo.SetLength( KChannelStatusLength );
-
-        // Channel ID + PDP context status
-        iOpenChannelRsp.iAdditionalInfo[0] = channelStatus[0];
-
-        // Channel status
-        iOpenChannelRsp.iAdditionalInfo[1] = channelStatus[1];
-        iOpenChannelRsp.SetPCmdNumber( iOpenChannelData.PCmdNumber() );
-
-        // Define the result of this command handling
-        if ( iSetUpWithModifications )
-            {
-            LOG( NORMAL, "OPENCHANNEL: COpenChannelHandler::HandleCommand\
-                Channel setup modified" )
-            iOpenChannelRsp.iGeneralResult = RSat::KPerformedWithModifications;
-            }
-        else if ( !iQueryRsp.iRequestedIconDisplayed &&
-            ( ( RSat::ESelfExplanatory ==
-            iOpenChannelData.iIconId.iQualifier ) ||
-            ( RSat::ENotSelfExplanatory ==
-            iOpenChannelData.iIconId.iQualifier ) ) )
-            {
-            LOG( NORMAL, "OPENCHANNEL: COpenChannelHandler::HandleCommand\
-                Open channel successful, no icon displayed" )
-            iOpenChannelRsp.iGeneralResult =
-                RSat::KSuccessRequestedIconNotDisplayed;
-            }
-        else
-            {
-            LOG( NORMAL, "OPENCHANNEL: COpenChannelHandler::HandleCommand\
-                Open channel successful" )
-            iOpenChannelRsp.iGeneralResult = RSat::KSuccess;
-            }
-        }
-    else
-        {
-        LOG( NORMAL, "OPENCHANNEL: COpenChannelHandler::HandleCommand\
-            Channel not found!" )
-        iOpenChannelRsp.iGeneralResult = RSat::KMeUnableToProcessCmd;
-        iOpenChannelRsp.iInfoType = RSat::KMeProblem;
-        iOpenChannelRsp.iAdditionalInfo.SetLength( 1 );
-        iOpenChannelRsp.iAdditionalInfo[0] = RSat::KNoSpecificMeProblem;
-        }
-
-    // If command had icon data and was done succesfully, report that icon
-    // was not shown
-    // To be removed when icons are allowed in this command
-    if ( ( RSat::KSuccess == iOpenChannelRsp.iGeneralResult ) &&
-        iIconCommand )
-        {
-        LOG( SIMPLE, "COpenChannelHandler::SendSuccessTerminalRsp requested\
-             icon not displayed" )
-        iOpenChannelRsp.iGeneralResult =
-            RSat::KSuccessRequestedIconNotDisplayed;
-        }
-
-    // Sending terminal response
-    TerminalRsp( iPCmd, iOpenChannelRspPckg );
-
-    LOG( SIMPLE,
-        "OPENCHANNEL: COpenChannelHandler::SendSuccessTerminalRsp exiting" )
-    }
-
-// -----------------------------------------------------------------------------
-// Sends confirmation query to UI.
-// -----------------------------------------------------------------------------
-//
-void COpenChannelHandler::SendConfirmToUi()
-    {
-    LOG( SIMPLE, "OPENCHANNEL: COpenChannelHandler::SendConfirmToUi calling" )
-
-    // Command Duration for Mediator Client
-    TUint8 commandDuration( KSatDurationNotSet );
-
-    // Launch UI of not launched. This function is called again when UI is
-    // launched.
-    if ( !LaunchUiSession() )
-        {
-        LOG( SIMPLE, "OPENCHANNEL: COpenChannelHandler::SendConfirmToUi \
-             not launch UI" )
-        // Create IPC data to UI
-        iQueryData.iCommand = ESatOpenChannelQuery;
-        iQueryData.iQueryText = iOpenChannelData.iAlphaId.iAlphaId;
-        iQueryData.iIconId.iIdentifier = iOpenChannelData.iIconId.iIdentifier;
-        LOG2( SIMPLE, "COpenChannelHandler::SendConfirmToUi \
-             iOpenChannelData.iIconId.iQualifier:%d",
-             iOpenChannelData.iIconId.iQualifier )
-        // Check Icon
-        switch ( iOpenChannelData.iIconId.iQualifier )
-            {
-            case RSat::ESelfExplanatory:
-                {
-                // Icon qualifier is self explanatory (to display instead
-                // of the alpha id or text string).
-                iQueryData.iIconId.iIconQualifier = ESatSelfExplanatory;
-                break;
-                }
-
-            case RSat::ENotSelfExplanatory:
-                {
-                // Icon qualifier is not self explanatory.
-                iQueryData.iIconId.iIconQualifier = ESatNotSelfExplanatory;
-                break;
-                }
-
-            default:
-                {
-                // Icon qualifier not present
-                iQueryData.iIconId.iIconQualifier = ESatENoIconId;
-                break;
-                }
-            }
-        LOG2( SIMPLE, "COpenChannelHandler::SendConfirmToUi \
-             iOpenChannelData.iAlphaId.iStatus:%d",
-             iOpenChannelData.iAlphaId.iStatus )
-        // Define AlphaID status
-        switch ( iOpenChannelData.iAlphaId.iStatus )
-            {
-            case RSat::EAlphaIdNotPresent:
-                {
-                iQueryData.iAlphaIdStatus = ESatAlphaIdNotProvided;
-                commandDuration = KSatLongDuration;
-                break;
-                }
-
-            case RSat::EAlphaIdProvided:
-                {
-                iQueryData.iAlphaIdStatus = ESatAlphaIdNotNull;
-                commandDuration = KSatLongDuration;
-                break;
-                }
-
-            default:
-                {
-                iQueryData.iAlphaIdStatus = ESatAlphaIdNull;
-                commandDuration = KSatDurationNotSet;
-                break;
-                }
-            }
-
-        // Send notification to Mediator client if Cover UI is supported
-        if ( iUtils->CoverUiSupported() )
-            {
-            LOG( SIMPLE, "OPENCHANNEL: COpenChannelHandler::SendConfirmToUi \
-                 CoverUiSupported" )
-            TSatCommandData medEventData;
-            medEventData.iPCmdNumber = iPCmd;
-            medEventData.iAlphaId = iOpenChannelData.iAlphaId;
-            medEventData.iDuration.iTimeUnit = RSat::ESeconds;
-            medEventData.iDuration.iNumOfUnits = commandDuration;
-            medEventData.iIconID = iOpenChannelData.iIconId;
-            TSatCommandPckg tPckg( medEventData );
-            iUtils->RaiseSatEvent( tPckg );
-            }
-        // Send notification to UI
-        MSatUiSession* session = iUtils->SatUiHandler().UiSession();
-        session->SendCommand(
-            &iQueryPckg, &iQueryRspPckg, ESatSProactiveQuery );
-        }
-
-    LOG( SIMPLE, "OPENCHANNEL: COpenChannelHandler::SendConfirmToUi exiting" )
-    }
-
-// -----------------------------------------------------------------------------
-// Closes the channel in error cases.
-// -----------------------------------------------------------------------------
-//
-void COpenChannelHandler::CloseChannel()
-    {
-    LOG( SIMPLE, "OPENCHANNEL: COpenChannelHandler::CloseChannel calling" )
-
-    // If data channel is not null, close it
-    if ( iDataChannel )
-        {
-        LOG( SIMPLE, "OPENCHANNEL: COpenChannelHandler::CloseChannel have\
-             channel" )
-        iUtils->BipUtils().CloseChannel( iDataChannel->ChannelId() );
-        }
-
-    if ( iConnectionInfo.iCreatedApnId > 0 )
-        {
-        LOG( SIMPLE, "OPENCHANNEL: COpenChannelHandler::CloseChannel delete\
-             APN" )
-        // APN created -> Remove it
-        TRAP_IGNORE( iUtils->BipUtils().ApnHandler().DeleteApnL(
-            iConnectionInfo.iCreatedApnId ) )
-        }
-
-    LOG( SIMPLE, "OPENCHANNEL: COpenChannelHandler::CloseChannel exiting" )
-    }
-
-// -----------------------------------------------------------------------------
-// Checks parameters from SIM and makes modifications, if needed.
-// -----------------------------------------------------------------------------
-//
-TBool COpenChannelHandler::CheckParameters()
-    {
-    LOG( SIMPLE, "OPENCHANNEL: COpenChannelHandler::CheckParameters calling" )
-    // Return variable. Indicates is the context activation possible with
-    // given / modified parameters.
-    TBool paramsOk( EFalse );
-
-    // Check buffer size
-    if ( KSatBIPMaxBufferSize < iOpenChannelData.iBufferSize ||
-         0 == iOpenChannelData.iBufferSize )
-        {
-        LOG( NORMAL, "OPENCHANNEL: COpenChannelHandler::CheckParameters \
-            Changing buffersize" )
-        // Too big requested buffer size -> set to max
-        iConnectionInfo.iBufferSize = KSatBIPMaxBufferSize;
-        // put modified buffer size to terminal response
-        iOpenChannelRsp.iBufferSize = KSatBIPMaxBufferSize;
-        // Modified parameters
-        iSetUpWithModifications = ETrue;
-        }
-    else
-        {
-        iConnectionInfo.iBufferSize = iOpenChannelData.iBufferSize;
-        iOpenChannelRsp.iBufferSize = iOpenChannelData.iBufferSize;
-        }
-
-    // Set bearer for the terminal response. This information is mandatory to
-    // each terminal response.
-    iOpenChannelRsp.iBearer = iOpenChannelData.iBearer;
-
-    // Indicates is there destination address defined
-    const TBool destinationAddressNotDefined
-        (
-        RSat::EIPv4Address != iOpenChannelData.iDestinationAddress.iType &&
-        RSat::EIPv6Address != iOpenChannelData.iDestinationAddress.iType
-        );
-
-    // Indicates is there a transport protocol defined
-    const TBool transportProtoNotDefined
-        (
-        RSat::ETcp != iOpenChannelData.iSimMeInterface.iTransportProto &&
-        RSat::EUdp != iOpenChannelData.iSimMeInterface.iTransportProto
-        );
-
-    // Indicates is there a transport port number defined
-    const TBool transportPortNumberNotDefined
-        (
-        0 == iOpenChannelData.iSimMeInterface.iPrtNumber
-        );
-
-    // Indicates is selected bearer supported
-    const TBool bearerNotSupported
-        (
-        RSat::EPCmdTypeNotSet != iOpenChannelData.iPCmdType &&
-        RSat::EGprsBearer != iOpenChannelData.iPCmdType &&
-        RSat::EAnyBearer != iOpenChannelData.iPCmdType
-        );
-
-    // Check parameters
-    paramsOk = !( destinationAddressNotDefined ||
-                  transportProtoNotDefined ||
-                  bearerNotSupported ||
-                  transportPortNumberNotDefined );
-
-    // Check is connection possible
-    if ( paramsOk )
-        {
-        LOG( NORMAL, "OPENCHANNEL: COpenChannelHandler::CheckParameters \
-        Bearer type is GPRS" )
-        // Bearer type is GPRS
-        iBearerType = MSatBIPUtils::ESatGPRS;
-        // Set bearer type for the terminal response in case it was not defined
-        iOpenChannelRsp.iBearer.iType = RSat::EGPRSBearer;
-        // Destination address
-        iConnectionInfo.iDestination = iOpenChannelData.iDestinationAddress;
-        // Local address
-        iConnectionInfo.iSource = iOpenChannelData.iLocalAddress;
-        // Bearer parameters
-        iConnectionInfo.iBearerParams = iOpenChannelData.iBearer.iParams;
-        // Set protocol info to connection data
-        iConnectionInfo.iProtocol = iOpenChannelData.iSimMeInterface;
-        }
-    else if ( transportProtoNotDefined ||
-              bearerNotSupported ||
-              transportPortNumberNotDefined )
-        {
-        // Fail
-        LOG( NORMAL, "OPENCHANNEL: COpenChannelHandler::CheckParameters \
-        Unable to connect" )
-        // If parameters are not OK, send terminal response
-        LOG( NORMAL, "OPENCHANNEL: COpenChannelHandler::CommandAllowed \
-            Not valid parameters" )
-        iOpenChannelRsp.iGeneralResult = RSat::KCmdBeyondMeCapabilities;
-        iOpenChannelRsp.iInfoType = RSat::KNoAdditionalInfo;
-        iOpenChannelRsp.iAdditionalInfo.Zero();
-        }
-    else if ( destinationAddressNotDefined )
-        {
-        // Fail
-        LOG( NORMAL, "OPENCHANNEL: COpenChannelHandler::CheckParameters \
-        Destination not set" )
-        iOpenChannelRsp.iGeneralResult = RSat::KErrorRequiredValuesMissing;
-        iOpenChannelRsp.iInfoType = RSat::KNoAdditionalInfo;
-        iOpenChannelRsp.iAdditionalInfo.Zero();
-        }
-    else
-        {
-        // Fail
-        LOG( NORMAL, "OPENCHANNEL: COpenChannelHandler::CheckParameters \
-        Unable to connect" )
-        // If parameters are not OK, send terminal response
-        LOG( NORMAL, "OPENCHANNEL: COpenChannelHandler::CheckParameters \
-            Not valid parameters" )
-        iOpenChannelRsp.iGeneralResult = RSat::KCmdBeyondMeCapabilities;
-        iOpenChannelRsp.iInfoType = RSat::KNoAdditionalInfo;
-        iOpenChannelRsp.iAdditionalInfo.Zero();
-        }
-
-    LOG2( SIMPLE, "OPENCHANNEL: COpenChannelHandler::CheckParameters exiting,\
-          paramsOk: %d", paramsOk )
-    return paramsOk;
-    }
-
-// -----------------------------------------------------------------------------
-// Launches UI if it not active.
-// -----------------------------------------------------------------------------
-//
-TBool COpenChannelHandler::LaunchUiSession()
-    {
-    LOG( SIMPLE, "OPENCHANNEL: COpenChannelHandler::LaunchUiSession calling" )
-    TBool retVal( EFalse );
-
-    // If ui session is not availabe, SATUI has to be
-    // launched.
-    if ( NULL == iUtils->SatUiHandler().UiSession() )
-        {
-        TRAPD( err,
-               iUtils->RegisterL( this, MSatUtils::ESatUiLaunched );
-               // Try to launch the ui client.
-               iUtils->SatUiHandler().LaunchSatUiL();
-             ); // End of TRAPD
-
-        if ( KErrNone != err )
-            {
-            LOG( SIMPLE, "OPENCHANNEL: COpenChannelHandler::LaunchUiSession \
-                 Ui launch failed" )
-            // Ui launch failed, unregister event
-            iUtils->UnregisterEvent( this, MSatUtils::ESatUiLaunched );
-            // Notify SIM that ui launch failed.
-            UiLaunchFailed();
-            }
-        else
-            {
-            LOG( SIMPLE, "OPENCHANNEL: COpenChannelHandler::LaunchUiSession \
-                 Ui launch successfully" )
-            // Return true indicating that we had to launch UI
-            retVal = ETrue;
-            }
-        }
-
-    LOG2( SIMPLE, "OPENCHANNEL: COpenChannelHandler::LaunchUiSession exiting,\
-          retVal: %d", retVal )
-    return retVal;
-    }