apicompatanamdw/bcdrivers/os/cellularsrv/IsvTelephonyTest/src/IsvTelephonyTestEngine.cpp
author shrivatsa
Mon, 27 Sep 2010 14:51:17 +0530
changeset 12 a0eee409ff14
parent 2 0cb2248d0edc
permissions -rw-r--r--
Updates to CompatibilityAnalyser - The Tool should now work with Symbian^4 - Some minor bug fixes related to Qt headers in the Symbian Platform

/*
* 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