--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/callcontinuity/vcchotrigger/src/vccgsmsignallevelhandler.cpp Wed Sep 01 12:29:57 2010 +0100
@@ -0,0 +1,164 @@
+/*
+* 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:
+*
+*/
+
+
+
+#include <mmtsy_names.h>
+
+#include "vccgsmsignallevelhandler.h"
+#include "rubydebug.h"
+
+static const TInt32 KStrengthMin = 110;
+
+// ======== MEMBER FUNCTIONS ========
+// ---------------------------------------------------------------------------
+// C++ constructor
+// ---------------------------------------------------------------------------
+//
+CVccGsmSignalLevelHandler::CVccGsmSignalLevelHandler(
+ MVccSignalLevelObserver& aObserver,
+ const TSignalLevelParams& aParams )
+ : CVccSignalLevelHandler( aObserver, aParams )
+ {
+ }
+
+// ---------------------------------------------------------------------------
+// Symbian constructor.
+// ---------------------------------------------------------------------------
+//
+void CVccGsmSignalLevelHandler::ConstructL()
+ {
+ RUBY_DEBUG_BLOCKL( "CVccGsmSignalLevelHandler::ConstructL" );
+
+ CVccSignalLevelHandler::ConstructL();
+ User::LeaveIfError( iEtelServer.Connect() );
+ User::LeaveIfError( iEtelServer.LoadPhoneModule( KMmTsyModuleName ) );
+ User::LeaveIfError( iPhone.Open( iEtelServer, KMmTsyPhoneName ) );
+ iGsmNotifications = CVccGsmNotifications::NewL( iPhone );
+ }
+
+// ---------------------------------------------------------------------------
+// Symbian constructor.
+// ---------------------------------------------------------------------------
+//
+CVccGsmSignalLevelHandler * CVccGsmSignalLevelHandler::NewL(
+ MVccSignalLevelObserver& aObserver,
+ const TSignalLevelParams& aParams )
+ {
+ CVccGsmSignalLevelHandler * self =
+ CVccGsmSignalLevelHandler::NewLC( aObserver, aParams );
+ CleanupStack::Pop(self);
+ return self;
+ }
+
+// ---------------------------------------------------------------------------
+// Symbian constructor.
+// ---------------------------------------------------------------------------
+//
+CVccGsmSignalLevelHandler * CVccGsmSignalLevelHandler::NewLC(
+ MVccSignalLevelObserver& aObserver,
+ const TSignalLevelParams& aParams )
+ {
+ CVccGsmSignalLevelHandler * self =
+ new(ELeave) CVccGsmSignalLevelHandler( aObserver, aParams );
+ CleanupStack::PushL(self);
+ self->ConstructL();
+ return self;
+ }
+
+// ---------------------------------------------------------------------------
+// C++ destructor.
+// ---------------------------------------------------------------------------
+//
+CVccGsmSignalLevelHandler::~CVccGsmSignalLevelHandler()
+ {
+ Cancel(); // Cancel any request, if outstanding
+ delete iGsmNotifications;
+ iPhone.Close();
+ iEtelServer.Close();
+ }
+
+// ---------------------------------------------------------------------------
+// Enables signal level change notifications.
+// ---------------------------------------------------------------------------
+//
+void CVccGsmSignalLevelHandler::EnableNotificationsL()
+ {
+ RUBY_DEBUG_BLOCK( "CVccGsmSignalLevelHandler::EnableNotificationsL" );
+
+ iGsmNotifications->ActivateNotifications( this,
+ iParams.iLowLevel, iParams.iHighLevel );
+ }
+
+// ---------------------------------------------------------------------------
+// Disables signal level change notifications.
+// ---------------------------------------------------------------------------
+//
+void CVccGsmSignalLevelHandler::DisableNotifications()
+ {
+ iGsmNotifications->CancelNotifications();
+ }
+
+// ---------------------------------------------------------------------------
+// Issues signal strength request to RMobilePhone.
+// ---------------------------------------------------------------------------
+//
+void CVccGsmSignalLevelHandler::GetStrength()
+ {
+ RUBY_DEBUG_BLOCK( "CVccGsmSignalLevelHandler::GetStrength" );
+
+ iPhone.GetSignalStrength( iStatus, iStrength, iBar );
+ RUBY_DEBUG3( " -iStatus = %d, iStrength = %d, iBar = %d",
+ iStatus.Int(), iStrength, iBar );
+ }
+
+// ---------------------------------------------------------------------------
+// Cancels signal strength request
+// ---------------------------------------------------------------------------
+//
+void CVccGsmSignalLevelHandler::CancelGetStrength()
+ {
+ RUBY_DEBUG_BLOCK( "CVccGsmSignalLevelHandler::CancelGetStrength" );
+
+ // EMobilePhoneNotifyModeChange
+ iPhone.CancelAsyncRequest( EMobilePhoneGetSignalStrength );
+ }
+
+// ---------------------------------------------------------------------------
+// Notification that signal strength has changed is received.
+// ---------------------------------------------------------------------------
+//
+void CVccGsmSignalLevelHandler::GsmStrengthChanged( TInt32 aStrength )
+ {
+ RUBY_DEBUG_BLOCK( "CVccGsmSignalLevelHandler::GsmStrengthChanged" );
+ RUBY_DEBUG1( " -aStrength = %d", aStrength );
+
+ iStrength = aStrength ? aStrength : KStrengthMin;
+ StrengthChanged();
+ }
+
+// ---------------------------------------------------------------------------
+// Notififies observer about signal level change.
+// ---------------------------------------------------------------------------
+//
+void CVccGsmSignalLevelHandler::NotifyChanges(
+ TInt32 aSignalStrength,
+ MVccSignalLevelObserver::TSignalStrengthClass aClass )
+ {
+ RUBY_DEBUG_BLOCK( "CVccGsmSignalLevelHandler::NotifyChanges" );
+ iObserver.GsmSignalChanged( aSignalStrength, aClass );
+ }