apicompatanamdw/bcdrivers/os/cellularsrv/IsvTelephonyTest/inc/IsvTelephonyTestEngine.h
author Maciej Seroka <maciejs@symbian.org>
Thu, 11 Nov 2010 14:03:20 +0000
changeset 26 26ffa9d5444d
parent 2 0cb2248d0edc
permissions -rw-r--r--
Updated knownissues.xml - wk_45_2010

/*
* 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:  A class that wraps the CTelephony class.
*  Copyright (c) 2005 Nokia. All rights reserved.
*
*/



#ifndef ISVTELEPHONYTESTENGINE_H
#define ISVTELEPHONYTESTENGINE_H

// INCLUDES
#include <e32base.h>
#include <etel3rdparty.h>

// FORWARD DECLARATIONS
class CTelephony;

// CLASS DEFINITIONS

/**
* CIsvTelephonyTest: This class derives from CActive and wraps the 
* CTelephony class. Provides a command table based execution for 
* telephony commands with command specific parsing capabilities.
*/
class CIsvTelephonyTestEngine : public CActive
    {
    public:
    
	  /**
	   * Command Table.
	   */
	   enum TETelApiCmd 
		   	{
	        /** 
	        Get Phone Identity.
	        */
	        EGetPhoneId = 0,
	        /** 
	        Get SubscriberId.
	        */
	        EGetSubscriberId,
			/**
	        Get CurrentNetworkInfo.
	        */
	        EGetCurrentNetworkInfo,
			/**
	        Get CurrentNetworkName.
	        */
	        EGetCurrentNetworkName,
	        /** 
	        Get Flight Mode.
	        */
	        EGetFlightMode,
	        /** 
	        Get Indicator.
	        */
	        EGetIndicator,
	        /** 
	        Get Signal Strength.
	        */
	        EGetSignalStrength,
	        /** 
	        Get Lock Info.
	        */
	        EGetLockInfo,            
	        /** 
	        Send DTMF Tones
	        */
	        ESendDTMFTones,     
	        /** 
	        Get line status 
	        */
	        EGetLineStatus,     
	        /** 
	        Get call info
	        */
			EGetCallInfo, 
	        /** 
	        Get Operator Name.
	        */
	        EGetOperatorName,      
	        /** 
	        Get Call Forwarding Status. 
	        */
	        EGetCallForwardingStatus,                  
	        /** 
	        Get Network registration status.
	        */
	        ENwRegistrationStatus,
	        /**
	        Get Battery Info.
	        */
	        EGetBatteryInfo,
	        /** 
	        Get Call barring status.
	        */
	        EGetBarringStatus,
	        /** 
	        Get Call waiting status.
	        */
	        EGetWaitingStatus,
	        /** 
	        Get identity status.
	        */
	        EGetIdentityStatus,
	        /** 
	        Dial new call.
	        */
	        EDialNewCall,
	        /** 
	        Get call dynamic caps.
	        */
	        EGetCallDynamicCaps,	 
	        /** 
	        Get call status.
	        */
	        EGetCallStatus,	 	        	               
	        /** 
	        Hold.
	        */
	        EHold,
	        /** 
	        Resume.
	        */
	        EResume,
	        /** 
	        Swap.
	        */
	        ESwap,
	        /** 
	        Hangup.
	        */
	        EHangup,	        
	        /** 
	        AnswerIncomingCall.
	        */
	        EAnswerIncomingCall,
	        /** 
	        Notify change.
	        */
			ENotifyChange,
	        /** 
			Find device status.
	        */
			EFindDeviceStatus,
	        /** 
			Establish data call.
	        */
			EEstablishDataCall,
	        /** 
			Terminate data call.
	        */
			ETerminateDataCall,
	        /** 
			Receive data call.
	        */
			EReceiveDataCall,
	        /** 
			Cancel establish data call.
	        */
			ECancelEstablishDataCall,
	        /** 
			Cancel receive data call.
	        */
			ECancelReceiveDataCall, 
	        /** 
	        Maximum number of commands.
	        */
	        EMaxCommands,
	        /**
	        Command None
	        */
	        ECommandNone
	        };    
	        
    public:  // Constructors and destructor
    
        /**
        * Two-phased constructor.
        */
        static CIsvTelephonyTestEngine* NewL();
        
        /**
        * Destructor.
        */
        virtual ~CIsvTelephonyTestEngine();

    public:	// Test functions for individual commands
        
		/**
        * Sets internal cancel async flag, causing async function 
        * tests to be cancelled with CancelAsync() 
        */
		void SetCancelAsyncs( TBool aSetting );

        /**
        * Function for calling CTelephony::Version
        */
		TInt TestGetVersion( TVersion& aVersion );

        /**
        * Function for calling CTelephony::GetPhoneId
        */
		TInt TestGetPhoneId( 
			CTelephony::TPhoneIdV1& aPhoneId );

        /**
        * Function for calling CTelephony::GetSubscriberId
        */
		TInt TestGetSubscriberId( 
			CTelephony::TSubscriberIdV1& aSubscriberId );

        /**
        * Function for calling CTelephony::GetFlightMode
        */
		TInt TestGetFlightMode( 
			CTelephony::TFlightModeV1& aFlightMode );

        /**
        * Function for calling CTelephony::GetIndicator
        */
		TInt TestGetIndicator( 
			CTelephony::TIndicatorV1& aIndicator );

        /**
        * Function for calling CTelephony::GetBatteryInfo
        */
        TInt TestGetBatteryInfo( 
        	CTelephony::TBatteryInfoV1& aBatteryInfo );

        /**
        * Function for calling CTelephony::GetSignalStrength
        */
        TInt TestGetSignalStrength( 
        	CTelephony::TSignalStrengthV1& aSignalStrength );

        /**
        * Function for calling CTelephony::GetLockInfo
        */
        TInt TestGetLockInfo(
        	CTelephony::TIccLock& aLock, 
        	CTelephony::TIccLockInfoV1& aLockInfo );

        /**
        * Function for calling CTelephony::SendDTMFTones
        */
        TInt TestSendDTMFTones(
        	const TDesC& aDTMFTones );

        /**
        * Function for calling CTelephony::GetLineStatus
        */
        TInt TestGetLineStatus(
        	CTelephony::TPhoneLine& aPhoneLine,
    		CTelephony::TCallStatusV1& aCallStatus );

        /**
        * Function for calling CTelephony::GetCallInfo
        */
        TInt TestGetCallInfo( 
 			CTelephony::TCallSelectionV1& aCallSelection, 
 			CTelephony::TCallInfoV1& aCallInfo, 
 			CTelephony::TRemotePartyInfoV1& aRemotePartyInfo );    

        /**
        * Function for calling CTelephony::GetNetworkRegistrationStatus
        */
        TInt TestGetNetworkRegistrationStatus(
        	CTelephony::TNetworkRegistrationV1& aNetworkRegistration );

        /**
        * Function for calling CTelephony::GetCurrentNetworkInfo
        */
        TInt TestGetCurrentNetworkInfo( 
        	CTelephony::TNetworkInfoV1& aNetworkInfo );

        /**
        * Function for calling CTelephony::GetCurrentNetworkName
        */
        TInt TestGetCurrentNetworkName( 
        	CTelephony::TNetworkNameV1& aNetworkName );
						
        /**
        * Function for calling CTelephony::GetOperatorName
        */
        TInt TestGetOperatorName( 
        	CTelephony::TOperatorNameV1& aOperatorName );
        	
        /**
        * Function for calling CTelephony::GetCallForwardingStatus
        */
        TInt TestGetCallForwardingStatus( 
		 	CTelephony::TCallForwardingCondition& aCallForwardingCondition, 		 	
		 	CTelephony::TCallForwardingSupplServicesV1& aCallForwardingStatus,
		 	CTelephony::TServiceGroup& aServiceGroup );  

        /**
        * Function for calling CTelephony::GetCallBarringStatus
        */
        TInt TestGetCallBarringStatus( 
		 	CTelephony::TCallBarringCondition& aCallBarringCondition, 		 	
		 	CTelephony::TCallBarringSupplServicesV1& aCallBarringStatus,
		 	CTelephony::TServiceGroup& aServiceGroup );  
		
        /**
        * Function for calling CTelephony::GetCallWaitingStatus
        */
        TInt TestGetCallWaitingStatus( 		 	
		 	CTelephony::TCallWaitingSupplServicesV1& aCallWaitingStatus,
		 	CTelephony::TServiceGroup& aServiceGroup );  

        /**
        * Function for calling CTelephony::GetIdentityServiceStatus
        */
        TInt TestGetIdentityServiceStatus( 		 	
		 	CTelephony::TIdentityService& aIdentityService,
		 	CTelephony::TIdentityServiceV1& aIdentityServiceStatus );
 	
        /**
        * Function for calling CTelephony::DialNewCall
        */
        TInt TestDialNewCall( 
		 	CTelephony::TCallParamsV1& aCallParams, 
		 	CTelephony::TTelNumber& aTelNumber, 
			CTelephony::TCallId& aCallId, 
			CTelephony::TPhoneLine& aPhoneLine ); 
	 	
        /**
        * Function for calling CTelephony::GetCallDynamicCaps
        */
        TInt TestGetCallDynamicCaps( 		 	
			CTelephony::TCallId& aCallId, 
			CTelephony::TCallCapsV1& aCallCaps ); 

        /**
        * Function for calling CTelephony::GetCallStatus
        */
        TInt TestGetCallStatus( 		 	
			CTelephony::TCallId& aCallId, 
			CTelephony::TCallStatusV1& aCallStatus ); 	 		 	

        /**
        * Function for calling CTelephony::Hold
        */
        TInt TestHold( 
        	CTelephony::TCallId& aCallId ); 	 		 	
	
        /**
        * Function for calling CTelephony::Resume
        */
        TInt TestResume( 
        	CTelephony::TCallId& aCallId ); 	 		 	

        /**
        * Function for calling CTelephony::Swap
        */
        TInt TestSwap( 
        	CTelephony::TCallId& aCallId1,
        	CTelephony::TCallId& aCallId2 ); 	 		 	

        /**
        * Function for calling CTelephony::Hangup
        */
        TInt TestHangup( 
        	CTelephony::TCallId& aCallId ); 	 		 	

        /**
        * Function for calling CTelephony::AnswerIncomingCall
        */
        TInt TestAnswerIncomingCall( 		 	
			CTelephony::TCallId& aCallId, 
			CTelephony::TPhoneLine& aPhoneLine ); 	 		 	

        /**
        * Function for calling CTelephony::NotifyChange
        */
        TInt TestNotifyChangeVoiceLineStatus ( 
        	CTelephony::TNotificationEvent aNotificationEvent, 
        	TDes8& aNotificationPckg );
		
        /**
        * Function for calling CTelephony::FindDeviceStatus
        */
		TInt TestFindDeviceStatus();		

        /**
        * Function for calling CTelephony::EstablishDataCall
        */
		TInt TestEstablishDataCall();		

        /**
        * Function for calling CTelephony::EstablishDataCall
        */
		TInt TestEstablishDataCallAsync();		

        /**
        * Function for calling CTelephony::TerminateDataCall
        */
		TInt TestTerminateDataCall();		

        /**
        * Function for calling CTelephony::ReceiveDataCall
        */
		TInt TestReceiveDataCall();		

        /**
        * Function for calling CTelephony::ReceiveDataCall
        */
		TInt TestReceiveDataCallAsync();		

        /**
        * Function for calling CTelephony::CancelEstablishDataCall
        */
		TInt TestCancelEstablishDataCall();		

        /**
        * Function for calling CTelephony::CancelReceiveDataCall
        */
		TInt TestCancelReceiveDataCall();	
				
    protected:
    
        /**
        * From CActive, RunL.
        * Handles the active object’s request completion event.
        */
        void RunL();
        
        /**
        * From CActive, DoCancel.
        * Implements cancellation of an outstanding request.
        */
        void DoCancel();

        /**
        * Starts the active scheduler wait after testing if it 
        * is already started.
        */                                                        
        void StartWait();

	private: 

        /**
        * Default constructor.
        */
        CIsvTelephonyTestEngine();
        
        /**
        * Second-phase constructor.
        */
        void ConstructL();

    private:    // Data
        // Instance of command table    
        TETelApiCmd iTelApiCmd; 
        
        // Instance of scheduler wait class
        CActiveSchedulerWait iWait; 

        // Pointer to CTelephony class 
        // which contains the Telephony ISV 3rd party API
        CTelephony* iTelephony;      

       	// Notification event
       	CTelephony::TNotificationEvent iNotificationEvent;
       	
       	// Cancel Async flag
       	TBool iCancelAsyncs;
       	
    };

#endif // ISVTELEPHONYTESTENGINE_H