convergedcallengine/csplugin/inc/cspcall.h
branchRCL_3
changeset 19 7d48bed6ce0c
parent 18 594d59766373
child 20 987c9837762f
--- a/convergedcallengine/csplugin/inc/cspcall.h	Thu Aug 19 10:28:14 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,787 +0,0 @@
-/*
-* Copyright (c) 2007-2009 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:  CSPCall for CS Call Plug-in
-*
-*/
-
-
-
-#ifndef CSPCALL_H
-#define CSPCALL_H
-
-#include <mccpcscall.h>
-#include <mccpcallobserver.h>
-#include <mccptransferobserver.h>
-#include <mccpforwardobserver.h>
-#include <etel.h>
-#include <etelmm.h>
-#include <cccecallparameters.h>
-
-#include "cspconsts.h"
-#include "cspetelcallrequester.h" // For the requester and TRequestType
-#include "mcspcallobserver.h"
-#include "mcspcallerrorobserver.h"
-#include "mcspuusmessageobserver.h"
-#include "mcspcallcommandhandling.h"
-
-
-class MCCPForwardProvider;
-class CSPForwardProvider;
-class CSPTransferProvider;
-class RMobileCall;
-class CSPEtelCallStatusMonitor;
-class CSPEtelCallEventMonitor;
-class CSPCallInfoMonitor;
-class CSPEtelCallCapsMonitor;
-class CSPTransferProvider;
-class CSPEtelCallCapsMonitor;
-class CSPAudioHandler;
-class MCSPCommonInfo;
-class CSPUUIMonitor;
-class CSPUUIMessageSender;
-
-
-/**
-* Call class for CS Call Plug-in. Implements the API defined by CCP in classes
-* MCCPCall and MCCPCSCall
-*
-*  @lib csplugin.dll
-*/
-class CSPCall : public CBase,
-                public MCCPCSCall,
-                public MCSPCallObserver,
-                public MCSPCallErrorObserver,
-                public MCSPUUSMessageObserver,
-                public MCCPCallCommandHandling
-    {
-    public:
-        /*
-        * C++ default destructor
-        */
-        virtual ~CSPCall( );
-       
-        /** 
-        * ETel call name accessor.
-        * @return system wide error code
-        */
-        void CallName( TName& aCallName );
-        
-        /**
-        * Sets the audio handler for the call.
-        * @param aHandler audio handler
-        */
-        void SetAudioHandler( CSPAudioHandler* aHandler );
-        
-        /**
-         * Security setting change notification.
-         * @param aValue new value
-         */
-        void SecuritySettingChanged( TInt aValue );
-        
-        /**
-         * Remote alerting tone status changed notification.
-         * @param aNewStatus New remote alerting tone status.
-         */
-        void RemoteAlertingToneStatusChanged(
-            RMmCustomAPI::TRemoteAlertingToneStatus aNewStatus );
-
-        /**
-         * Set iDontReportTerm flag value to ETrue.
-         */
-        void DontReportTerminationError();
-        
-// from base class MCSPCallObserver
-
-        /**
-        * Updates the call event for observers.
-        * @param aEvent the event to be notified
-        */
-        virtual void NotifyForwardEventOccurred( 
-                        MCCPForwardObserver::TCCPForwardEvent aEvent );
-
-        /**
-        * Updates the state change and forwards the state for observer.
-        * @param aState new state (ETel) of the call 
-        */
-        virtual void NotifyCallStateChangedETel( 
-            RMobileCall::TMobileCallStatus aState );
-
-        /**
-        * Updates the call event for observers.
-        * @param aEvent the event to be notified
-        */
-        virtual void NotifyCallEventOccurred( 
-            MCCPCallObserver::TCCPCallEvent aEvent );
-
-        /**
-        * Updates the transfer event for observers.
-        * @param aEvent the event to be notified
-        */
-        virtual void NotifyTransferCallEventOccurred( 
-                        MCCPTransferObserver::TCCPTransferEvent aEvent );
-        
-        /**
-        * Notifies changed call capabilities.
-        * @param aCapsFlags new capability flags
-        */
-
-        virtual void CallCapsChanged( const TUint32 aCapsFlags );
-        
-// from base class MCSPCallErrorObserver        
-    
-        /**
-        * From MCSPCallErrorObserver
-        * Dial request failed notification.
-        * @param aErrorCode request failing error code
-        */
-        void DialRequestFailed( TInt aErrorCode );
-
-        /**
-        * From MCSPCallErrorObserver
-        * Emergency dial request failed notification.
-        * @param aErrorCode request failing error code
-        */
-        void EmergencyDialRequestFailed( TInt aErrorCode );
-        
-        /**
-        * From MCSPCallErrorObserver
-        * Notifies about error situation for CCE.
-        */
-        virtual void NotifyErrorOccurred( TCCPError aError );
-
-// from base class MCSPUUSMessageObserver
-        
-        /**
-        * From MCSPUUSMessageObserver
-        * UUS message received notification. 
-        */
-        void UUSMessageReceived( TDesC& aMessage );        
-        
-// from base class MCCPCSCall
-
-        /**
-        * From MCCPCSCall
-        * Returns call information
-        * @param aCallInfo TMobileCallInfoV3
-        * @return KErrNone if succesfull
-        *         otherwise another system wide error code
-        */
-        virtual TInt GetMobileCallInfo( TDes8& aCallInfo ) const;
-
-        /**
-        * From MCCPCSCall
-        * Gets the calls data call capabilities
-        * @param aCaps TMobileCallDataCapsV1
-        * @return KErrNone if the function member was successful, 
-        *        KErrNotSupported if call doesn't support circuit switched data
-        *        KErrNotFound if this call is not a data call
-        */
-        virtual TInt GetMobileDataCallCaps( TDes8& aCaps ) const;
-
-// from base class MCCPCall
-        
-        /**
-        * From MCCPCall
-        * Answers to an incoming call.
-        * @return system wide error code
-        */
-        virtual TInt Answer();
-
-        /**
-        * From MCCPCall
-        * Rejects an incoming call.
-        * @return system wide error code
-        */
-        virtual TInt Reject();
-
-        /**
-        * From MCCPCall
-        * Reguests plug-in to queue the call.     
-        * @return system wide error code    
-        */
-        virtual TInt Queue();
-
-        /**
-        * From MCCPCall
-        * Starts dialing to remote party
-        * @return system wide error code
-        */
-        virtual TInt Dial();
-        
-        /**
-        * From MCCPCSCall
-        * Starts dialing to recipient
-        * @param aCallParams Call parameters used 
-        *   by the TSY (TCallParamsPckg)
-        * @return system wide error code
-        */
-        TInt Dial( const TDesC8& aCallParams );
-
-        /**
-        * From MCCPCall
-        * Call is ringning
-        * @return system wide error code
-        */
-        virtual TInt Ringing();
-
-        /**
-        * From MCCPCall
-        * Ends an ongoing call.
-        * @return system wide error code
-        */
-        virtual TInt HangUp();
-
-        /**
-        * From MCCPCall
-        * Cancels the ongoing request
-        * @return system wide error code
-        */
-        virtual TInt Cancel();
-
-        /**
-        * From MCCPCall
-        * Puts the specified call on hold.
-        * @return system wide error code
-        */
-        virtual TInt Hold();
-
-        /**
-        * From MCCPCall
-        * Resumes the call.
-        * @return system wide error code
-        */
-        virtual TInt Resume();
-
-        /**
-        * From MCCPCall
-        * Swaps a connected call to its opposite state either active or on hold
-        * @return system wide error code
-        */
-        virtual TInt Swap();
-
-        /**
-        * From MCCPCall
-        * Returns the remote party of the call.
-        * @return remote party address,
-        */
-        const TDesC& RemoteParty() const;
-
-        /**
-        * From MCCPCall
-        * Returns the remote party name of the call.
-        * @return remote party name
-        */
-        const TDesC& RemotePartyName();
-
-        /**
-        * From MCCPCall
-        * Dialled party.
-        * @return dialled party name
-        */
-        const TDesC& DialledParty() const;
-
-        /**
-        * From MCCPCall
-        * Return boolean value if the incoming call is forwarded or not.
-        * @return ETrue if call is forwarded, else EFalse
-        */
-        virtual TBool IsCallForwarded() const;
-
-        /**
-        * From MCCPCall
-        * Returns boolean value if the call is mobile originated or not.
-        * @return ETrue if call is mobile originated, otherwise EFalse
-        */
-        virtual TBool IsMobileOriginated() const;
-
-        /**
-        * From MCCPCall
-        * Returns the state of the call.
-        * @return TCCPCallState The current state of the call
-        */
-        virtual MCCPCallObserver::TCCPCallState State() const;
-
-        /**
-        * From MCCPCall
-        * Returns TUid of the plug-in used for this call
-        * @return TUid Implementation UID of the Plug-In
-        */
-        virtual TUid Uid() const;
-
-        /**
-        * From MCCPCall
-        * Returns call control caps for this call
-        * @return call capability information
-        */
-        virtual MCCPCallObserver::TCCPCallControlCaps Caps( ) const;
-
-        /**
-        * From MCCPCall
-        * Get call's secure status.
-        * @return TBool ETrue if security is enabled, else EFalse.
-        */
-        virtual TBool IsSecured() const;
-
-        /**
-        * From MCCPCall 
-        * Get call's secure specified status.
-        * @return TBool ETrue if secure specified 
-        */
-        virtual TBool SecureSpecified() const;
-
-        /**
-        * From MCCPCall  
-        * Set call parameters.
-        * @param aNewParams New call paramater information.
-        */
-        virtual void SetParameters( const CCCPCallParameters& aNewParams );
-        
-        /**
-        * From MCCPCall 
-        * Cet call parameters.
-        * @return Current call paramater information.
-        */
-        virtual const CCCPCallParameters& Parameters() const;
-
-        /**
-        * From MCCPCall 
-        * Get Forward provider
-        * @param aObserver - observer class for forward events
-        * @return Pointer to MCCPForwardProvider if succesfull, NULL if not available
-        * @leave on error case system error code
-        */
-        virtual MCCPForwardProvider* ForwardProviderL( const MCCPForwardObserver& aObserver );
-
-        /**
-        * From MCCPCall 
-        * Get Call transfer provider
-        * @param aObserver - observer class for transfer events
-        * @return Pointer to MCCPTransferProvider if succesfull, NULL if not available
-        * @leave on error case system error code
-        */
-        virtual MCCPTransferProvider* TransferProviderL( const MCCPTransferObserver& aObserver );
-          
-        /**
-        * From MCCPCall  
-        * Adds a new observer for MCCECall object. Called in MT call case. In MO 
-        * case observer will be given at call construction.
-        * Plug-in dependent feature if duplicates or more than one observers 
-        * are allowed or not. Currently CCE will set only one observer.
-        * @param aObserver Observer
-        * @leave system error if observer adding fails
-        */
-        virtual void AddObserverL( const MCCPCallObserver& aObserver );
-
-        /**
-        * From MCCPCall  
-        * Remove an observer.
-        * @param aObserver Observer
-        * @return KErrNone if removed succesfully. KErrNotFound if observer was not found.
-        * Any other system error depending on the error.
-        */
-        virtual TInt RemoveObserver( const MCCPCallObserver& aObserver );
-        
-        /**
-        * From MCCPCall 
-        * Returns the inband tone associated to an error condition or a state transition of a call.
-        * See defenition for TCCPTone.
-        * @since S60 3.2
-        * @param None.
-        * @return TCCPTone Used tone.
-        */
-        TCCPTone Tone() const;
-
-// from base class MCCPCSCall
-        
-        /**
-        * From MCCPCSCall
-        * Indicates that FDN check is not used for dial.
-        */
-        virtual void NoFDNCheck( );
-        
-        /**
-        * From MCCPCSCall 
-        * Log dialed  number. SAT related, check if dialed number is to be logged or not.
-        * @since S60 5.0
-        * @param None
-        * @return Log dialed number or not.
-        */
-        virtual TBool LogDialedNumber() const;
-    
-// from base class MCCPCallCommandHandling
-        
-        /**
-        * Perform answer command.
-        * @return system wide error code
-        */
-        TInt PerformAnswerRequest();
-        
-        /**
-        * Perform dial command.
-        * @return system wide error code
-        */
-        TInt PerformDialRequest();
-        
-    protected:
-            
-        /**
-        * Starts dialing to recipient.
-        * Bypasses FDN check according to aFdnCheck.
-        * @param aFdnCheck True if FDN checking is used
-        * @return system wide error code
-        */
-        virtual TInt DialFdnCond( TBool aFdnCheck ) = 0;
-                
-    protected:
-    
-        /**
-        * C++ default constructor.  
-        * 
-        * @param aLine line of the call 
-        * @param aMobileOriginated is call mobile originated 
-        * @param aName contains call name (mobile terminated) or phone number (mobile originated)
-        * @param aCommonInfo reference to common info interface 
-        * @param aIsEmergencyCall is emergency call 
-        */
-        CSPCall(  RMobileLine& aLine, 
-                  TBool aMobileOriginated,
-                  const TDesC& aName,
-                  MCSPCommonInfo& aCommonInfo,
-                  TBool aIsEmergencyCall );
-                  
-        /*
-        * Constructing 2nd phase.
-        * @param aParams call parameters  
-        */
-        virtual void ConstructL( const CCCECallParameters& aParams );
-        
-        /*
-        * Notifies the ringing state to observers.
-        */
-        virtual void NotifyRingingState();
-        
-        /**
-        * Mapping ETel state to CCP state.
-        * @param aEtelState an ETel state
-        * @return corresponding CCP state
-        */
-        MCCPCallObserver::TCCPCallState 
-            CSPCall::CCPStateFromETelState(
-                RMobileCall::TMobileCallStatus aEtelState );
-                
-        /**
-        * From MCSPCallObserver 
-        * Updates the state change including inband tones 
-        * played by network and forwards the state for observer.
-        * @param aState new state of the call
-        */
-        virtual void NotifyCallStateChangedWithInband( 
-            MCCPCallObserver::TCCPCallState aState );
-
-        /**
-        * Updates the state change 
-        * and forwards the state for observer.
-        * @param aState new state of the call
-        */
-        virtual void NotifyCallStateChanged( 
-            MCCPCallObserver::TCCPCallState aState );
-            
-        /**
-        * From MCSPCallObserver
-        * Notify that remote party info has changed.        
-        * @param aRemotePartyName new remote party name
-        * @param aRemotePartyNumber new remote party number
-        */
-        virtual void NotifyRemotePartyInfoChanged(                
-            const TDesC& aRemotePartyName,
-            const TDesC& aRemotePartyNumber );
-
-        /**
-        * Open call handle.  
-        * Opens a new call handle for MO call  
-        * and an existing handle for MT call.    
-        */
-        virtual void OpenCallHandleL();
-
-        /**
-        * Update call info data including call name,  
-        * remote name and number data.  
-        */
-        virtual void UpdateCallInfo();
-        
-        /**
-         * Implementation for UpdateCallInfo().       
-         */
-        virtual void UpdateCallInfoImpl( RMobileCall::TMobileCallInfoV7 aCallInfo );
-        
-        /**
-         * Set call origin to CCCECallParameters.       
-         */
-        virtual void UpdateCallOrigin( RMobileCall::TMobileCallInfoV7 aCallInfo );
-        
-        /**
-        * Reads information from cenrep.
-        * @param aUid CR Uid
-        * @param aKey CR key
-        * @param aVal value of key, output
-        */
-        void ReadRepositoryL( TUid aUid, TUint aKey, TInt& aVal);
-
-        /**
-        * Check and notify call termination error.
-        */
-        void CheckAndNotifyTerminationError();
-        
-        /**
-        * Error from iExitCode.
-        */
-        TInt ExitCodeError() const;
-        
-        /**
-        * Update call name number info.   
-        * @param aCallInfo RMobileCall::TMobileCallInfoV3
-        * @param aCallCreatedByMonitor, set:  
-        *       EFalse for calls added by plugin owner
-        *       ETrue for calls added by ETel status monitor  
-        */
-        void UpdateCallNameNumberInfo(
-                RMobileCall::TMobileCallInfoV3& aCallInfo, 
-                TBool aCallAddedByMonitor ); 
-
-        /**
-        * Open new call.
-        * New call is opened when the plugin owner adds the new 
-        * call (compare to OpenExistingCall where call is added by 
-        * ETel monitor).  
-        */
-        void OpenNewCall(); 
-
-        /**
-        * Open existing call.
-        * Existing call is opened if one of the ETel
-        * monitors (incoming call monitor or line status monitor) 
-        * has added the call and no new call needs to be 
-        * opened.    
-        * @param aName name of the existing call   
-        */
-        void OpenExistingCallL( const TDesC& aName ); 
-        
-    private:
-
-        /**
-        * Create call handlers for call requests and for 
-        * monitoring call events.   
-        */
-        void CreateCallHandlersL();
-        
-        /**
-        * Update call state from ETel
-        * @return system wide error code 
-        */
-        int UpdateCallState();
-        
-        /**
-         * Sends a remote party info changed notification
-         * if the remote party number has changed. 
-         */
-        void NotifyRemotePartyNumberChanged();
-
-	private: 
-
-        enum TCSPCallAudioStatus {
-            ECSPCallAudioStatusInactive,
-            ECSPCallAudioStatusActive
-            };
-
-    protected:
-
-          /**
-          * CCP Call Observer array.
-          */
-          RPointerArray<MCCPCallObserver> iObservers;
-          
-          /**
-          * Actual ETel call handle.
-          */
-          RMobileCall iCall;
-
-          /**
-          * ETel line
-          */
-          RMobileLine& iLine;
-
-          /**
-          * Determines if the call direction is either MO (ETrue) or MT (EFalse)
-          */
-          TBool iMobileOriginated;  
-
-          /**
-          * Name information of the call.
-          * 
-          * Name information is stored during CSPCall construction
-          * and assigned to iCallName (MT or client call) or 
-          * iRemotePartyNumber (MO call) afterwards.    
-          */
-          TBuf<KCSPPhoneNumberMaxLength> iName;
-          
-          /**
-          * Remote party name of the call.
-          */
-          TBuf<KCSPPhoneNumberMaxLength> iRemotePartyNumber;
-          
-          /**
-          * Remote party name of the call.
-          */
-          TBuf<KCSPCallingNameMaxLength> iRemotePartyName;
-
-          /**
-          * Dialled party of the call.
-          */
-          TBuf<KCSPPhoneNumberMaxLength> iDialledParty;
-          
-          /**
-          * Call name for MT call.
-          */
-          TName iCallName;
-
-          /**
-          * Call parameters.
-          */      
-          CCCECallParameters* iParams; 
-         
-          /**
-          * Call state in CCP format
-          */
-          MCCPCallObserver::TCCPCallState iCallState;
-          
-          /**
-          * Capability flags.
-          */
-          TUint32 iCapsFlags;
-
-          /**
-          * Call status monitor
-          */
-          CSPEtelCallStatusMonitor* iCallStatusMonitor;
-            
-          /**
-          * Call event monitor
-          */
-          CSPEtelCallEventMonitor* iCallEventMonitor;
-          
-          /**
-          * Call info monitor
-          */
-          CSPCallInfoMonitor* iCallInfoMonitor;
-          
-          /**
-          * Makes the asynchronic requests for various purposes.
-          */
-          CSPEtelCallRequester* iRequester;
-
-          /**
-          * Dial completion code.
-          */
-          TInt iDialCompletionCode;
-
-          /**
-           * Common information for calls.
-           */
-           MCSPCommonInfo& iCommonInfo;
-
-          /**
-          * Call termination error notification has been sent.
-          */
-          TBool iTerminationErrorNotified;
-          
-          /**
-          * Emergency call.
-          */
-          TBool iIsEmergencyCall;
-    
-    private:
-        
-          /**
-          * Transfer provider.
-          * Own.
-          */
-          CSPTransferProvider* iTransferProvider;
-          
-          /**
-          * Forward provider. No actual implementation.
-          * Own.
-          */          
-          CSPForwardProvider* iForwardProvider;
-          
-          /**
-          * Audio dev sound handler.
-          * Not own.
-          */
-          CSPAudioHandler* iAudioHandler;
-          
-          /**
-          * FDN check usage status. Default is on. (ETrue)
-          */
-          TBool iFdnCheck;          
-          
-          /**
-          * Monitors call capabilities from ETel.
-          * Own.
-          */
-          CSPEtelCallCapsMonitor* iCallCapsMonitor;
-                    
-          /*  
-          * UUS monitor
-          */          
-          CSPUUIMonitor* iUUIMonitor;
-          
-          /*  
-          * UUS sender
-          */
-          CSPUUIMessageSender* iUUIMessageSender;
-          
-          /**
-          * Data for parsed skype id.
-          * Own.
-          */
-          HBufC* iSkypeId;
-          
-          /**
-          * Audio stop requested status. The flag prevents double audio stop.
-          * Stop is executed in Disconnecting state and Idle state 
-          * if previous state has been DisconnectingWithInband.
-          * Audio start status.
-          */
-          TCSPCallAudioStatus iAudioStatus;
-          
-          /**
-          * Defines whether to report KErrGsmCCNormalUnspecified
-          * and KErrGsmCCCallRejected.
-          */
-          TBool iDontReportTerm;
-          
-          /**
-           * User to user information. Sended to network before dial.
-           * Own.
-           */
-          HBufC* iUserToUserInformation;
-          
-          friend class UT_CSPCall;
-          friend class MT_CConvergedCallProvider;
-          
-          
-    };
-
-
-#endif // CSPCALL_H