--- a/callcontinuity/vcchotrigger/src/vccsignallevelhandler.cpp Tue Feb 02 00:05:57 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,319 +0,0 @@
-/*
-* Copyright (c) 2007-2008 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description: Implementation of the base class of signal level handler
-*
-*/
-
-
-
-#include "vccsignallevelhandler.h"
-#include "vccsignallevelobserver.h"
-#include "rubydebug.h"
-
-
-// Min. signal strength in absolut dBm, i.e. the value
-// in real world is -110 dBm (so quite weak).
-static const TInt32 KStrengthMin = 110;
-
-// ---------------------------------------------------------------------------
-// C++ destructor.
-// ---------------------------------------------------------------------------
-//
-CVccSignalLevelHandler::~CVccSignalLevelHandler()
- {
- // Cancel any outstanding requests.
- Cancel();
-
- iStrength = 0;
- }
-
-// ---------------------------------------------------------------------------
-// Symbian second-phase constructor.
-// ---------------------------------------------------------------------------
-//
-void CVccSignalLevelHandler::ConstructL()
- {
- CTimer::ConstructL();
- }
-
-// ---------------------------------------------------------------------------
-// C++ constructor.
-// ---------------------------------------------------------------------------
-//
-CVccSignalLevelHandler::CVccSignalLevelHandler(
- MVccSignalLevelObserver& aObserver,
- const TSignalLevelParams& aParams )
- : CTimer( EPriorityStandard ),
- iObserver( aObserver ),
- iParams( aParams )
- {
- CActiveScheduler::Add( this );
- }
-
-// ---------------------------------------------------------------------------
-// Star signal level observing.
-// ---------------------------------------------------------------------------
-//
-void CVccSignalLevelHandler::StartL()
- {
- RUBY_DEBUG_BLOCK( "CVccSignalLevelHandler::StartL" );
-
- if ( !iNotificationsOn )
- {
- EnableNotificationsL();
- iNotificationsOn = ETrue;
- }
-
- RUBY_DEBUG0( " -call Cancel()" );
- Cancel();
-
- RUBY_DEBUG0( " -call GetStrength()" );
- GetStrength();
-
- RUBY_DEBUG1( " -iStrength = %d, set op = EOperationGet \
- state = EStrengthUnknown", iStrength );
-
- iOperation = EOperationGet;
-
- iState = EStrengthUnknown;
-
- RUBY_DEBUG0( " -call SetActive()" );
- SetActive();
- }
-
-// ---------------------------------------------------------------------------
-// Stop signal level observing.
-// ---------------------------------------------------------------------------
-//
-void CVccSignalLevelHandler::Stop()
- {
- RUBY_DEBUG_BLOCK( "CVccSignalLevelHandler::Stop ");
-
- DisableNotifications();
-
- iNotificationsOn = EFalse;
-
- iStrength = 0;
-
- Cancel();
- }
-
-// ---------------------------------------------------------------------------
-// Set new parameters.
-// ---------------------------------------------------------------------------
-//
-void CVccSignalLevelHandler::SetParams( const TSignalLevelParams& aParams )
- {
- RUBY_DEBUG_BLOCK( "CVccSignalLevelHandler::SetParams" );
- iParams = aParams;
- }
-
-// ---------------------------------------------------------------------------
-// Handles getting the signal strength and notifying the observer about
-// strength changes.
-// ---------------------------------------------------------------------------
-//
-void CVccSignalLevelHandler::RunL()
- {
- RUBY_DEBUG_BLOCK( "CVccSignalLevelHandler::RunL" );
-
- // Zero (0) is not acceptable.
- if ( !iStrength )
- {
- RUBY_DEBUG0( " -0 strength not acceptable, setting to KStrengthMin");
- iStrength = KStrengthMin;
- }
-
- RUBY_DEBUG3( " -iStrength = %d iState = %d iOp = %d", iStrength, iState, iOperation );
-
- switch ( iOperation )
- {
- case EOperationGet:
- {
-
- // We are in the Get-mode to get the signal strength.
- // If the strength is < than the high level (== the strength
- // is good), start timer to check if we are still in good level
- // after the timer completes.
- // The same is done if we have a low level (== bad).
-
- RUBY_DEBUG0( " -EOperationGet");
-
- if ( iStrength <= iParams.iHighLevel && iStrength > 0 )
- {
- RUBY_DEBUG0( " set state = EStrengthHigh, op = EOperationWait" );
-
- After( iParams.iHighTimeout );
- iState = EStrengthHigh;
- iOperation = EOperationWait;
- }
- else if ( iStrength >= iParams.iLowLevel )
- {
- RUBY_DEBUG0( " set state = EStrengtLow, op = EOperationWait" );
- After( iParams.iLowTimeout );
- iState = EStrengthLow;
- iOperation = EOperationWait;
- }
- else
- {
- RUBY_DEBUG0( " strength between low and high, set op = EOperationNone" );
-
- iOperation = EOperationNone;
- // PCLint
- }
- break;
- }
-
- case EOperationWait:
- {
-
- // Timer has completed. Check the signal level again.
-
- RUBY_DEBUG0( " -EOperationWait" );
- RUBY_DEBUG0( " set op = EOperationComplete" );
- GetStrength();
-
- SetActive();
-
- iOperation = EOperationComplete;
-
- break;
- }
-
- case EOperationComplete:
- {
- // Checking signal strength is now done.
- // Notify our observer (if needed).
-
- RUBY_DEBUG1( " -EOperationComplete, iStrength = %d", iStrength );
-
- // Do we have a good signal level?
- if ( iStrength <= iParams.iHighLevel && iStrength > 0 && iState == EStrengthHigh )
- {
- RUBY_DEBUG0( " -if ( iStrength <= iParams.iHighLevel" );
- NotifyChanges( iStrength, MVccSignalLevelObserver::ESignalClassNormal );
- }
- // Or do we have a bad signal level?
- else if ( iStrength >= iParams.iHighLevel && iState == EStrengthLow )
- {
- RUBY_DEBUG0( " -else if ( iStrength >= iParams.iHighLevel" );
- NotifyChanges( iStrength, MVccSignalLevelObserver::ESignalClassWeak );
- }
- else
- {
- // PCLint
- }
-
- iOperation = EOperationNone;
-
- break;
- }
-
- default:
- {
- break;
- }
- }
- }
-
-// ---------------------------------------------------------------------------
-// Handles signal strength changes notified by the subsystem
-// (either the WLAN or the GSM).
-// ---------------------------------------------------------------------------
-//
-void CVccSignalLevelHandler::StrengthChanged()
- {
-
- RUBY_DEBUG_BLOCK( "CVccSignalLevelHandler::StrengthChanged" );
-
- // The zero (0) is not good.
- if ( !iStrength )
- {
- iStrength = KStrengthMin;
- }
-
- RUBY_DEBUG3( " -iStrength = %d, iState = %d, iOp = %d",
- iStrength, iState, iOperation);
-
- // Check in which direction the signal strength changed
- // and start the timeout timer to see if the signal level
- // stays at that (new) level.
-
- RUBY_DEBUG1( " -iHighLevel = %d", iParams.iHighLevel );
- RUBY_DEBUG1( " -iLowLevel = %d", iParams.iLowLevel );
- if ( iStrength <= iParams.iHighLevel && iStrength > 0 ) // &&
- //( iState == EStrengthLow || iState == EStrengthUnknown ) )
- {
- // Cancel outstanding timer in all the cases
- Cancel();
- // We have a good level after a bad one.
-
- RUBY_DEBUG0( " -call After( hightimeout ), set state = High, op = Wait");
- After( iParams.iHighTimeout );
- iState = EStrengthHigh;
- iOperation = EOperationWait;
- }
- else if ( iStrength >= iParams.iLowLevel ) //&&
- //( iState == EStrengthHigh || iState == EStrengthUnknown ) )
- {
- // Cancel outstanding timer in all the cases
- Cancel();
- // We have a bad level after a good one.
-
- RUBY_DEBUG0( " -call After( lowtimeout ), set state = Low, op = Wait");
-
- After ( iParams.iLowTimeout );
- iState = EStrengthLow;
- iOperation = EOperationWait;
- }
- else
- {
- RUBY_DEBUG0( "-EOperationNone ");
- iOperation = EOperationNone;
- }
- }
-
-// ---------------------------------------------------------------------------
-// Cancel outstanding requests.
-// ---------------------------------------------------------------------------
-//
-void CVccSignalLevelHandler::DoCancel()
- {
- RUBY_DEBUG_BLOCK( "CVccSignalLevelHandler::DoCancel" );
- switch ( iOperation )
- {
- case EOperationWait:
- {
- RUBY_DEBUG0( "EOperationWait" );
- CTimer::DoCancel();
-
- break;
- }
-
- case EOperationGet:
- // fall-through intended here
- case EOperationComplete:
- {
- RUBY_DEBUG0( "EOperationGet / EOperationComplete" );
- CancelGetStrength();
-
- break;
- }
-
- default:
- {
- break;
- }
- }
- }