callcontinuity/vcchotrigger/src/vcchotrigger.cpp
changeset 2 7b872347d83b
parent 0 a4daefaec16c
child 10 ed1e38b404e5
--- a/callcontinuity/vcchotrigger/src/vcchotrigger.cpp	Tue Jan 26 11:50:49 2010 +0200
+++ b/callcontinuity/vcchotrigger/src/vcchotrigger.cpp	Tue Feb 02 00:05:57 2010 +0200
@@ -306,10 +306,16 @@
     
     if ( iPreviousWlanClass == iWlanClass )
         {
-        RUBY_DEBUG0( "No change in WLAN signal class -> return" );
-    
-        return;
-        }
+        if (iWlanClass == ESignalClassWeak)
+            {
+            RUBY_DEBUG0( "Signal is still weak try again to do HO" );
+            }
+        else
+            {
+            RUBY_DEBUG0( "No change in WLAN signal class -> return" );
+            return;
+            }
+          }
     else
         {
         iPreviousWlanClass = iWlanClass;
@@ -360,7 +366,7 @@
     // If the previous class is the same as the new one
     // - do nothing.
     
-    if ( iPreviousGsmClass == iGsmClass )
+    if ( iPreviousGsmClass == iGsmClass && iWlanClass != ESignalClassWeak  )
         {
         RUBY_DEBUG0( "No change in GSM signal class -> return" );
     
@@ -570,8 +576,8 @@
 		RUBY_DEBUG0( "VccHoTrigger::TriggerHo - no immediate HO" );
 		}
 	
-	if ( iWlanClass == ESignalClassWeak &&
-	     iGsmClass == ESignalClassNormal && 
+	if ( ( iWlanClass == ESignalClassWeak || iCchServiceStatus == EServiceUnavailable )&&
+	        iGsmClass == ESignalClassNormal && 
 	     ( iPolicy.AllowedDirection() & EPsToCsAllowed  ))
 	    {
 	    RUBY_DEBUG0( "VccHoTrigger::WlanSignalChanged - NotifySubscriberL" );
@@ -657,7 +663,7 @@
 		}
 	
 	else if ( (iPolicy.PreferredDomain() == EPsPreferred)  &&
-	      iWlanClass == ESignalClassNormal &&
+	      iWlanClass == ESignalClassNormal && iCchServiceStatus != EServiceUnavailable &&
 	      ( iPolicy.AllowedDirection() & ECsToPsAllowed  ) )
         {
         // Current call is CS, PS signal is ok, preferred domain is PS and