bearermanagement/mpm/src/mpmserver.cpp
changeset 60 a9c709db68db
parent 53 4af712113915
child 64 84c6623982f6
--- a/bearermanagement/mpm/src/mpmserver.cpp	Wed Aug 18 10:10:23 2010 +0300
+++ b/bearermanagement/mpm/src/mpmserver.cpp	Thu Sep 02 20:50:05 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<CMPMServer*>( aUpdater )->StartForcedRoamingToWlanL( 
             static_cast<CMPMServer*>( 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<CMPMServer*>( aUpdater )->StartForcedRoamingFromWlanL(
+            static_cast<CMPMServer*>( 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
 // -----------------------------------------------------------------------------