sipvoipprovider/src/svpemergencyconnection.cpp
branchRCL_3
changeset 21 f742655b05bf
parent 20 65a3ef1d5bd0
child 22 d38647835c2e
--- a/sipvoipprovider/src/svpemergencyconnection.cpp	Thu Aug 19 09:45:22 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,311 +0,0 @@
-/*
-* Copyright (c) 2007-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:  Provides connection for emergency call when necessary
-*
-*/
-
-
-
-#include <nifman.h>   // For global variables
-
-#include "svpemergencyconnection.h"
-#include "svplogger.h" // For logging
-
-
-// ======== MEMBER FUNCTIONS ========
-
-// ---------------------------------------------------------------------------
-// CSVPEmergencyConnection
-// ---------------------------------------------------------------------------
-//
-CSVPEmergencyConnection::CSVPEmergencyConnection( 
-    TPriority aPriority, MSVPEmergencyConnectionObserver& aObserver )
-    : CActive( aPriority ), 
-      iObserver( aObserver )
-    {
-    CActiveScheduler::Add( this );
-    }
-
-// ---------------------------------------------------------------------------
-// ConstructL
-// ---------------------------------------------------------------------------
-//
-void CSVPEmergencyConnection::ConstructL()
-    {
-    SVPDEBUG1("CSVPEmergencyConnection::ConstructL()")
-    
-    User::LeaveIfError( iSocketServer.Connect() );
-    User::LeaveIfError( iConnection.Open( iSocketServer ) );
-    }
-
-// ---------------------------------------------------------------------------
-// NewL
-// ---------------------------------------------------------------------------
-//
-CSVPEmergencyConnection* CSVPEmergencyConnection::NewL( 
-    TPriority aPriority, MSVPEmergencyConnectionObserver& aObserver )
-    {
-    CSVPEmergencyConnection* self = CSVPEmergencyConnection::NewLC( 
-        aPriority, aObserver );
-    CleanupStack::Pop( self );
-    return self;
-    }
-    
-// ---------------------------------------------------------------------------
-// NewLC
-// ---------------------------------------------------------------------------
-//
-CSVPEmergencyConnection* CSVPEmergencyConnection::NewLC( 
-    TPriority aPriority, MSVPEmergencyConnectionObserver& aObserver )
-    {
-    CSVPEmergencyConnection* self = 
-        new( ELeave ) CSVPEmergencyConnection( aPriority, aObserver );
-    CleanupStack::PushL( self );
-    self->ConstructL();
-    return self;
-    }
-    
-// ---------------------------------------------------------------------------
-// Destructor
-// ---------------------------------------------------------------------------
-//
-CSVPEmergencyConnection::~CSVPEmergencyConnection()
-    {
-    SVPDEBUG1("CSVPEmergencyConnection::~CSVPEmergencyConnection()")
-    
-    Cancel();
-
-    iConnection.Close();
-    iSocketServer.Close();
-    }
-
-// ---------------------------------------------------------------------------
-// Connects asynchronically with SNAP ID
-// ---------------------------------------------------------------------------
-//
-void CSVPEmergencyConnection::ConnectWithSnapIdL( TUint32 aSnapId )
-    {
-    SVPDEBUG2("CSVPEmergencyConnection::ConnectWithSnapIdL, ID: %d", aSnapId)
-
-    if ( IsActive() )
-        {
-        User::Leave( KErrInUse );
-        }
-
-    // Start connection
-    iRequestType = ESVPSnapConnect;
-    iSnapConnPref.SetSnap( aSnapId );
-    iConnection.Start( iSnapConnPref, iStatus );
-    SetActive();
-    }
-
-// ---------------------------------------------------------------------------
-// Returns the used IAP ID of SNAP connection
-// ---------------------------------------------------------------------------
-//
-TInt CSVPEmergencyConnection::IapId( TUint32& aIapId )
-    {
-    SVPDEBUG1("CSVPEmergencyConnection::IapIdL()")
-    
-    _LIT( KIapId, "IAP\\Id" );
-    TRAPD( error, iConnection.GetIntSetting( KIapId, aIapId ) )
-    return error;
-    }
-
-// ---------------------------------------------------------------------------
-// Connects with IAP ID
-// ---------------------------------------------------------------------------
-//
-void CSVPEmergencyConnection::ConnectL( TUint32 aIapId )
-    {
-    SVPDEBUG2("CSVPEmergencyConnection::ConnectL(), IAP ID: %d", aIapId)
-    
-    if ( IsActive() )
-        {
-        User::Leave( KErrInUse );
-        }
-    
-    // Start connection
-    iRequestType = ESVPConnect;
-    iConnPref.SetIapId( aIapId );
-    iConnPref.SetDialogPreference( ECommDbDialogPrefDoNotPrompt );
-    iConnection.Start( iConnPref, iStatus );
-    SetActive();
-    }
-
-// ---------------------------------------------------------------------------
-// Requests for SIP proxy address
-// ---------------------------------------------------------------------------
-//
-#ifdef _DEBUG
-void CSVPEmergencyConnection::RequestSipProxyAddressL( TUint32 aIapId )
-#else
-void CSVPEmergencyConnection::RequestSipProxyAddressL( TUint32 /*aIapId*/ )
-#endif // __DEBUG
-    {
-    SVPDEBUG2("CSVPEmergencyConnection::RequestSipProxyAddressL(),\
-        IAP ID: %d", aIapId)
-
-    if ( IsActive() )
-        {
-        User::Leave( KErrInUse );
-        }
-
-    // Request SIP proxy address
-    iRequestType = ESVPSipProxyAddress;
-    iSipServerAddrBuf().index = 0;
-    iConnection.Ioctl( 
-        KCOLConfiguration, 
-        KConnGetSipServerAddr, // DHCP option 120
-        iStatus, 
-        &iSipServerAddrBuf );
-    SetActive();
-    }
-    
-// ---------------------------------------------------------------------------
-// From class CSVPEmergencyConnection.
-// DoCancel
-// ---------------------------------------------------------------------------
-//
-void CSVPEmergencyConnection::DoCancel()
-    {
-    SVPDEBUG1("CSVPEmergencyConnection::DoCancel()")
-    
-    iRequestType = ESVPNone;
-    iConnection.CancelIoctl();
-    iConnection.Close();
-    }
-    
-// ---------------------------------------------------------------------------
-// From class CActive.
-// RunL
-// ---------------------------------------------------------------------------
-//
-void CSVPEmergencyConnection::RunL()
-    {
-    TInt error = iStatus.Int();
-    SVPDEBUG2( "CSVPEmergencyConnection::RunL(), error: %d", error )
-    SVPDEBUG2( "CSVPEmergencyConnection::RunL(), Request type: %d", iRequestType )
-    
-    // execution goes to RunError() if error occured
-    User::LeaveIfError( iStatus.Int() );
-    switch ( iRequestType )
-        {
-        case ESVPSnapConnect:
-            SVPDEBUG1( "CSVPEmergencyConnection::RunL() - ESVPSnapConnect" )
-            iRequestType = ESVPNone;
-            iObserver.SnapConnected();
-            break;
-        
-        case ESVPConnect:
-            SVPDEBUG1( "CSVPEmergencyConnection::RunL() - ESVPConnect" )
-            iRequestType = ESVPNone;
-            iObserver.Connected();
-            break;
-            
-        case ESVPSipProxyAddress:
-            {
-            SVPDEBUG1( "CSVPEmergencyConnection::RunL() - ESVPSipProxyAddress" )
-            iRequestType = ESVPNone;
-            
-            // Copy SIP proxy address in dotted-decimal notation
-            HBufC16* sipProxyAddrBuf = HBufC16::NewLC( 39 ); // CS:1
-            TPtr16 sipProxyAddrPtr = sipProxyAddrBuf->Des();
-            iSipServerAddrBuf().address.Output( sipProxyAddrPtr );
-            SVPDEBUG2(
-                    "CSVPEmergencyConnection::RunL(), iSipServerAddrBuf: %S",
-                    sipProxyAddrBuf )
-            // Call observer
-            iObserver.SipProxyAddressReady( *sipProxyAddrBuf );
-            CleanupStack::PopAndDestroy( sipProxyAddrBuf ); // CS:0
-            break;
-            }
-        case ESVPSipDomainAddress:
-            {
-            SVPDEBUG1( "CSVPEmergencyConnection::RunL() - ESVPSipDomainAddress" )
-            iRequestType = ESVPNone;
-            
-            // Copy SIP proxy domain in dotted-decimal notation
-            HBufC16* sipDomainAddrBuf = HBufC16::NewLC( iSipServerDomainBuf().domainName.Length() ); // CS:1
-            TPtr16 sipDomainAddrPtr = sipDomainAddrBuf->Des();
-            sipDomainAddrPtr.Copy( iSipServerDomainBuf().domainName );
-            SVPDEBUG2(
-                    "CSVPEmergencyConnection::RunL(), iSipDomainAddrBuf: %S",
-                    sipDomainAddrBuf )
-            // Call observer
-            iObserver.SipProxyAddressReady( *sipDomainAddrBuf );
-            CleanupStack::PopAndDestroy( sipDomainAddrBuf ); // CS:0
-            break;
-            }
-            
-        default:
-            SVPDEBUG1( "CSVPEmergencyConnection::RunL() - Default" )
-            iRequestType = ESVPNone;
-            iObserver.ConnectionError( KErrGeneral );
-            break;
-        }
-    }
-
-// ---------------------------------------------------------------------------
-// CSVPEmergencyConnection::RunError
-//
-// ---------------------------------------------------------------------------
-//
-TInt CSVPEmergencyConnection::RunError( TInt aError )
-    {
-    SVPDEBUG2( "CSVPEmergencyConnection::RunError() %d", aError )
-    if ( iRequestType == ESVPSipProxyAddress )
-        {
-        /* 
-         * sip proxy address might be NULL if requested with KConnGetSipServerAddr
-         * and dhcp returns domain name to sip, instead of ipv4 or ipv6 type address.
-         * So try once again with KConnGetSipServerDomain.
-         */
-        SVPDEBUG1( "CSVPEmergencyConnection::RunError() - RequestDomain" )
-        RequestSipServerDomainL();    
-        return KErrNone;
-        }
-    else
-        {
-        iRequestType = ESVPNone;
-        SVPDEBUG2( "CSVPEmergencyConnection::RunError() - Notify Observer ConnectionError( %d )", aError )
-        iObserver.ConnectionError( aError );
-        return KErrNone;
-        }
-    }
-
-// ---------------------------------------------------------------------------
-// Requests for SIP proxy address
-// ---------------------------------------------------------------------------
-//
-void CSVPEmergencyConnection::RequestSipServerDomainL()
-    {
-    SVPDEBUG1( 
-        "CSVPEmergencyConnection::RequestSipServerDomainL() - Try to get Sip server domain" )
-
-    if ( IsActive() )
-        {
-        User::Leave( KErrInUse );
-        }
-
-    iRequestType = ESVPSipDomainAddress;
-    iSipServerDomainBuf().index = 0;
-    // Request SIP server domain
-    iConnection.Ioctl(
-        KCOLConfiguration,
-        KConnGetSipServerDomain, // domain in textual format
-        iStatus,
-        &iSipServerDomainBuf );
-    SetActive();
-    }