diff -r ba76fc04e6c2 -r 6b911d05207e phoneplugins/csplugin/tsrc/automaticanswertest/etelincomingcallmonitor.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/phoneplugins/csplugin/tsrc/automaticanswertest/etelincomingcallmonitor.cpp Wed Jun 23 18:12:20 2010 +0300 @@ -0,0 +1,107 @@ +/* +* Copyright (c) 2007 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: Implements the class CEtelIncomingCallMonitor +* +*/ + +#include "etelincomingcallmonitor.h" +#include +#include + +// --------------------------------------------------------------------------- +// Destructs the object by canceling first ongoing monitoring. +// --------------------------------------------------------------------------- +// +CEtelIncomingCallMonitor::~CEtelIncomingCallMonitor( ) + { + Cancel(); + iLine.Close(); + iServer.Close(); + } + +// --------------------------------------------------------------------------- +// Starts the monitor. +// --------------------------------------------------------------------------- +// +void CEtelIncomingCallMonitor::StartMonitoring() + { + if ( !IsActive() ) + { + iCallName.Zero(); + iLine.NotifyIncomingCall( iStatus, iCallName ); + SetActive(); + } + + } +// --------------------------------------------------------------------------- +// From CActive. +// Handles line status change notifying. +// --------------------------------------------------------------------------- +// +void CEtelIncomingCallMonitor::RunL() + { + + qDebug () << "CEtelIncomingCallMonitor::RunL<<"; + if ( iStatus == KErrNone ) + { + RMobileCall mobilecall; + TInt ret = mobilecall.OpenExistingCall(iLine,iCallName); + qDebug() << "CEtelIncomingCallMonitor::RunL_OpenExistingCall_ret:" << ret; + ret = mobilecall.AnswerIncomingCall(); + qDebug() << "CEtelIncomingCallMonitor::RunL_AnswerIncomingCall_ret:" << ret; + mobilecall.Close(); + // Continue monitoring + StartMonitoring(); + } + qDebug () << "CEtelIncomingCallMonitor::RunL>>"; + } + +// --------------------------------------------------------------------------- +// From CActive +// Canceling functionality. +// --------------------------------------------------------------------------- +// +void CEtelIncomingCallMonitor::DoCancel() + { + if ( iStatus == KRequestPending ) + { + iLine.NotifyIncomingCallCancel(); + } + } + +// --------------------------------------------------------------------------- +// Constructs the monitor. +// --------------------------------------------------------------------------- +// +CEtelIncomingCallMonitor::CEtelIncomingCallMonitor( + /*RMobileLine& aLine, + TInt aLineId */) : + CActive( EPriorityStandard + 2 ) + + { + CActiveScheduler::Add( this ); + const TInt KNbrOfMessageSlots = 128; + TInt phoneCount( 0 ); + + + int errorCode = iServer.Connect( KNbrOfMessageSlots ); + + RMobilePhone mobilePhone; + errorCode = iServer.EnumeratePhones( phoneCount ); + errorCode = iServer.GetPhoneInfo( phoneCount-1, iPhoneInfo ); + errorCode = mobilePhone.Open( iServer, iPhoneInfo.iName ); + int error = iLine.Open( mobilePhone,_L("Voice1")); + } + +// End of File