diff -r bbe4544dfd31 -r dd6aaa97e7b1 bearermanagement/mpm/src/mpmserver.cpp --- a/bearermanagement/mpm/src/mpmserver.cpp Fri Aug 06 19:11:03 2010 +0300 +++ b/bearermanagement/mpm/src/mpmserver.cpp Mon Aug 23 13:40:12 2010 +0300 @@ -42,6 +42,7 @@ #include "mpmvpntogglewatcher.h" #include "mpmdatausagewatcher.h" #include "mpmpropertydef.h" +#include "mpmconnpermquerytimer.h" static const TUint32 KUidKmdServer = 0x1000088A; @@ -99,7 +100,8 @@ iConnUiUtils( NULL ), iOfflineMode( ECoreAppUIsNetworkConnectionAllowed ), iOfflineWlanQueryResponse( EOfflineResponseUndefined ), - iRoamingToWlanPeriodic( NULL ) + iRoamingToWlanPeriodic( NULL ), + iConnPermQueryTimer( NULL ) { } @@ -270,6 +272,8 @@ delete iCommsDatAccess; delete iConnUiUtils; + + delete iConnPermQueryTimer; } // ----------------------------------------------------------------------------- @@ -383,19 +387,13 @@ "CMPMServer::AppendBMConnection - aConnId = 0x%x, aSnap = %i", aConnId, aSnap ) - // Set the Connection Id, SNAP, Iap Id and connection state - // - TConnectionInfo connInfo; - connInfo.iConnId = aConnId; - connInfo.iSnap = aSnap; - connInfo.iIapId = aIapId; - connInfo.iState = aState; - connInfo.iAppUid = aSession.AppUid(); - - // Package into TActiveBMConn //TODO Redundant.. remove the other one. - // + // Set the Connection Id, SNAP, Iap Id and connection state, into TActiveBMConn TActiveBMConn conn; - conn.iConnInfo = connInfo; + conn.iConnInfo.iConnId = aConnId; + conn.iConnInfo.iSnap = aSnap; + conn.iConnInfo.iIapId = aIapId; + conn.iConnInfo.iState = aState; + conn.iConnInfo.iAppUid = aSession.AppUid(); TInt index1 = iActiveBMConns.Find( conn, TActiveBMConn::MatchConnInfo ); @@ -1482,7 +1480,7 @@ MPMLOGSTRING( "CMPMServer::StartForcedRoamingToWlan" ) // cancel the periodic object - if ( iRoamingToWlanPeriodic != NULL ) + if ( iRoamingToWlanPeriodic ) { iRoamingToWlanPeriodic->Cancel(); } @@ -1554,6 +1552,11 @@ MPMLOGSTRING( "CMPMServer::StartForcedRoamingToConnectedWlanL" ); static_cast( aUpdater )->StartForcedRoamingToWlanL( static_cast( aUpdater )->iConnMonIapInfo ); + // Added also execution of policy based roaming logic because + // connections that are in EStarting state, when WLAN signal + // gets weak, would remain in WLAN as long as signal is weak. + static_cast( aUpdater )->StartForcedRoamingFromWlanL( + static_cast( aUpdater )->iConnMonIapInfo ); return 0; } @@ -2018,6 +2021,61 @@ iOfflineWlanQueryResponse = aResponse; } +// --------------------------------------------------------------------------- +// CMPMServer::StartConnPermQueryTimer +// Starts the connection permission query timer. +// --------------------------------------------------------------------------- +// +void CMPMServer::StartConnPermQueryTimer() + { + MPMLOGSTRING( "CMPMServer::StartConnPermQueryTimer" ) + + if ( !iConnPermQueryTimer ) + { + TRAPD( err, iConnPermQueryTimer = CMPMConnPermQueryTimer::NewL( this ) ); + if ( err == KErrNone ) + { + iConnPermQueryTimer->StartTimer(); + MPMLOGSTRING( "CMPMServer::StartConnPermQueryTimer: Ok." ) + } + } + } + +// --------------------------------------------------------------------------- +// CMPMServer::ResetConnPermQueryTimer +// Resets the connection permission query timer. +// --------------------------------------------------------------------------- +// +void CMPMServer::ResetConnPermQueryTimer() + { + MPMLOGSTRING( "CMPMServer::ResetConnPermQueryTimer" ) + + if ( iConnPermQueryTimer ) + { + delete iConnPermQueryTimer; + iConnPermQueryTimer = NULL; + MPMLOGSTRING( "CMPMServer::ResetConnPermQueryTimer: Ok." ) + } + } + +// --------------------------------------------------------------------------- +// CMPMServer::IsConnPermQueryTimerOn +// Tells if the connection permission query timer is on. +// --------------------------------------------------------------------------- +// +TBool CMPMServer::IsConnPermQueryTimerOn() + { + MPMLOGSTRING( "CMPMServer::IsConnPermQueryTimerOn" ) + + TBool retval = EFalse; + if ( iConnPermQueryTimer ) + { + retval = ETrue; + MPMLOGSTRING( "CMPMServer::IsConnPermQueryTimerOn: Yes." ) + } + return retval; + } + // ----------------------------------------------------------------------------- // TMPMBlackListConnId::Append // -----------------------------------------------------------------------------