diff -r bfb1de3eac8e -r 7b872347d83b callcontinuity/vcchotrigger/src/vcchotrigger.cpp --- 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