phoneplugins/csplugin/tsrc/automaticanswertest/etelincomingcallmonitor.cpp
changeset 45 6b911d05207e
--- /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 <etelmmcs.h>
+#include <QDebug>
+
+// ---------------------------------------------------------------------------
+// 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