satengine/SatServer/Engine/src/CSatApnHandler.cpp
changeset 46 2fa1fa551b0b
parent 42 35488577e233
child 48 78df25012fda
--- a/satengine/SatServer/Engine/src/CSatApnHandler.cpp	Mon Aug 23 15:50:31 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,461 +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 APN operations
-*
-*/
-
-// INCLUDE FILES
-#include <cmmanager.h>
-#include <cmmanagerext.h>
-#include <cmconnectionmethod.h>
-#include <cmconnectionmethodext.h>
-#include <cmconnectionmethoddef.h>
-#include <cmpluginpacketdatadef.h>
-#include <cmdestination.h>
-#include <cmmanagerdef.h>
-
-#include    "MSatUtils.h"
-#include    "CSatApnHandler.h"
-#include    "SatLog.h"
-
-const TUint32 KSatCMGranularity( 5 );
-
-// ============================ MEMBER FUNCTIONS ===============================
-
-// -----------------------------------------------------------------------------
-// CSatApnHandler::CSatApnHandler
-// C++ default constructor can NOT contain any code, that
-// might leave.
-// -----------------------------------------------------------------------------
-//
-CSatApnHandler::CSatApnHandler( MSatUtils& aUtils ) :
-    iUtils( aUtils )
-    {
-    LOG( SIMPLE,
-        "SATENGINE: CSatApnHandler::CSatApnHandler calling-exiting" )
-    }
-
-// -----------------------------------------------------------------------------
-// CSatApnHandler::NewL
-// Two-phased constructor.
-// -----------------------------------------------------------------------------
-//
-CSatApnHandler* CSatApnHandler::NewL( MSatUtils& aUtils )
-    {
-    LOG( SIMPLE, "SATENGINE: CSatApnHandler::NewL calling" )
-
-    CSatApnHandler* self = new( ELeave )CSatApnHandler( aUtils );
-    LOG( SIMPLE, "SATENGINE: CSatApnHandler::NewL exiting" )
-    return self;
-    }
-
-// -----------------------------------------------------------------------------
-// CSatApnHandler::Destructor
-// -----------------------------------------------------------------------------
-//
-CSatApnHandler::~CSatApnHandler()
-    {
-    LOG( SIMPLE,
-        "SATENGINE: CSatApnHandler::~CSatApnHandler calling" )
-    LOG( SIMPLE,
-        "SATENGINE: CSatApnHandler::~CSatApnHandler exiting" )
-    }
-
-// -----------------------------------------------------------------------------
-// CSatApnHandler::GetApnInfoL
-// -----------------------------------------------------------------------------
-//
-void CSatApnHandler::GetApnInfoL(
-    const RSat::TAccessName& aName,
-    const RSat::TTextString& aUserLogin,
-    const RSat::TTextString& aUserPwd,
-    TUint32& aIapId,
-    TUint32& aNwId,
-    TBool& aApnCreated,
-    const RPacketContext::TProtocolType& aPdpType,
-    const TDesC8& aLocalAddress )
-    {
-    LOG( SIMPLE, "SATENGINE: CSatApnHandler::GetApnInfoL calling" )
-
-
-    // First check the length of the APN
-    if ( !aName.Length() )
-        {
-        LOG( SIMPLE, "SATENGINE: CSatApnHandler::GetApnInfoL \
-        aName.Length() == 0" )
-        User::Leave( KErrNotFound );
-        }
-
-    // Format APN
-    HBufC* formatName = FormatAPN( aName );
-
-    if ( !formatName )
-        {
-        LOG( SIMPLE, "SATENGINE: CSatApnHandler::GetApnInfoL wrong APN name \
-            format" )
-        // APN was in false format, leave
-        User::Leave( KErrArgument );
-        }
-    CleanupStack::PushL( formatName );
-
-    // Reference params
-    TUint32 iapId( 0 );
-    TUint32 networkId( 0 );
-
-    // Find if the connection method already exists 
-    // Initialize the flags
-    TBool found = EFalse;
-    aApnCreated = EFalse;
-
-    // Create CMManager Session
-    RCmManager cmManager;
-    cmManager.OpenLC();
-
-    // Get the Connection Method list from the open CMManager session
-    RArray<TUint32> array = RArray<TUint32>( KSatCMGranularity );
-    CleanupClosePushL( array );
-
-    cmManager.ConnectionMethodL( array );
-    
-    // Go through the Connection Method list to find if there is matched one
-    HBufC* apnCM;
-
-    LOG2( SIMPLE, "SATENGINE: CSatApnHandler::GetApnInfoL, \
-                   required pdp type is %d", aPdpType )
-
-    for( TInt i = 0; ( i < array.Count() ) && !found; ++i )
-        {
-        RCmConnectionMethod cm = cmManager.ConnectionMethodL( array[i] );
-        
-        CleanupClosePushL( cm );
-        // query the APN of the Connection Method
-        apnCM = cm.GetStringAttributeL( CMManager::EPacketDataAPName );
-        CleanupStack::PushL( apnCM );
-        // query the pdpType of the Connection Method
-        TInt pdpType = cm.GetIntAttributeL( CMManager::EPacketDataPDPType );
-
-        
-        if ( ( pdpType == aPdpType ) && ( *apnCM == *formatName ) )
-            {
-            // Found the Connection Method, query the IapId and NwId
-            LOG( SIMPLE, "SATENGINE: CSatApnHandler::GetApnInfoL, \
-                          Record found" )
-
-            // Get IAP Id, Network Id
-            networkId = cm.GetIntAttributeL( CMManager::ECmNetworkId );
-            LOG2( SIMPLE, "SATENGINE: CSatApnHandler::GetApnInfoL, \
-                           networkId %d", networkId ) 
-            
-            iapId = cm.GetIntAttributeL( CMManager::ECmIapId );
-            LOG2( SIMPLE, "SATENGINE: CSatApnHandler::GetApnInfoL, \
-                           iapId %d", iapId )
-    
-            found = ETrue;
-            }
-        CleanupStack::PopAndDestroy( apnCM );
-        CleanupStack::PopAndDestroy( &cm );    
-        }        
- 
-    CleanupStack::PopAndDestroy( &array );
-
-    if ( !found )
-        {
-        // No Connection Method found, insert a new one
-    
-        LOG( SIMPLE, "SATENGINE: CSatApnHandler::GetApnInfoL, \
-                      Record Not found, insert a new one" )
-        
-        TRAPD( insertError, InsertRecordL( *formatName, aUserLogin, 
-               aUserPwd, iapId, networkId, aPdpType, aLocalAddress ) )
-
-        if ( KErrNone == insertError )
-            {
-            // Insert OK
-            LOG( NORMAL, "SATENGINE: CSatApnHandler::GetApnInfoL, \
-                          new record inserted" )
-            aApnCreated = ETrue;
-            }
-        }
-    
-    CleanupStack::PopAndDestroy( &cmManager );
-    CleanupStack::PopAndDestroy( formatName );
-
-    // Set return values
-    aIapId = iapId;
-    aNwId = networkId;
-
-    LOG( SIMPLE, "SATENGINE: CSatApnHandler::GetApnInfoL exiting" )
-    }
-
-// -----------------------------------------------------------------------------
-// CSatApnHandler::DeleteApnL
-// -----------------------------------------------------------------------------
-//
-void CSatApnHandler::DeleteApnL( TUint32 aApnId )
-    {
-    LOG( SIMPLE, "SATENGINE: CSatApnHandler::DeleteApnL calling" )
-
-    if ( aApnId )
-        { 
-        // Create CMManager Session
-        RCmManagerExt cmManager;
-        cmManager.OpenLC();
-        
-        // Get the connection method
-        RCmConnectionMethodExt cm;
-        cm = cmManager.ConnectionMethodL( aApnId );
-        CleanupClosePushL( cm );
-
-        cm.DeleteL();
-        LOG2( SIMPLE, "SATENGINE: CSatApnHandler::DeleteApnL, \
-                       delete the connection method %d", aApnId )
-
-        CleanupStack::PopAndDestroy( &cm );
-        CleanupStack::PopAndDestroy( &cmManager );
-        }
-
-    LOG( SIMPLE, "SATENGINE: CSatApnHandler::DeleteApnL exiting" )
-    }
-
-// -----------------------------------------------------------------------------
-// CSatApnHandler::InsertRecordL
-// -----------------------------------------------------------------------------
-//
-void CSatApnHandler::InsertRecordL(
-    const TDesC& aReqApn,
-    const RSat::TTextString& aUserLogin,
-    const RSat::TTextString& aUserPwd,
-    TUint32& aIapId,
-    TUint32& aNwId,
-    const RPacketContext::TProtocolType aPdpType,
-    const TDesC8& aLocalAddress )
-    {
-    LOG( SIMPLE, "SATENGINE: CSatApnHandler::InsertRecordL calling" )
-
-    LOG2( NORMAL, "SATENGINE: CSatApnHandler::InsertRecordL, apn is %S", 
-        &aReqApn )
-    
-    // Create CMManager Session
-    RCmManagerExt cmManager;
-    cmManager.OpenLC();
-
-    // Create a connection method without destination. So when we can find 
-    // the connection method by going through the connection method list.
-    RCmConnectionMethodExt cm;
-    cm = cmManager.CreateConnectionMethodL( KUidPacketDataBearerType );
-    CleanupClosePushL( cm );
-    
-    // This is shown in GS in Access Point list
-    cm.SetStringAttributeL( CMManager::ECmName, iUtils.BipApnName() );    
-    // GPRS connection name
-    cm.SetStringAttributeL( CMManager::EPacketDataAPName, aReqApn );   
-    // IPv4 or IPv6
-    cm.SetIntAttributeL( CMManager::EPacketDataPDPType, aPdpType );
-
-    // Set the local IP address (if any)
-    if ( aLocalAddress.Length() )
-        {
-        LOG2( SIMPLE, "SATENGINE: CSatApnHandler::InsertRecordL, Local addr \
-            length: %i", aLocalAddress.Length() )
-        cm.SetString8AttributeL( CMManager::EPacketDataPDPAddress, 
-            aLocalAddress );
-        }
-
-    cm.SetBoolAttributeL( CMManager::ECmWapIPSecurity, EFalse );
-    cm.SetIntAttributeL( CMManager::ECmWapIPWSPOption, 
-                         CMManager::ECmWapWspOptionConnectionOriented );
-    cm.SetBoolAttributeL( CMManager::EPacketDataDisablePlainTextAuth, EFalse );
-    cm.SetBoolAttributeL( CMManager::ECmIFPromptForAuth, EFalse );
-
-    if ( aUserLogin != KNullDesC )
-        {
-        LOG2( NORMAL, "SATENGINE: CSatApnHandler::InsertRecordL, \
-            username is %S", &aUserLogin ) 
-        cm.SetStringAttributeL( CMManager::ECmIFAuthName, aUserLogin );
-
-        if ( aUserPwd != KNullDesC )
-            {
-            LOG2( NORMAL, "SATENGINE: CSatApnHandler::InsertRecordL, \
-                pwd is %S", &aUserPwd ) 
-            cm.SetStringAttributeL( CMManager::ECmIFAuthPass, aUserPwd );
-            }
-        }
-    
-    // Update the access point ID for use later.
-    cm.UpdateL();
-
-    // Get IAP Id, Network Id
-    aNwId = cm.GetIntAttributeL( CMManager::ECmNetworkId );
-    LOG2( SIMPLE, "SATENGINE: CSatApnHandler::InsertRecordL, \
-                   Nwid is %d", aNwId ) 
-    
-    aIapId = cm.GetIntAttributeL( CMManager::ECmIapId );
-    LOG2( SIMPLE, "SATENGINE: CSatApnHandler::InsertRecordL, \
-                   aIpId is %d", aIapId )
-
-    CleanupStack::PopAndDestroy( &cm );
-    CleanupStack::PopAndDestroy( &cmManager );
-
-    LOG( SIMPLE, "SATENGINE: CSatApnHandler::InsertRecordL exiting" )
-    }
-
-// -----------------------------------------------------------------------------
-// CSatApnHandler::FormatAPN
-// -----------------------------------------------------------------------------
-//
-HBufC* CSatApnHandler::FormatAPN( const RSat::TAccessName& 
-    aReqApn ) const
-    {
-    LOG( SIMPLE, "SATENGINE: CSatApnHandler::FormatAPN calling" )
-
-    // Length of the access point name
-    const TInt accessNameLength( aReqApn.Length() );
-    TInt index( 0 );
-
-    // Format APN coming from SIM. Remove length infos and add dots
-    // from the requested APN. The APN format is, for example,
-    // '4Some9accesspnt2fi' and after the format the formatted APN
-    // should be 'Some.accesspnt.fi'
-    HBufC* formatApnName = HBufC::New( aReqApn.MaxLength() );
-
-    if ( formatApnName )
-        {
-        TPtr formApn( formatApnName->Des() );
-
-        // Indicates is the APN format correct. Can be detected only in loops.
-        TBool correctFormat( ETrue );
-
-        // Loop requested APN. The first byte is always the length
-        for ( index = 0; index < accessNameLength && correctFormat; index++ )
-            {
-            // Next byte is the length of the next label
-            const TInt length( aReqApn[index] );
-
-            // Label length cannot be bigger than the length of the APN
-            if ( ( index + length ) > accessNameLength )
-                {
-                LOG( SIMPLE, "SATENGINE: CSatApnHandler::FormatAPN \
-                ( index + length ) > accessNameLength" )
-                correctFormat = EFalse;
-                }
-
-            // Append the label
-            for ( TInt j = 0; j < length && correctFormat; j++ )
-                {
-                index++; // move to next index
-                TChar next = aReqApn[index];
-                formApn.Append( next );
-                }
-
-            // Add dot to APN if not end of APN
-            if ( accessNameLength > index + 1 )
-                {
-                LOG( SIMPLE, "SATENGINE: CSatApnHandler::FormatAPN \
-                accessNameLength > index + 1" )
-                formApn.Append( '.' );
-                }
-            }
-        LOG2( SIMPLE, "SATENGINE: CSatApnHandler::FormatAPN index: %i", index )
-
-        // Check did we read all characters
-        if ( !correctFormat || ( index != accessNameLength ) )
-            {
-            // Format was not correct, return zero
-            formApn.Zero();
-            formApn.SetLength( 0 );
-            }
-        else
-            {
-            LOG( SIMPLE, "SATENGINE: CSatApnHandler::FormatAPN lower case" )
-            // Put characters to lower case
-            formApn.LowerCase();
-            }
-
-        LOG( SIMPLE, "SATENGINE: CSatApnHandler::FormatAPN exiting" )
-        }
-
-    return formatApnName;
-    }
-
-// -----------------------------------------------------------------------------
-// CSatApnHandler::FindDefaultApL
-// -----------------------------------------------------------------------------
-//
-TUint32 CSatApnHandler::FindDefaultApL(
-        const RPacketContext::TProtocolType& aPdpType )
-    {
-    LOG( SIMPLE, "SATENGINE: CSatApnHandler::FindDefaultApL calling" );
-    TUint32 defaultIap( 0 );
-    TInt pdpType;
-    TBool isFound( EFalse );
-
-    // create a network destination
-    RCmDestination des;
-    RCmConnectionMethod cm;
-
-    // Create CMManager Session
-    RCmManager cmManager;
-    cmManager.OpenL();
-    CleanupClosePushL( cmManager );
-
-    // Get the Connection Method list from the open CMManager session
-    RArray<TUint32> array( KSatCMGranularity );
-    CleanupClosePushL( array );
-
-    // list all available destinations' id
-    cmManager.AllDestinationsL( array );
-    for( TInt i = 0; ( i < array.Count() ) && !isFound; ++i )
-        {
-        des = cmManager.DestinationL( array[i] );
-        CleanupClosePushL( des );
-
-        if ( CMManager::ESnapPurposeInternet ==
-        des.MetadataL( CMManager::ESnapMetadataPurpose ) )
-            {
-            LOG( SIMPLE, "SATENGINE: CSatApnHandler::FindDefaultApL \
-            the fixed destination is identified as 'Internet'" );
-            for( TInt j = 0; ( j < des.ConnectionMethodCount() ) &&
-            !isFound; ++j )
-                {
-                cm = des.ConnectionMethodL( j );
-                CleanupClosePushL( cm );
-                pdpType = cm.GetIntAttributeL(
-                        CMManager::EPacketDataPDPType );
-                LOG2( SIMPLE, "SATENGINE: CSatApnHandler::FindDefaultApL \
-                        current protocol type is %d", pdpType )
-                if ( pdpType == aPdpType )
-                    {
-                    defaultIap = cm.GetIntAttributeL( CMManager::ECmIapId );
-                    isFound  = ETrue;
-                    LOG2( SIMPLE, "SATENGINE: CSatApnHandler::FindDefaultApL \
-                            default iap had been found %d", defaultIap )
-                    }
-                CleanupStack::PopAndDestroy( &cm );
-                }
-            }
-        CleanupStack::PopAndDestroy( &des );
-        }
-    CleanupStack::PopAndDestroy( &array );
-    CleanupStack::PopAndDestroy( &cmManager );
-
-    if ( !isFound )
-        {
-        LOG( SIMPLE, "SATENGINE: CSatApnHandler: default AP not found" );
-        User::Leave( KErrNotFound );
-        }
-
-    LOG( SIMPLE, "SATENGINE: CSatApnHandler::FindDefaultApL exit" )
-    return defaultIap;
-    }
-//  End of File