--- 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