alwayson_net_plugin/pdpcontextmanager2/src/caoconnectionmonitorimpl.cpp
changeset 0 5a93021fdf25
child 3 f7816ffc66ed
equal deleted inserted replaced
-1:000000000000 0:5a93021fdf25
       
     1 /*
       
     2 * Copyright (c) 2004,2006 Nokia Corporation and/or its subsidiary(-ies). 
       
     3 * All rights reserved.
       
     4 * This component and the accompanying materials are made available
       
     5 * under the terms of "Eclipse Public License v1.0"
       
     6 * which accompanies this distribution, and is available
       
     7 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
       
     8 *
       
     9 * Initial Contributors:
       
    10 * Nokia Corporation - initial contribution.
       
    11 *
       
    12 * Contributors:
       
    13 *
       
    14 * Description:  Implements the CAOConnectionMonitorImpl class
       
    15 *
       
    16 */
       
    17 
       
    18 // INCLUDE FILES
       
    19 #include <NIFVAR.H>
       
    20 #include "caoconnectionmonitorimpl.h"
       
    21 #include "maosettings.h"
       
    22 #include "logger.h"
       
    23 #include "maoconnectionmonitorobserver.h"
       
    24 #include "caoasyncwrapper.h"
       
    25 
       
    26 // UNNAMED NAMESPACE FOR LOCAL DEFINITIONS
       
    27 namespace
       
    28     {
       
    29     // CONSTATNS
       
    30 #ifdef _DEBUG
       
    31     _LIT( KPanicCat, "ConnMon" );
       
    32 #endif
       
    33 
       
    34     const TInt KBearerNotSearched = KErrNotFound;
       
    35     
       
    36     // DATA TYPES
       
    37     enum TPanicReason
       
    38         {
       
    39         EAlreadyFetchingNWRegistration,
       
    40         EAlreadyListeningNwRegistrationChange
       
    41         //EAlreadyFetchingBearerType
       
    42         };
       
    43     
       
    44     // LOCAL FUNCTIONS
       
    45 #ifdef _DEBUG
       
    46     LOCAL_C void Panic( TPanicReason aReason )
       
    47         {
       
    48         User::Panic( KPanicCat, aReason );
       
    49         }
       
    50 #endif
       
    51     }
       
    52 
       
    53 // METHODS
       
    54 
       
    55 // ---------------------------------------------------------------------------
       
    56 // Two-phased constructor.
       
    57 // ---------------------------------------------------------------------------
       
    58 //
       
    59 CAOConnectionMonitorImpl* CAOConnectionMonitorImpl::NewL(
       
    60     MAOConnectionMonitorObserver& aObserver,
       
    61     MAOSettings& aSettings )
       
    62     {
       
    63     LOG_1( _L("CAOConnectionMonitorImpl::NewL") );
       
    64     
       
    65     CAOConnectionMonitorImpl* self = new( ELeave )
       
    66         CAOConnectionMonitorImpl( aObserver, aSettings );
       
    67     
       
    68     CleanupStack::PushL( self );
       
    69     self->ConstructL();
       
    70     CleanupStack::Pop( self );
       
    71     
       
    72     return self;
       
    73     }
       
    74 
       
    75 // ---------------------------------------------------------------------------
       
    76 // Destructor
       
    77 // ---------------------------------------------------------------------------
       
    78 //
       
    79 CAOConnectionMonitorImpl::~CAOConnectionMonitorImpl()
       
    80     {
       
    81     LOG_1( _L("CAOConnectionMonitorImpl::~CAOConnectionMonitorImpl") );
       
    82     
       
    83     delete iBearer;
       
    84     delete iNWRegistrationStatusChange;
       
    85     delete iNWRegistrationStatus;
       
    86     delete iTelephony;
       
    87     iConnectionMonitor.CancelNotifications();
       
    88     iConnectionMonitor.Close();
       
    89     }
       
    90     
       
    91 // ---------------------------------------------------------------------------
       
    92 // CAOConnectionMonitorImpl::FetchNetworkRegistrationStatus
       
    93 // ---------------------------------------------------------------------------
       
    94 //
       
    95 void CAOConnectionMonitorImpl::FetchNetworkRegistrationStatus()
       
    96     {
       
    97     LOG_1( _L("CAOConnectionMonitorImpl::FetchNetworkRegistrationStatus" ) );
       
    98     
       
    99     __ASSERT_DEBUG( !iNWRegistrationStatus->IsActive(),
       
   100         Panic( EAlreadyFetchingNWRegistration ) );
       
   101 
       
   102     iNWRegistrationStatus->IssueRequest();
       
   103     }
       
   104 
       
   105 // ---------------------------------------------------------------------------
       
   106 // CAOConnectionMonitorImpl::NetworkRegistration
       
   107 // ---------------------------------------------------------------------------
       
   108 //
       
   109 CTelephony::TRegistrationStatus
       
   110     CAOConnectionMonitorImpl::NetworkRegistration() const
       
   111     {
       
   112     LOG_1( _L("CAOConnectionMonitorImpl::NetworkRegistration") );
       
   113     
       
   114     return iWNReg.iRegStatus;
       
   115     }
       
   116 
       
   117 
       
   118 // ---------------------------------------------------------------------------
       
   119 // Constructor
       
   120 // ---------------------------------------------------------------------------
       
   121 //
       
   122 CAOConnectionMonitorImpl::CAOConnectionMonitorImpl(
       
   123     MAOConnectionMonitorObserver& aObserver, MAOSettings& aSettings ):
       
   124     iObserver( aObserver ),
       
   125     iSettings( aSettings ),
       
   126     iWNRegPckg( iWNReg ),
       
   127     iWNRegChangePckg( iWNChangeReg ),
       
   128     iConnectionAlive( EFalse ),
       
   129     iBearerValue( KBearerNotSearched )
       
   130     {
       
   131     LOG_1( _L("CAOConnectionMonitorImpl::CAOConnectionMonitorImpl") );
       
   132     }
       
   133 
       
   134 // ---------------------------------------------------------------------------
       
   135 // Symbian 2nd phase constructor
       
   136 // ---------------------------------------------------------------------------
       
   137 //
       
   138 void CAOConnectionMonitorImpl::ConstructL()
       
   139     {
       
   140     LOG_1( _L("CAOConnectionMonitorImpl::ConstructL") );
       
   141     
       
   142     // Create connection monitor
       
   143     iConnectionMonitor.ConnectL();
       
   144     User::LeaveIfError( iConnectionMonitor.NotifyEventL( *this ) );
       
   145     
       
   146     // Create telephony
       
   147     iTelephony = CTelephony::NewL();
       
   148     
       
   149     // Network registration async wrapper
       
   150     iNWRegistrationStatus = CAOAsyncWrapper<CAOConnectionMonitorImpl>::NewL(
       
   151         this,
       
   152         &CAOConnectionMonitorImpl::NWRegStatusIssueRequest,
       
   153         &CAOConnectionMonitorImpl::NWRegStatusRunL,
       
   154         &CAOConnectionMonitorImpl::NWRegStatusDoCancel,
       
   155         &CAOConnectionMonitorImpl::NWRegStatusRunError );
       
   156         
       
   157     // Network registration status change async wrapper
       
   158     iNWRegistrationStatusChange = 
       
   159         CAOAsyncWrapper<CAOConnectionMonitorImpl>::NewL(
       
   160         this,
       
   161         &CAOConnectionMonitorImpl::NWRegStatusChangeIssueRequest,
       
   162         &CAOConnectionMonitorImpl::NWRegStatusChangeRunL,
       
   163         &CAOConnectionMonitorImpl::NWRegStatusChangeDoCancel,
       
   164         &CAOConnectionMonitorImpl::NWRegStatusChangeRunError );
       
   165         
       
   166     // Bearer type fetcher
       
   167     iBearer = CAOAsyncWrapper<CAOConnectionMonitorImpl>::NewL(
       
   168         this,
       
   169         &CAOConnectionMonitorImpl::BearerIssueRequest,
       
   170         &CAOConnectionMonitorImpl::BearerRunL,
       
   171         &CAOConnectionMonitorImpl::BearerDoCancel,
       
   172         &CAOConnectionMonitorImpl::BearerRunError );
       
   173         
       
   174     // Start listening NW reg status change
       
   175     ListenNetworkRegistrationStatusChange();
       
   176     }
       
   177 
       
   178 // ---------------------------------------------------------------------------
       
   179 // CAOConnectionMonitorImpl::ListenNetworkRegistrationStatusChange
       
   180 // ---------------------------------------------------------------------------
       
   181 //
       
   182 void CAOConnectionMonitorImpl::ListenNetworkRegistrationStatusChange()
       
   183     {
       
   184     LOG_1( _L(
       
   185         "CAOConnectionMonitorImpl::ListenNetworkRegistrationStatusChange" ) );
       
   186     
       
   187     __ASSERT_DEBUG( !iNWRegistrationStatusChange->IsActive(),
       
   188         Panic( EAlreadyListeningNwRegistrationChange ) );
       
   189 
       
   190     iNWRegistrationStatusChange->IssueRequest();    
       
   191     }
       
   192 
       
   193 // ---------------------------------------------------------------------------
       
   194 // CAOConnectionMonitorImpl::HandleError
       
   195 // ---------------------------------------------------------------------------
       
   196 //
       
   197 void CAOConnectionMonitorImpl::HandleError( TInt aError )
       
   198     {
       
   199     LOG_1( _L("CAOConnectionMonitorImpl::HandleError" ) );
       
   200     
       
   201     iObserver.HandleError( aError );
       
   202     }
       
   203 
       
   204 // ---------------------------------------------------------------------------
       
   205 // CAOConnectionMonitorImpl::NWRegStatusIssueRequest
       
   206 // ---------------------------------------------------------------------------
       
   207 //
       
   208 void CAOConnectionMonitorImpl::NWRegStatusIssueRequest(
       
   209     TRequestStatus& aStatus )
       
   210     {
       
   211     LOG_1( _L("CAOConnectionMonitorImpl::NWRegStatusIssueRequest" ) );
       
   212     
       
   213     iTelephony->GetNetworkRegistrationStatus( aStatus, iWNRegPckg );
       
   214     }
       
   215 
       
   216 // ---------------------------------------------------------------------------
       
   217 // CAOConnectionMonitorImpl::NWRegStatusRunL
       
   218 // ---------------------------------------------------------------------------
       
   219 //
       
   220 void CAOConnectionMonitorImpl::NWRegStatusRunL( TInt aStatus )
       
   221     {
       
   222     LOG_2( _L("CAOConnectionMonitorImpl::NWRegStatusRunL: aStatus: %d" ),
       
   223         aStatus );
       
   224         
       
   225     if ( aStatus == KErrNone )
       
   226         {
       
   227         LOG_2( _L("> NW reg. status: %d"), iWNReg.iRegStatus );
       
   228         iObserver.HandleNWRegistrationStatusChangedL( 
       
   229             iWNRegPckg().iRegStatus );
       
   230         }
       
   231     else
       
   232         {
       
   233         HandleError( aStatus );
       
   234         }
       
   235     }
       
   236 
       
   237 // ---------------------------------------------------------------------------
       
   238 // CAOConnectionMonitorImpl::NWRegStatusDoCancel
       
   239 // ---------------------------------------------------------------------------
       
   240 //
       
   241 void CAOConnectionMonitorImpl::NWRegStatusDoCancel()
       
   242     {
       
   243     LOG_1( _L("CAOConnectionMonitorImpl::NWRegStatusDoCancel" ) );
       
   244     
       
   245     iTelephony->CancelAsync( 
       
   246         CTelephony::EGetNetworkRegistrationStatusCancel );
       
   247     }
       
   248 
       
   249 // ---------------------------------------------------------------------------
       
   250 // CAOConnectionMonitorImpl::NWRegStatusRunError
       
   251 // ---------------------------------------------------------------------------
       
   252 //
       
   253 TInt CAOConnectionMonitorImpl::NWRegStatusRunError( TInt aError )
       
   254     {
       
   255     LOG_2( _L("CAOConnectionMonitorImpl::NWRegStatusRunError: aError: %d" ),
       
   256         aError );
       
   257 
       
   258     HandleError( aError );
       
   259     return KErrNone;
       
   260     }
       
   261 
       
   262 // ---------------------------------------------------------------------------
       
   263 // CAOConnectionMonitorImpl::NWRegStatusChangeIssueRequest
       
   264 // ---------------------------------------------------------------------------
       
   265 //
       
   266 void CAOConnectionMonitorImpl::NWRegStatusChangeIssueRequest(
       
   267     TRequestStatus& aStatus )
       
   268     {
       
   269     LOG_1( _L("CAOConnectionMonitorImpl::NWRegStatusChangeIssueRequest" ) );
       
   270     
       
   271     iTelephony->NotifyChange(
       
   272         aStatus,
       
   273         CTelephony::ENetworkRegistrationStatusChange,
       
   274         iWNRegChangePckg );
       
   275     }
       
   276 
       
   277 // ---------------------------------------------------------------------------
       
   278 // CAOConnectionMonitorImpl::NWRegStatusChangeRunL
       
   279 // ---------------------------------------------------------------------------
       
   280 //
       
   281 void CAOConnectionMonitorImpl::NWRegStatusChangeRunL( TInt aStatus )
       
   282     {
       
   283     LOG_2( _L("CAOConnectionMonitorImpl::NWRegStatusChangeRunL: \
       
   284         aStatus: %d" ),
       
   285         aStatus );
       
   286         
       
   287     // Handle event and continue listening
       
   288     if ( aStatus == KErrNone )
       
   289         {
       
   290         LOG_3( _L("> NW reg. old: %d, WN reg. new: %d"),
       
   291             iWNReg.iRegStatus, iWNChangeReg.iRegStatus );
       
   292             
       
   293         // Notify only if the value really changed
       
   294         if ( iWNReg.iRegStatus != iWNChangeReg.iRegStatus )
       
   295             {
       
   296             iWNReg = iWNChangeReg;
       
   297             iObserver.HandleNWRegistrationStatusChangedL(
       
   298                 iWNRegChangePckg().iRegStatus );
       
   299             }
       
   300         }
       
   301     else
       
   302         {
       
   303         HandleError( aStatus );
       
   304         }
       
   305     
       
   306     // Continue listening
       
   307     ListenNetworkRegistrationStatusChange();
       
   308     }
       
   309 
       
   310 // ---------------------------------------------------------------------------
       
   311 // CAOConnectionMonitorImpl::NWRegStatusChangeDoCancel
       
   312 // ---------------------------------------------------------------------------
       
   313 //
       
   314 void CAOConnectionMonitorImpl::NWRegStatusChangeDoCancel()
       
   315     {
       
   316     LOG_1( _L("CAOConnectionMonitorImpl::NWRegStatusChangeDoCancel" ) );
       
   317     
       
   318     iTelephony->CancelAsync(
       
   319         CTelephony::ENetworkRegistrationStatusChangeCancel );
       
   320     }
       
   321 
       
   322 // ---------------------------------------------------------------------------
       
   323 // CAOConnectionMonitorImpl::NWRegStatusChangeRunError
       
   324 // ---------------------------------------------------------------------------
       
   325 //
       
   326 #ifdef LOGGING_ENABLED
       
   327 TInt CAOConnectionMonitorImpl::NWRegStatusChangeRunError( TInt aError )
       
   328 #else
       
   329 TInt CAOConnectionMonitorImpl::NWRegStatusChangeRunError( TInt /*aError*/ )
       
   330 #endif
       
   331     {
       
   332     LOG_2( _L("CAOConnectionMonitorImpl::NWRegStatusChangeRunError: \
       
   333         aError: %d" ),
       
   334         aError );
       
   335     
       
   336     // Continue listening
       
   337     ListenNetworkRegistrationStatusChange();
       
   338     return KErrNone;
       
   339     }
       
   340     
       
   341 // ---------------------------------------------------------------------------
       
   342 // CAOConnectionMonitorImpl::BearerIssueRequest
       
   343 // ---------------------------------------------------------------------------
       
   344 //
       
   345 void CAOConnectionMonitorImpl::BearerIssueRequest( TRequestStatus& aStatus )
       
   346     {
       
   347     LOG_1( _L("CAOConnectionMonitorImpl::BearerIssueRequest" ) );
       
   348     
       
   349     iBearerValue = KBearerNotSearched;
       
   350     
       
   351     iConnectionMonitor.GetIntAttribute(
       
   352         iMyConnectionId,
       
   353         0,
       
   354         KBearer,
       
   355         iBearerValue,
       
   356         aStatus );
       
   357     }
       
   358 
       
   359 // ---------------------------------------------------------------------------
       
   360 // CAOConnectionMonitorImpl::CancelFetchBearerType
       
   361 // ---------------------------------------------------------------------------
       
   362 //
       
   363 void CAOConnectionMonitorImpl::CancelFetchBearerType()
       
   364     {
       
   365     LOG_1( _L("CAOConnectionMonitorImpl::CancelFetchBearerType" ) );
       
   366     
       
   367     iBearerValue = KBearerNotSearched;
       
   368     iBearer->Cancel();
       
   369     }
       
   370 
       
   371 // ---------------------------------------------------------------------------
       
   372 // CAOConnectionMonitorImpl::BearerRunL
       
   373 // ---------------------------------------------------------------------------
       
   374 //
       
   375 void CAOConnectionMonitorImpl::BearerRunL( TInt aStatus )
       
   376     {
       
   377     LOG_2( _L("CAOConnectionMonitorImpl::BearerRunL: aStatus: %d" ), 
       
   378             aStatus );
       
   379     
       
   380     if( aStatus != KErrNone )
       
   381         {
       
   382         iBearerValue = EBearerUnknown;
       
   383         }
       
   384     LOG_2( _L("> Bearer type: %d"), iBearerValue );
       
   385        
       
   386     switch( iBearerValue )
       
   387         {
       
   388         case EBearerExternalCSD:
       
   389         case EBearerExternalWCDMA:
       
   390         case EBearerExternalLAN:
       
   391         case EBearerExternalCDMA2000:
       
   392         case EBearerExternalGPRS:
       
   393         case EBearerExternalHSCSD:
       
   394         case EBearerExternalEdgeGPRS:
       
   395         case EBearerExternalWLAN:
       
   396         case EBearerExternalBluetooth:
       
   397         case EBearerExternalWcdmaCSD:   
       
   398         case EBearerGPRS:
       
   399         case EBearerEdgeGPRS:
       
   400         case EBearerWCDMA:    
       
   401             {
       
   402             iConnectionAlive = ETrue;
       
   403             iObserver.HandleExternalConnectionCreatedL();    
       
   404             
       
   405             break;
       
   406             }
       
   407         
       
   408         default:
       
   409             {
       
   410             break;
       
   411             }
       
   412         }
       
   413     }
       
   414 
       
   415 // ---------------------------------------------------------------------------
       
   416 // CAOConnectionMonitorImpl::BearerDoCancel
       
   417 // ---------------------------------------------------------------------------
       
   418 //
       
   419 void CAOConnectionMonitorImpl::BearerDoCancel()
       
   420     {
       
   421     LOG_1( _L("CAOConnectionMonitorImpl::BearerDoCancel" ) );
       
   422 
       
   423     iConnectionMonitor.CancelAsyncRequest( KBearer );
       
   424     }
       
   425 
       
   426 // ---------------------------------------------------------------------------
       
   427 // CAOConnectionMonitorImpl::BearerRunError
       
   428 // ---------------------------------------------------------------------------
       
   429 //
       
   430 TInt CAOConnectionMonitorImpl::BearerRunError( TInt /*aError*/ )
       
   431     {
       
   432     LOG_1( _L("CAOConnectionMonitorImpl::BearerRunError" ) );
       
   433 
       
   434     return KErrNone;
       
   435     }
       
   436 
       
   437 // ---------------------------------------------------------------------------
       
   438 // CAOConnectionMonitorImpl::FetchBearerType
       
   439 // ---------------------------------------------------------------------------
       
   440 //
       
   441 void CAOConnectionMonitorImpl::FetchBearerType()
       
   442     {
       
   443     LOG_1( _L("CAOConnectionMonitorImpl::FetchBearerType" ) );
       
   444 
       
   445     iBearer->IssueRequest();
       
   446     }
       
   447 
       
   448 // ---------------------------------------------------------------------------
       
   449 // CAOConnectionMonitorImpl::EventL
       
   450 // ---------------------------------------------------------------------------
       
   451 //
       
   452 void CAOConnectionMonitorImpl::EventL
       
   453      ( const CConnMonEventBase &aConnMonEvent )
       
   454     {
       
   455     LOG_1( _L("CAOConnectionMonitorImpl::EventL") );
       
   456     LOG_2( _L("> Event type: %d"), aConnMonEvent.EventType() );
       
   457     LOG_2( _L("> Connection id: %d"), aConnMonEvent.ConnectionId() );
       
   458         
       
   459     switch ( aConnMonEvent.EventType() )
       
   460         {
       
   461         case EConnMonCreateConnection:
       
   462             {
       
   463             LOG_1( _L("> Connection created") );
       
   464             if( iConnectionAlive )
       
   465                 {
       
   466                 LOG_1( _L("Connection has been alive! Break") );
       
   467                 break;
       
   468                 }
       
   469             
       
   470             iMyConnectionId = aConnMonEvent.ConnectionId();
       
   471             
       
   472             // Get iap id
       
   473             TUint           iapId( 0 );
       
   474             TRequestStatus  status1( KErrNone );
       
   475             
       
   476             iConnectionMonitor.GetUintAttribute( iMyConnectionId, 
       
   477                                                  0, 
       
   478                                                  KIAPId, 
       
   479                                                  iapId, 
       
   480                                                  status1 );
       
   481             User::WaitForRequest( status1 );
       
   482     
       
   483             if ( iSettings.AccessPointId() != iapId )
       
   484                 {
       
   485                 // Check the if the connection is external
       
   486                 if( !iBearer->IsActive() )
       
   487                     {
       
   488                     FetchBearerType();
       
   489                     // iConnectionAlive can be true if the bearer could be retrieved 
       
   490                     }
       
   491                 }
       
   492             break;
       
   493             }
       
   494         case EConnMonDeleteConnection:
       
   495             {
       
   496             LOG_1( _L("> Connection deleted") );
       
   497             
       
   498             if( iMyConnectionId != aConnMonEvent.ConnectionId() )
       
   499                 {
       
   500                 LOG_1( _L("Other connection was closed Break") );
       
   501                   
       
   502                 iObserver.HandleConnectionDeletedL( aConnMonEvent.ConnectionId(), EFalse );
       
   503                 break;
       
   504                 }
       
   505             
       
   506             if ( iBearer->IsActive() )
       
   507                 {
       
   508                 CancelFetchBearerType();    
       
   509                 }
       
   510             
       
   511             iConnectionAlive = EFalse;
       
   512             iObserver.HandleConnectionDeletedL( aConnMonEvent.ConnectionId(), ETrue );
       
   513             break;
       
   514             }
       
   515             
       
   516        case EConnMonConnectionStatusChange:
       
   517            {
       
   518            const CConnMonConnectionStatusChange* eventStatus; 
       
   519            eventStatus  = static_cast<const CConnMonConnectionStatusChange*>( 
       
   520                                                          &aConnMonEvent );
       
   521            TInt connId = eventStatus->ConnectionId(); 
       
   522 
       
   523            if ( eventStatus->ConnectionStatus() == KLinkLayerOpen )
       
   524                {
       
   525                LOG_1( _L("> Connection status KlinkLayerOpen") );
       
   526                	
       
   527                TUint iapId( 0 );
       
   528                TUint netId( 0 );
       
   529                TRequestStatus  status1( KErrNone );
       
   530                TRequestStatus  status2( KErrNone );
       
   531             
       
   532                 iConnectionMonitor.GetUintAttribute( connId, 
       
   533                                                      0, 
       
   534                                                      KIAPId, 
       
   535                                                      iapId, 
       
   536                                                      status1 );
       
   537                 User::WaitForRequest( status1 );
       
   538 		    
       
   539 		    
       
   540                 iConnectionMonitor.GetUintAttribute( connId, 
       
   541                                                      0, 
       
   542                                                      KNetworkIdentifier, 
       
   543                                                      netId, 
       
   544                                                      status2 );
       
   545                 User::WaitForRequest( status2 );
       
   546 		    
       
   547                 if ( status1 == KErrNone && status2 == KErrNone )
       
   548                     {    
       
   549                     // if this is a not-always-on iap
       
   550                     TInt bearer( 0 );
       
   551                     TRequestStatus status( KErrNotReady );
       
   552        
       
   553                     // Get the bearer info from CM server.
       
   554                     iConnectionMonitor.GetIntAttribute( connId, 
       
   555                                                         0, 
       
   556                                                         KBearer, 
       
   557                                                         bearer, 
       
   558                                                         status );
       
   559                     User::WaitForRequest( status ); 
       
   560 
       
   561                     if ( status.Int() != KErrNone ) 
       
   562                         {
       
   563                         // write to log
       
   564                         //LOG( Log::Printf( _L("KBearer FAILED: %d\n"), status.Int()));
       
   565                         break;
       
   566                         }
       
   567 
       
   568                     // Check that it is GPRS or WCDMA.
       
   569                     if ( bearer == EBearerGPRS      || 
       
   570                          bearer == EBearerEdgeGPRS  ||
       
   571                          bearer == EBearerWCDMA )
       
   572                         {     
       
   573                         // Notify internal packet connections
       
   574                         //if ( iSettings.AccessPointId() != iapId )
       
   575                         //    {
       
   576                         //    iConnectionAlive = ETrue;    
       
   577                         //    }
       
   578                         
       
   579                         iObserver.HandleInternalConnectionCreatedL( connId,
       
   580                                                                     iapId, 
       
   581                                                                     netId );
       
   582                         }  
       
   583                     }
       
   584                 }
       
   585             }
       
   586         default:
       
   587             {
       
   588             LOG_1( _L("> Do nothing") );
       
   589             // Nothing to do
       
   590             break;
       
   591             }
       
   592         }
       
   593 
       
   594     LOG_1( _L("CAOConnectionMonitorImpl::EventL end") );
       
   595 
       
   596     }