apicompatanamdw/bcdrivers/os/cellularsrv/IsvTelephonyTest/src/IsvTelephonyTestEngine.cpp
changeset 2 0cb2248d0edc
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/apicompatanamdw/bcdrivers/os/cellularsrv/IsvTelephonyTest/src/IsvTelephonyTestEngine.cpp	Thu Apr 22 17:15:08 2010 +0530
@@ -0,0 +1,965 @@
+/*
+* Copyright (c) 2005 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:
+*
+*/
+
+/* Changed by Vaibhav - 13Aug07 for Removing CodeScanner Warnings - High/medium */
+
+
+// INCLUDE FILES
+#include <e32std.h>
+#include <c32comm.h>
+#include <etel.h> 
+#include <Etel3rdParty.h>
+#include "IsvTelephonyTestEngine.h"
+
+// ================= MEMBER FUNCTIONS =========================================
+
+// ----------------------------------------------------------------------------
+// CIsvTelephonyTestEngine* CIsvTelephonyTestEngine::NewL
+// Two-phased constructor.
+// ----------------------------------------------------------------------------
+//
+CIsvTelephonyTestEngine* CIsvTelephonyTestEngine::NewL()
+    {
+    CIsvTelephonyTestEngine* self = new (ELeave) CIsvTelephonyTestEngine;        
+    CleanupStack::PushL( self );
+    self->ConstructL();
+    CleanupStack::Pop();    
+    return self;
+    }
+
+// ----------------------------------------------------------------------------
+// CIsvTelephonyTestEngine::~CIsvTelephonyTestEngine
+// Destructor.
+// ----------------------------------------------------------------------------
+//
+CIsvTelephonyTestEngine::~CIsvTelephonyTestEngine()
+    {
+    Cancel();    
+    delete iTelephony; 
+    }
+
+// ----------------------------------------------------------------------------
+// CIsvTelephonyTestEngine::RunL
+// Handles the active object’s request completion event.
+// ----------------------------------------------------------------------------
+//
+void CIsvTelephonyTestEngine::RunL()
+    {
+    iWait.AsyncStop();
+    }
+
+// ----------------------------------------------------------------------------
+// CIsvTelephonyTestEngine::DoCancel
+// Implements cancellation of an outstanding request.
+// ----------------------------------------------------------------------------
+//
+void CIsvTelephonyTestEngine::DoCancel()
+    {
+    //Based on the command, invoke the appropriate CancelAsync APIs
+    switch( iTelApiCmd )
+        {
+		case EGetPhoneId :
+            iTelephony->CancelAsync( CTelephony::EGetPhoneIdCancel );
+            break;
+		case EGetSubscriberId :
+            iTelephony->CancelAsync( CTelephony::EGetSubscriberIdCancel );
+            break;
+		case EGetFlightMode :
+            iTelephony->CancelAsync( CTelephony::EGetFlightModeCancel );
+            break;
+		case EGetIndicator :
+            iTelephony->CancelAsync( CTelephony::EGetIndicatorCancel );
+            break;
+        case EGetBatteryInfo : 
+            iTelephony->CancelAsync( CTelephony::EGetBatteryInfoCancel );
+            break;
+        case EGetSignalStrength :
+            iTelephony->CancelAsync( CTelephony::EGetSignalStrengthCancel );
+            break;
+        case EGetLockInfo :
+            iTelephony->CancelAsync( CTelephony::EGetLockInfoCancel );
+            break;        
+		case ESendDTMFTones:
+            iTelephony->CancelAsync( CTelephony::ESendDTMFTonesCancel );
+            break;
+      	case EDialNewCall :
+            iTelephony->CancelAsync( CTelephony::EDialNewCallCancel );
+            break;        
+      	case EHold :
+            iTelephony->CancelAsync( CTelephony::EHoldCancel );
+            break;        
+      	case EResume :
+            iTelephony->CancelAsync( CTelephony::EResumeCancel );
+            break;        
+      	case ESwap :
+            iTelephony->CancelAsync( CTelephony::ESwapCancel );
+            break;        
+      	case EHangup :
+            iTelephony->CancelAsync( CTelephony::EHangupCancel );
+            break;        
+      	case EAnswerIncomingCall :
+            iTelephony->CancelAsync( CTelephony::EAnswerIncomingCallCancel );
+            break;        
+		case ENwRegistrationStatus :
+            iTelephony->CancelAsync( CTelephony::EGetNetworkRegistrationStatusCancel );
+            break;
+		case EGetCurrentNetworkInfo :
+            iTelephony->CancelAsync( CTelephony::EGetCurrentNetworkInfoCancel );
+            break;
+		case EGetCurrentNetworkName:
+            iTelephony->CancelAsync( CTelephony::EGetCurrentNetworkNameCancel );
+            break;            
+      	case EGetOperatorName :
+            iTelephony->CancelAsync( CTelephony::EGetOperatorNameCancel );
+            break;        
+        case EGetCallForwardingStatus :
+            iTelephony->CancelAsync( CTelephony::EGetCallForwardingStatusCancel );
+            break;        
+        case EGetBarringStatus :
+            iTelephony->CancelAsync( CTelephony::EGetCallBarringStatusCancel );
+            break;        
+        case EGetWaitingStatus :
+            iTelephony->CancelAsync( CTelephony::EGetCallWaitingStatusCancel );
+            break;        
+        case EGetIdentityStatus :
+            iTelephony->CancelAsync( CTelephony::EGetIdentityServiceStatusCancel );
+            break;        
+      	case ENotifyChange :
+      		switch( iNotificationEvent )
+      			{
+      			case CTelephony::EOwnedCall1StatusChange : 
+      				iTelephony->CancelAsync( CTelephony::EOwnedCall1StatusChangeCancel );
+      				break; 
+      			case CTelephony::EOwnedCall2StatusChange : 
+      				iTelephony->CancelAsync( CTelephony::EOwnedCall2StatusChangeCancel );
+      				break; 
+      			case CTelephony::EVoiceLineStatusChange : 
+      				iTelephony->CancelAsync( CTelephony::EVoiceLineStatusChangeCancel );
+      				break; 
+      			default: 
+      				break; 
+      			}            
+            break;                    
+        default :
+            break;
+        }
+    }
+
+// ----------------------------------------------------------------------------
+// CIsvTelephonyTestEngine::CIsvTelephonyTestEngine
+// Default constructor.
+// ----------------------------------------------------------------------------
+//
+CIsvTelephonyTestEngine::CIsvTelephonyTestEngine()
+    :CActive( EPriorityStandard )    
+    { 
+    CActiveScheduler::Add( this );
+    }
+
+// ----------------------------------------------------------------------------
+// CIsvTelephonyTestEngine::ConstructL
+// It creates a CTelephony object and initializes a locally 
+// contained command table.
+// ----------------------------------------------------------------------------
+//
+void CIsvTelephonyTestEngine::ConstructL()
+    {
+    //Creating Telephony object. 
+    iTelephony = CTelephony::NewL();
+    }
+
+// ----------------------------------------------------------------------------
+// CIsvTelephonyTestEngine::StartWait
+// Checks for the active scheduler wait class's start state and then starts the
+// wait
+// ----------------------------------------------------------------------------
+//
+void CIsvTelephonyTestEngine::StartWait( )
+    {
+    // For testing CancelAsync     
+    if( iCancelAsyncs == (TBool) ETrue )
+    	{
+    	DoCancel();     	    	
+    	}    
+    	    
+    if ( iWait.IsStarted() != (TBool) ETrue )
+        {
+        iWait.Start();
+        }
+    }
+
+// ----------------------------------------------------------------------------
+// CIsvTelephonyTestEngine::SetCancelAsyncs
+// Cancels the asynchronous tests with CancelAsync
+// until flag aSetting is cleared 
+// ----------------------------------------------------------------------------
+//
+void CIsvTelephonyTestEngine::SetCancelAsyncs( TBool aSetting )
+	{	
+	iCancelAsyncs = aSetting; 
+	}
+
+// ----------------------------------------------------------------------------
+// CIsvTelephonyTestEngine::TestGetVersion
+// Test function that calls Version of CTelephony class.
+// ----------------------------------------------------------------------------
+//
+TInt CIsvTelephonyTestEngine::TestGetVersion( TVersion& aVersion )
+	{
+	aVersion = iTelephony->Version(); 
+	
+	return KErrNone; 
+	}
+
+// ----------------------------------------------------------------------------
+// CIsvTelephonyTestEngine::TestGetPhoneId
+// Test function that calls GetPhoneId of CTelephony class.
+// ----------------------------------------------------------------------------
+//
+TInt CIsvTelephonyTestEngine::TestGetPhoneId( 
+	CTelephony::TPhoneIdV1& aPhoneId )
+	{
+    CTelephony::TPhoneIdV1Pckg aPhoneIdPckg( aPhoneId );
+    
+    iTelApiCmd = EGetPhoneId;    
+     
+    iTelephony->GetPhoneId( iStatus, aPhoneIdPckg );
+    SetActive();
+    StartWait(); 
+						
+	return iStatus.Int(); 
+	}
+
+// ----------------------------------------------------------------------------
+// CIsvTelephonyTestEngine::TestGetSubscriberId
+// Test function that calls GetSubscriberId of CTelephony class.
+// ----------------------------------------------------------------------------
+//
+TInt CIsvTelephonyTestEngine::TestGetSubscriberId( 
+	CTelephony::TSubscriberIdV1& aSubscriberId )
+	{
+    CTelephony::TSubscriberIdV1Pckg aSubscriberIdPckg( aSubscriberId );
+    
+    iTelApiCmd = EGetSubscriberId;
+    
+    iTelephony->GetSubscriberId( iStatus, aSubscriberIdPckg );
+    SetActive();
+    StartWait(); 
+						
+	return iStatus.Int(); 
+	}
+
+// ----------------------------------------------------------------------------
+// CIsvTelephonyTestEngine::TestGetFlightMode
+// Test function that calls GetFlightMode of CTelephony class.
+// ----------------------------------------------------------------------------
+//
+TInt CIsvTelephonyTestEngine::TestGetFlightMode( 
+	CTelephony::TFlightModeV1& aFlightMode )
+	{
+    CTelephony::TFlightModeV1Pckg flightModePckg( aFlightMode ); 
+    
+    iTelApiCmd = EGetFlightMode;
+    
+    iTelephony->GetFlightMode( iStatus, flightModePckg );
+    SetActive();
+    StartWait(); 
+						
+	return iStatus.Int(); 
+	}
+
+// ----------------------------------------------------------------------------
+// CIsvTelephonyTestEngine::TestGetIndicator
+// Test function that calls GetIndicator of CTelephony class.
+// ----------------------------------------------------------------------------
+//
+TInt CIsvTelephonyTestEngine::TestGetIndicator( 	
+	CTelephony::TIndicatorV1& aIndicator )
+	{
+    CTelephony::TIndicatorV1Pckg indicatorPckg( aIndicator );  
+    
+    iTelApiCmd = EGetIndicator;
+    
+    iTelephony->GetIndicator( iStatus, indicatorPckg );
+    SetActive();
+    StartWait(); 
+						
+	return iStatus.Int(); 
+	}
+
+// ----------------------------------------------------------------------------
+// CIsvTelephonyTestEngine::TestGetBatteryInfo
+// Test function that calls GetBatteryInfo of CTelephony class.
+// ----------------------------------------------------------------------------
+//
+TInt CIsvTelephonyTestEngine::TestGetBatteryInfo( 
+	CTelephony::TBatteryInfoV1& aBatteryInfo )
+	{
+    CTelephony::TBatteryInfoV1Pckg batteryInfoPckg( aBatteryInfo );  
+    
+    iTelApiCmd = EGetBatteryInfo;
+    
+    iTelephony->GetBatteryInfo( iStatus, batteryInfoPckg );
+    SetActive();
+    StartWait(); 
+						
+	return iStatus.Int(); 
+	}        	
+    
+// ----------------------------------------------------------------------------
+// CIsvTelephonyTestEngine::TestGetSignalStrength
+// Test function that calls GetSignalStrength of CTelephony class.
+// ----------------------------------------------------------------------------
+//
+TInt CIsvTelephonyTestEngine::TestGetSignalStrength( 
+	CTelephony::TSignalStrengthV1& aSignalStrength )        	
+	{
+    CTelephony::TSignalStrengthV1Pckg signalStrengthPckg( aSignalStrength );  
+    
+    iTelApiCmd = EGetSignalStrength;
+    
+    iTelephony->GetSignalStrength( iStatus, signalStrengthPckg );
+    SetActive();
+    StartWait(); 
+						
+	return iStatus.Int(); 
+	}    	
+
+// ----------------------------------------------------------------------------
+// CIsvTelephonyTestEngine::TestGetLockInfo
+// Test function that calls GetLockInfo of CTelephony class.
+// ----------------------------------------------------------------------------
+//
+TInt CIsvTelephonyTestEngine::TestGetLockInfo( 
+	CTelephony::TIccLock& aLock, 
+	CTelephony::TIccLockInfoV1& aLockInfo )
+	{
+    CTelephony::TIccLockInfoV1Pckg lockInfoPckg( aLockInfo );  
+    
+    iTelApiCmd = EGetLockInfo;
+    
+    iTelephony->GetLockInfo( iStatus, aLock, lockInfoPckg );
+    SetActive();
+    StartWait(); 
+						
+	return iStatus.Int(); 
+	}    	
+
+// ----------------------------------------------------------------------------
+// CIsvTelephonyTestEngine::TestSendDTMFTones
+// Test function that calls SendDTMFTones of CTelephony class.
+// ----------------------------------------------------------------------------
+//
+TInt CIsvTelephonyTestEngine::TestSendDTMFTones(
+	const TDesC& aDTMFTones )
+	{
+    iTelApiCmd = ESendDTMFTones;
+    
+    iTelephony->SendDTMFTones( iStatus, aDTMFTones );
+    SetActive();
+    StartWait(); 
+						
+	return iStatus.Int(); 
+	}    	
+	
+// ----------------------------------------------------------------------------
+// CIsvTelephonyTestEngine::TestGetLineStatus
+// Test function that calls GetLineStatus of CTelephony class.
+// ----------------------------------------------------------------------------
+//
+TInt CIsvTelephonyTestEngine::TestGetLineStatus(
+	CTelephony::TPhoneLine& aPhoneLine,
+	CTelephony::TCallStatusV1& aCallStatus )
+	{
+    TInt result; 	
+    
+    iTelApiCmd = EGetLockInfo;
+    
+    CTelephony::TCallStatusV1Pckg callStatusPckg( aCallStatus );  
+    result = iTelephony->GetLineStatus( aPhoneLine, callStatusPckg );
+						
+	return result; 
+	}  
+
+// ----------------------------------------------------------------------------
+// CIsvTelephonyTestEngine::TestGetCallInfo
+// Test function that calls GetCallInfo of CTelephony class.
+// ----------------------------------------------------------------------------
+//
+TInt CIsvTelephonyTestEngine::TestGetCallInfo( 
+	CTelephony::TCallSelectionV1& aCallSelection, 
+	CTelephony::TCallInfoV1& aCallInfo, 
+	CTelephony::TRemotePartyInfoV1& aRemotePartyInfo )	    			
+	{
+	TInt result; 
+
+    iTelApiCmd = EGetCallInfo;
+    
+	CTelephony::TCallSelectionV1Pckg callSelectionPckg( aCallSelection );   
+    CTelephony::TCallInfoV1Pckg callInfoPckg( aCallInfo );  
+	CTelephony::TRemotePartyInfoV1Pckg remotePartyInfoPckg( aRemotePartyInfo );  	    			
+    
+    result = iTelephony->GetCallInfo( 
+    	callSelectionPckg, 
+    	callInfoPckg, 
+    	remotePartyInfoPckg );
+
+	return result; 
+	}  
+
+// ----------------------------------------------------------------------------
+// CIsvTelephonyTestEngine::TestGetNetworkRegistrationStatus
+// Test function that calls GetNetworkRegistrationStatus of CTelephony class.
+// ----------------------------------------------------------------------------
+//
+TInt CIsvTelephonyTestEngine::TestGetNetworkRegistrationStatus(
+	CTelephony::TNetworkRegistrationV1& aNetworkRegistration )        		
+    {    
+	CTelephony::TNetworkRegistrationV1Pckg 
+		networkRegistrationPckg( aNetworkRegistration );
+
+    iTelApiCmd = ENwRegistrationStatus;
+		
+    iTelephony->GetNetworkRegistrationStatus( iStatus, networkRegistrationPckg );    
+    SetActive();
+    StartWait(); 
+						
+	return iStatus.Int(); 
+    }
+	
+// ----------------------------------------------------------------------------
+// CIsvTelephonyTestEngine::TestGetCurrentNetworkInfo
+// Test function that calls GetCurrentNetworkInfo of CTelephony class.
+// ----------------------------------------------------------------------------
+//
+TInt CIsvTelephonyTestEngine::TestGetCurrentNetworkInfo( 
+	CTelephony::TNetworkInfoV1& aNetworkInfo )
+    {    
+	CTelephony::TNetworkInfoV1Pckg networkInfoPckg( aNetworkInfo );
+
+    iTelApiCmd = EGetCurrentNetworkInfo;
+
+    iTelephony->GetCurrentNetworkInfo( iStatus, networkInfoPckg );    
+    SetActive();
+    StartWait(); 
+						
+	return iStatus.Int(); 
+    }
+
+// ----------------------------------------------------------------------------
+// CIsvTelephonyTestEngine::TestGetCurrentNetworkName
+// Test function that calls GetCurrentNetworkName of CTelephony class.
+// ----------------------------------------------------------------------------
+//
+TInt CIsvTelephonyTestEngine::TestGetCurrentNetworkName( 
+	CTelephony::TNetworkNameV1& aNetworkName )
+    {    
+	CTelephony::TNetworkNameV1Pckg networkNamePckg( aNetworkName );
+
+    iTelApiCmd = EGetCurrentNetworkName;
+
+    iTelephony->GetCurrentNetworkName( iStatus, networkNamePckg );    
+    SetActive();
+    StartWait(); 
+						
+	return iStatus.Int(); 
+    }
+
+// ----------------------------------------------------------------------------
+// CIsvTelephonyTestEngine::TestGetOperatorName
+// Test function that calls GetCurrentNetworkName of CTelephony class.
+// ----------------------------------------------------------------------------
+//
+TInt CIsvTelephonyTestEngine::TestGetOperatorName( 
+	CTelephony::TOperatorNameV1& aOperatorName )
+    {    
+	CTelephony::TOperatorNameV1Pckg operatorNamePckg( aOperatorName );
+
+    iTelApiCmd = EGetOperatorName;
+
+    iTelephony->GetOperatorName( iStatus, operatorNamePckg );    
+    SetActive();
+    StartWait(); 
+						
+	return iStatus.Int(); 
+    }
+    	
+// ----------------------------------------------------------------------------
+// CIsvTelephonyTestEngine::TestGetCallForwardingStatus
+// Test function that calls GetCallForwardingStatus of CTelephony class.
+// ----------------------------------------------------------------------------
+//
+TInt CIsvTelephonyTestEngine::TestGetCallForwardingStatus( 
+ 	CTelephony::TCallForwardingCondition& aCallForwardingCondition, 
+ 	CTelephony::TCallForwardingSupplServicesV1& aCallForwardingStatus, 
+ 	CTelephony::TServiceGroup& aServiceGroup )    	
+    {    
+	CTelephony::TCallForwardingSupplServicesV1Pckg 
+		callForwardingStatusPckg( aCallForwardingStatus );		
+
+    iTelApiCmd = EGetCallForwardingStatus;
+
+    iTelephony->GetCallForwardingStatus( 
+    	iStatus, 
+    	aCallForwardingCondition, 
+    	callForwardingStatusPckg,
+    	aServiceGroup );        	
+    SetActive();
+    StartWait(); 
+						
+	return iStatus.Int(); 
+    }
+    
+// ----------------------------------------------------------------------------
+// CIsvTelephonyTestEngine::TestGetCallBarringStatus
+// Test function that calls GetCallBarringStatus of CTelephony class.
+// ----------------------------------------------------------------------------
+//
+TInt CIsvTelephonyTestEngine::TestGetCallBarringStatus( 
+ 	CTelephony::TCallBarringCondition& aCallBarringCondition, 		 	
+ 	CTelephony::TCallBarringSupplServicesV1& aCallBarringStatus,
+ 	CTelephony::TServiceGroup& aServiceGroup )    
+    {    
+	CTelephony::TCallBarringSupplServicesV1Pckg 
+		callBarringStatusPckg( aCallBarringStatus );		
+
+    iTelApiCmd = EGetBarringStatus;
+
+    iTelephony->GetCallBarringStatus( 
+    	iStatus, 
+    	aCallBarringCondition, 
+    	callBarringStatusPckg,
+    	aServiceGroup );        	
+    SetActive();
+    StartWait(); 
+						
+	return iStatus.Int(); 
+    }
+
+// ----------------------------------------------------------------------------
+// CIsvTelephonyTestEngine::TestGetCallBarringStatus
+// Test function that calls GetCallBarringStatus of CTelephony class.
+// ----------------------------------------------------------------------------
+//
+TInt CIsvTelephonyTestEngine::TestGetCallWaitingStatus( 		 	
+ 	CTelephony::TCallWaitingSupplServicesV1& aCallWaitingStatus,
+ 	CTelephony::TServiceGroup& aServiceGroup )    		 	
+    {    
+	CTelephony::TCallWaitingSupplServicesV1Pckg 
+		callWaitingStatusPckg( aCallWaitingStatus );		
+
+    iTelApiCmd = EGetWaitingStatus;
+
+    iTelephony->GetCallWaitingStatus( 
+    	iStatus,     	
+    	callWaitingStatusPckg,
+    	aServiceGroup );        	
+    SetActive();
+    StartWait(); 
+						
+	return iStatus.Int(); 
+    }
+
+// ----------------------------------------------------------------------------
+// CIsvTelephonyTestEngine::TestGetIdentityServiceStatus
+// Test function that calls GetIdentityServiceStatus of CTelephony class.
+// ----------------------------------------------------------------------------
+//
+TInt CIsvTelephonyTestEngine::TestGetIdentityServiceStatus( 		 	
+ 	CTelephony::TIdentityService& aIdentityService,
+ 	CTelephony::TIdentityServiceV1& aIdentityServiceStatus )
+    {    
+	CTelephony::TIdentityServiceV1Pckg
+		identityServiceStatusPckg( aIdentityServiceStatus );		
+
+    iTelApiCmd = EGetIdentityStatus;
+
+    iTelephony->GetIdentityServiceStatus( 
+    	iStatus,     	
+    	aIdentityService,
+    	identityServiceStatusPckg );        	
+    SetActive();
+    StartWait(); 
+						
+	return iStatus.Int(); 
+    }
+
+// ----------------------------------------------------------------------------
+// CIsvTelephonyTestEngine::TestDialNewCall
+// Test function that calls DialNewCall of CTelephony class.
+// ----------------------------------------------------------------------------
+//
+TInt CIsvTelephonyTestEngine::TestDialNewCall( 
+ 	CTelephony::TCallParamsV1& aCallParams, 
+ 	CTelephony::TTelNumber& aTelNumber, 
+	CTelephony::TCallId& aCallId, 
+	CTelephony::TPhoneLine& aPhoneLine )
+    {    
+	CTelephony::TCallParamsV1Pckg callParamsPckg( aCallParams );		
+
+    iTelApiCmd = EDialNewCall;
+
+    iTelephony->DialNewCall( 
+    	iStatus,     	
+    	callParamsPckg,
+    	aTelNumber,
+    	aCallId,
+    	aPhoneLine );        	
+    SetActive();
+    StartWait(); 
+						
+	return iStatus.Int(); 
+    }	
+
+// ----------------------------------------------------------------------------
+// CIsvTelephonyTestEngine::TestGetCallDynamicCaps
+// Test function that calls GetCallDynamicCaps of CTelephony class.
+// ----------------------------------------------------------------------------
+//
+TInt CIsvTelephonyTestEngine::TestGetCallDynamicCaps( 		 	
+	CTelephony::TCallId& aCallId, 
+	CTelephony::TCallCapsV1& aCallCaps )
+    {    
+	CTelephony::TCallCapsV1Pckg callCapsPckg( aCallCaps );		
+	TInt result; 		
+
+    iTelApiCmd = EGetCallDynamicCaps;
+
+    result = iTelephony->GetCallDynamicCaps(     	
+    	aCallId,
+    	callCapsPckg );        	
+	
+	return result; 
+    }	
+    	
+// ----------------------------------------------------------------------------
+// CIsvTelephonyTestEngine::TestGetCallStatus
+// Test function that calls GetCallStatus of CTelephony class.
+// ----------------------------------------------------------------------------
+//
+TInt CIsvTelephonyTestEngine::TestGetCallStatus( 		 	
+	CTelephony::TCallId& aCallId, 
+	CTelephony::TCallStatusV1& aCallStatus )
+    {    
+	CTelephony::TCallStatusV1Pckg callStatusPckg( aCallStatus );		
+	TInt result; 		
+
+    iTelApiCmd = EGetCallStatus;
+
+    result = iTelephony->GetCallStatus(     	
+    	aCallId,
+    	callStatusPckg );        	
+	
+	return result; 
+    }	
+
+// ----------------------------------------------------------------------------
+// CIsvTelephonyTestEngine::TestHold
+// Test function that calls Hold of CTelephony class.
+// ----------------------------------------------------------------------------
+//
+TInt CIsvTelephonyTestEngine::TestHold( 
+	CTelephony::TCallId& aCallId )
+    {    		
+    iTelApiCmd = EHold;
+
+    iTelephony->Hold(  
+    	iStatus,   	
+    	aCallId );        	
+    SetActive();
+    StartWait(); 
+	
+	return iStatus.Int(); 
+    }	
+
+// ----------------------------------------------------------------------------
+// CIsvTelephonyTestEngine::TestResume
+// Test function that calls Resume of CTelephony class.
+// ----------------------------------------------------------------------------
+//
+TInt CIsvTelephonyTestEngine::TestResume( 
+	CTelephony::TCallId& aCallId )
+    {    		
+    iTelApiCmd = EResume;
+
+    iTelephony->Resume(  
+    	iStatus,   	
+    	aCallId );        	
+    SetActive();
+    StartWait(); 
+	
+	return iStatus.Int(); 
+    }					    	
+
+// ----------------------------------------------------------------------------
+// CIsvTelephonyTestEngine::TestSwap
+// Test function that calls Swap of CTelephony class.
+// ----------------------------------------------------------------------------
+//
+TInt CIsvTelephonyTestEngine::TestSwap( 
+	CTelephony::TCallId& aCallId1,
+	CTelephony::TCallId& aCallId2 )
+    {    		
+    iTelApiCmd = ESwap;
+
+    iTelephony->Swap(  
+    	iStatus,   	
+    	aCallId1,
+    	aCallId2 );        	
+    SetActive();
+    StartWait(); 
+	
+	return iStatus.Int(); 
+    }					    	
+
+// ----------------------------------------------------------------------------
+// CIsvTelephonyTestEngine::TestHangup
+// Test function that calls Hangup of CTelephony class.
+// ----------------------------------------------------------------------------
+//
+TInt CIsvTelephonyTestEngine::TestHangup( 
+	CTelephony::TCallId& aCallId )
+    {    		
+    iTelApiCmd = EHangup;
+
+    iTelephony->Hangup(  
+    	iStatus,   	
+    	aCallId );        	
+    SetActive();
+    StartWait(); 
+	
+	return iStatus.Int(); 
+    }					    	
+                
+// ----------------------------------------------------------------------------
+// CIsvTelephonyTestEngine::TestAnswerIncomingCall
+// Test function that calls AnswerIncomingCall of CTelephony class.
+// ----------------------------------------------------------------------------
+//
+TInt CIsvTelephonyTestEngine::TestAnswerIncomingCall( 		 	
+	CTelephony::TCallId& aCallId, 
+	CTelephony::TPhoneLine& aPhoneLine )
+    {    		
+    // AnswerIncomingCall needs special test approach, calling 
+    // CTelephony::AnswerIncomingCall function opens a new timer handle
+    // that is not closed while CTelephony object exists. STIF tool recognizes 
+    // this as handle leak unless CTelephony is constructed and deleted within the 
+    // AnswerIncomingCall function (not a real leak)    
+    TInt result;
+	CTelephony::TCallStatusV1 callStatus; 
+	CTelephony::TCallStatusV1Pckg callStatusPckg( callStatus );
+
+    iTelApiCmd = EAnswerIncomingCall;
+	
+	// Precondition: wait incoming call
+ 	result = TestNotifyChangeVoiceLineStatus ( 
+ 		CTelephony::EVoiceLineStatusChange,
+ 		callStatusPckg ); 			
+	// Execute test
+	if( KErrNone == result && CTelephony::EStatusRinging == callStatus.iStatus )
+	    {
+    	// Test AnswerIncomingCall
+        iTelephony->AnswerIncomingCall(
+        	iStatus,      	
+        	aCallId,
+        	aPhoneLine );        	
+        SetActive();
+        StartWait(); 	    
+        result = iStatus.Int(); 	
+	    }
+    // Restore initial state: end call   		 
+    TestHangup( aCallId );
+    
+    // Delete and re-construct the CTelephony in order to overcome false handle 
+    // leak detection problem described earlier
+    delete iTelephony; 
+    iTelephony = NULL;	
+    TRAPD(err, iTelephony = CTelephony::NewL());
+    if(err != KErrNone)
+    return err;
+        
+	return result; 
+    }	
+
+// ----------------------------------------------------------------------------
+// CIsvTelephonyTestEngine::TestNotifyChangeVoiceLineStatus 
+// Test function that calls NotifyChange of CTelephony class.
+// ----------------------------------------------------------------------------
+//
+TInt CIsvTelephonyTestEngine::TestNotifyChangeVoiceLineStatus (	
+	CTelephony::TNotificationEvent aNotificationEvent,
+	TDes8& aNotificationPckg )
+    {
+	iTelApiCmd = ENotifyChange;    	
+	iNotificationEvent = aNotificationEvent; 
+	
+	iTelephony->NotifyChange(
+		iStatus, 
+		iNotificationEvent, 
+		aNotificationPckg );
+	SetActive();
+	StartWait(); 				
+	
+	return iStatus.Int(); 	
+    }    	                
+    
+// ----------------------------------------------------------------------------
+// CIsvTelephonyTestEngine::TestFindDeviceStatus
+// Test function that calls FindDeviceStatus of CTelephony class.
+// ----------------------------------------------------------------------------
+//
+TInt CIsvTelephonyTestEngine::TestFindDeviceStatus()
+    {
+	TInt result;  	
+	TInt deviceStatus; 		
+
+	iTelApiCmd = EFindDeviceStatus;		
+	
+	// FindDeviceStatus is deprecated and should return KErrNotSupported	
+	result = iTelephony->FindDeviceStatus( deviceStatus ); 
+		
+	return result; 
+    }    
+    
+// ----------------------------------------------------------------------------
+// CIsvTelephonyTestEngine::TestEstablishDataCall
+// Test function that calls EstablishDataCall of CTelephony class.
+// ----------------------------------------------------------------------------
+//
+TInt CIsvTelephonyTestEngine::TestEstablishDataCall()
+    {
+	TInt result;  	
+	TInt dataChannel; 
+
+	iTelApiCmd = EEstablishDataCall;	
+		
+	// EstablishDataCall is deprecated and should return KErrNotSupported	
+	result = iTelephony->EstablishDataCall( dataChannel, KNullDesC ); 
+	
+	return result; 
+    }    
+
+// ----------------------------------------------------------------------------
+// CIsvTelephonyTestEngine::TestEstablishDataCallAsync
+// Test function that calls EstablishDataCall of CTelephony class.
+// ----------------------------------------------------------------------------
+//
+TInt CIsvTelephonyTestEngine::TestEstablishDataCallAsync()
+    {
+	TInt dataChannel; 	
+
+	iTelApiCmd = EEstablishDataCall;		
+	
+	// EstablishDataCall is deprecated and should return KErrNotSupported	
+	iTelephony->EstablishDataCall( iStatus, dataChannel, KNullDesC );
+	SetActive();
+	StartWait(); 				
+	
+	return iStatus.Int(); 	
+    }    
+    
+// ----------------------------------------------------------------------------
+// CIsvTelephonyTestEngine::TestTerminateDataCall
+// Test function that calls TerminateDataCall of CTelephony class.
+// ----------------------------------------------------------------------------
+//
+TInt CIsvTelephonyTestEngine::TestTerminateDataCall()		
+    {
+	TInt result;  	
+
+	iTelApiCmd = ETerminateDataCall;	
+	
+	// TerminateDataCall is deprecated and should return KErrNotSupported	
+	result = iTelephony->TerminateDataCall();
+	
+	return result; 
+    }    
+    
+// ----------------------------------------------------------------------------
+// CIsvTelephonyTestEngine::TestReceiveDataCall
+// Test function that calls ReceiveDataCall of CTelephony class.
+// ----------------------------------------------------------------------------
+//
+TInt CIsvTelephonyTestEngine::TestReceiveDataCall()		
+    {
+	TInt result; 
+	TInt dataChannel; 
+
+	iTelApiCmd = EReceiveDataCall;	
+	
+	// ReceiveDataCall is deprecated and should return KErrNotSupported	
+	result = iTelephony->ReceiveDataCall( dataChannel );
+	
+	return result; 
+    }    
+    
+// ----------------------------------------------------------------------------
+// CIsvTelephonyTestEngine::TestReceiveDataCallAsync
+// Test function that calls ReceiveDataCall of CTelephony class.
+// ----------------------------------------------------------------------------
+//
+TInt CIsvTelephonyTestEngine::TestReceiveDataCallAsync()
+    {
+	TInt dataChannel; 
+
+	iTelApiCmd = EReceiveDataCall;	
+	
+	// ReceiveDataCall is deprecated and should return KErrNotSupported	
+	iTelephony->ReceiveDataCall( iStatus, dataChannel );
+	SetActive();
+	StartWait(); 				
+	
+	return iStatus.Int(); 	
+    }    		
+
+// ----------------------------------------------------------------------------
+// CIsvTelephonyTestEngine::TestCancelEstablishDataCall
+// Test function that calls CancelEstablishDataCall of CTelephony class.
+// ----------------------------------------------------------------------------
+//
+TInt CIsvTelephonyTestEngine::TestCancelEstablishDataCall()		
+    {
+	TInt result; 
+
+	iTelApiCmd = ECancelEstablishDataCall;	
+	
+	// CancelEstablishDataCall is deprecated
+	iTelephony->CancelEstablishDataCall();
+	result = KErrNone; 
+	
+	return result; 
+    }    
+    
+// ----------------------------------------------------------------------------
+// CIsvTelephonyTestEngine::TestCancelReceiveDataCall
+// Test function that calls CancelReceiveDataCall of CTelephony class.
+// ----------------------------------------------------------------------------
+//
+TInt CIsvTelephonyTestEngine::TestCancelReceiveDataCall()
+    {
+	TInt result; 
+
+	iTelApiCmd = ECancelReceiveDataCall;	
+	
+	// CancelReceiveDataCall is deprecated
+	iTelephony->CancelReceiveDataCall();
+	result = KErrNone; 
+    
+    return result;
+    }    	    
+
+// End of File