diff -r ebdbd102c78a -r 2eacb6118286 phoneengine/callhandling/inc/cpecallhandling.h --- a/phoneengine/callhandling/inc/cpecallhandling.h Fri May 14 15:51:57 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,696 +0,0 @@ -/* -* Copyright (c) 2002-2008 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: This file contains the header file of the CPECallHandling class. -* -*/ - - -#ifndef CPECALLHANDLING_H -#define CPECALLHANDLING_H - -//INCLUDES -#include -#include -#include -#include -#include -#include -#include "mpecallinitialiser.h" -#include - -// CONSTANTS -// None. - -// MACROS -// None. - -// DATA TYPES -// None. - -// FUNCTION PROTOTYPES -// None. - -// FORWARD DECLARATIONS -class CPEVideoCallHandling; -class MPEPhoneModelInternal; -class CPELine; -class CPEDtmfHandling; -class CPESingleCall; -class CPEConferenceCall; -class CPESupplementaryServicesMonitor; -class CPECallArrayOwner; -class CPsetSAObserver; -class CCCECallParameters; -class CPECCEObserver; -class CPESystemCallState; - -// CLASS DECLARATION - -/** -* CPECallHandling Handles voice call related events from phone engine. -* -* @lib callhandling.lib -* @since Series60_4.0 -*/ -class CPECallHandling - : public CBase, - public MPEMessageSender, - public MPECallHandling, - public MPECallInitialiser - { - public: //Constructors and descructor - /** - * Two-phased constructor. - */ - IMPORT_C static CPECallHandling* NewL( MPEPhoneModelInternal& aModel, - CCCE& aConvergedCallEngine, - MCCEDtmfInterface& aDtmfInterface ); - - /** - * Destructor. - */ - IMPORT_C virtual ~CPECallHandling(); - - protected: // Constructors and destructor - /** - * C++ default constructor. - */ - CPECallHandling( MPEPhoneModelInternal& aModel, - CCCE& aConvergedCallEngine, - MCCEDtmfInterface& aDtmfInterface ); - - /** - * By default Symbian 2nd phase constructor is private. - */ - void ConstructL(); - - public: // From MPEMessageSender - - /** - * Reroutes error message to Phone Engine, usable by call objects - * @param aCallId Identification number of the call. - * @param aErrorCode, the error code stored after previous unsuccessful request - */ - void SendErrorMessage( - const TInt aCallId, - const TInt aErrorCode ); - - /** - * Reroutes messages to Phone Engine, usable by call objects - * @param aMessage Message id. - * @param aCallId Identification number of the call. - */ - void SendMessage( - const MEngineMonitor::TPEMessagesFromPhoneEngine aMessage, - const TInt aCallId ); - - /** - * Reroutes call messages - * @param aMessage The message code of the message - * @param aName Name of call fill be maped to call id - */ - void SendMessage( - const MEngineMonitor::TPEMessagesFromPhoneEngine aMessage, - const TName& aName ); - - /** - * Reroutes call messages. - * @param aMessage specifies the event that has taken place - */ - void HandleInternalMessage( - TInt aMessage ); - - public: // From MPEMonitorCommandOwner - /** - * Reroutes error messages to Phone Engine, usable by other than call objects - * @param aErrorCode, the error code stored after previous unsuccessful request - */ - void SendErrorMessage( - const TInt aErrorCode ); - - /** - * Reroutes messages to Phone Engine, usable by other than call objects - * @param aMessage The message code of the message - */ - void SendMessage( - const MEngineMonitor::TPEMessagesFromPhoneEngine aMessage ); - - public: // From MPECallHandling - /** - * Starts monitoring incoming calls for voice and data call. - */ - IMPORT_C void StartUp(); - - /** - * Makes answer request to the Multimode ETel. - * @since Series60_4.0 - * @param None. - * @return Error code. - */ - IMPORT_C TInt AnswerCall(); - - /** - * Creates dialing request to the Multimode ETel. - * @since Series60_4.0 - * @param aNumber The telephone number to be called. - * @param aCallId Identification number of the call. - * @return Error (KErrNone is success). - */ - IMPORT_C TInt DialCall( const TPEPhoneNumber& aNumber,TInt& aCallId ); - - /** - * Creates dialing request to the Multimode ETel. - * @since Series60_4.0 - * @param aNumber The telephone number to be called. - * @param aCallId Identification number of the call. - * @return Error (KErrNone is success). - */ - IMPORT_C TInt DialMultimedia( const TPEPhoneNumber& aNumber,TInt& aCallId ); - - /** - * Returns call duration time. - * @since Series60_4.0 - * @param aDuration Call duration. - * @param aCallId Identification number of the call. - * @return Error code (KErrNone or KErrNotFound). - */ - IMPORT_C TInt GetCallDuration( TTimeIntervalSeconds& aDuration, TInt aCallId ); - - /** - * Returns information of the call. - * @since Series60_4.0 - * @param aCallInfo Current call information. - * @param aCallId Identification number of the call. - * @return Error code (KErrNone or KErrNotFound). - */ - IMPORT_C TInt GetCallInfo( - RMobileCall::TMobileCallInfoV3& aCallInfo, - TInt aCallId ); - - /** - * Returns state of the call. - * @since Series60_4.0 - * @param aCallid Identification number of the call. - * @return Call state ( EPEStateUnknown is error). - */ - IMPORT_C TPEState GetCallState( TInt aCallId ); - - /** - * Returns the missed voice call indicator. - * @since Series60_4.0 - * @param aMissedCall, missed call indicator. - * @param aCallId, call idendificator. - * @return KErrNone or KErrNotFound. - */ - IMPORT_C TInt GetMissedCall( TBool& aMissedCall, TInt aCallId ); - - /** - * Returns number of non-idle calls - * @since Series60_4.0 - * @param None. - * @return Number of current voice calls. - */ - IMPORT_C TInt GetNumberOfCalls(); - - /** - * Returns remote alerting tone status (is it played by network or not). - * @since Series60_4.0 - * @param aToneStatus Status of remote alerting tone play. - * @return None. - */ - /* IMPORT_C void GetRemoteAlertingToneStatus( - RMmCustomAPI::TRemoteAlertingToneStatus& aToneStatus );*/ - - /** - * Makes HangUp request to the CCE. - * @since Series60_4.0 - * @param aCallId Identification number of the call to be rejected. - * @param aAutoResumeOption if options for autoresume. - * @return Error (KErrNone is success). - */ - IMPORT_C TInt HangUp( TInt aCallId, TPEHangUpOptions aAutoResumeOption ); - - /** - * Determines if there is a call in given state. - * @since Series60_4.0 - * @param aState Call state search key. - * @return TBool, ETrue is there is a call; otherwise EFalse. - */ - IMPORT_C TBool IsCallInState( TPEState aState ) const; - - /** - * Determines if there is a call in given state. - * @since Series60_4.0 - * @param aState Call state search key. - * @return callid is there is a call; otherwise KPECallIdNotUsed( -1 ). - */ - IMPORT_C TInt GetCallIdByState( TPEState aState ) const; - - /** - * Makes reject request to the Multimode ETel - * @return Return possible error code - */ - IMPORT_C TInt RejectCall( ); - - /** - * Makes HangUp requests for all call to the Multimode ETel. - * @return Error (KErrNotFound if there is not a call and KErrNone if there one call at least). - */ - IMPORT_C TInt ReleaseAll(); - - /** - * Set Dynamic Hscsd parameters. - * @param const TInt aRxSlots, Hscsd data call received timeslots amount - const TInt aCallId, data call id. - * @return KErrNone or KErrNotFound. - */ - IMPORT_C TInt SetDynamicHscsdParams( TInt aRxSlots, TInt aCallId ); - - /** - * Terminate all connection request. - */ - IMPORT_C TInt TerminateAllConnections(); - - /** - * Asks phone identity parameters from the mmetel. - * @param aMessage Reply message to the phone application. - * @return Error (KErrNone or KErrNotFound). - */ - IMPORT_C TInt UpdatePhoneIdentity( - MEngineMonitor::TPEMessagesFromPhoneEngine aMessage ); - - /** - * Sets active line - */ - IMPORT_C void SetActiveLine(); - - /** - * Makes transfer request to the Multimode ETel - * @param None. - * @return Return possible error code - */ - IMPORT_C TInt BuildConference(); - - /** - * Swaps connected and held calls - * @since Series60_4.0 - * @param None. - * @return KErrNone or KErrNotFound. - */ - IMPORT_C TInt SwapCalls(); - - /** - * Add conference member. - * @return possible error code from the CallHandling subsystem. - */ - IMPORT_C TInt AddConferenceMember(); - - /** - * Drops one member from the conference call - * @since Series60_4.0 - * @param aCallid It is the Call Id of the call to be dropped - * @return Return possible error code - */ - IMPORT_C TInt DropMember( TInt aCallId ); - - /** - * Splits one member from the conference call. - * @since Series60_4.0 - * @param aCallid It is the index number of the call to be splited. - * @return Return possible error code - */ - IMPORT_C TInt GoOneToOne( TInt aCallId ); - - /** - * Makes hold request for the connected call - * @return KErrNone if request was sent successfully - * KErrGsmNotAllowed if no connected call was found - */ - IMPORT_C TInt HoldCall(); - - /** - * Makes resume request for the held call - * @return KErrNone if request was sent successfully - * KErrGsmNotAllowed if no held call was found - */ - IMPORT_C TInt ResumeCall(); - - /** - * Makes transfer request to the Multimode ETel - * @since Series60_4.0 - * @param None. - * @return KErrNone or KErrNotFound. - */ - IMPORT_C TInt TransferCalls(); - - /** - * Creates emergency call request to the Multimode ETel - * @since Series60_4.0 - * @param None. - * @return None. - */ - IMPORT_C void DialEmergencyCall( const TPEPhoneNumber& aEmergencyNumber ); - - /** - * Returns call terminated diagnostics of a call - * Info is valid only for Idle call - * @since Series60_4.0 - * @param aCallName, TName information of a call - * @return Return diagnostics info - */ - IMPORT_C TInt GetCallTerminatedDiagnostics( - TName& aCallName ) const; - - /** - * Returns call terminated error - * @since Series60_4.0 - * @return Return errorCode - */ - IMPORT_C TInt CallTerminatedError( const TInt aCallId ); - - /** - * This method gets the lifetime of the MS. The lifetime information - * includes the manufacturing date of the MS and the total amount of airtime use. - * @param aLifeTimeInfo Life time information - * @return Get succeeded or not. - */ - IMPORT_C TBool GetLifeTime( TDes8& aLifeTimeInfo ); - - /** - * Replace active call with waiting call. - * @since Series60_5.0 - * @return Error (KErrNone is success). - */ - IMPORT_C TInt ReplaceActive(); - - /** - * This method gets the reference to MPECallOwner object. - * @since Series60_4.0 - * @param None. - * @return None. - */ - IMPORT_C MPECallOwner& CallOwner() const; - - /** - * Accepts unattended transfer request. - * @since Series 60 v5.1 - * @return System wide error code. - */ - IMPORT_C TInt AcceptUnattendedTransfer(); - - /** - * Rejects unattended transfer request. - * @since Series 60 v5.1 - * @return System wide error code. - */ - IMPORT_C TInt RejectUnattendedTransfer(); - - /** - * Does unattended transfer to the connected VoIP call - * @since Series60_5.1 - * @param aTransferTarget Address of the transfer target - * @return Error (KErrNone is success). - */ - IMPORT_C TInt DoUnattendedTransfer( const TDesC& aTransferTarget ); - - /** - * Starts call forwarding. - * @since Series60_5.1 - * @param aIndex A array index for a selected address. - * @return Error (KErrNone is success). - */ - IMPORT_C TInt ForwardCallToAddress( TInt aIndex ); - - public: // From MPECallHandling - DTMF related - /** - * Cancels Dtmf string sending. - */ - IMPORT_C void CancelDtmfPlay(); - - /** - * Allows a client to continue dtmf string sending when - * it was stopped by use of 'w' char in the string. - */ - IMPORT_C void ContinueDtmfSending(); - - /** - * Sends dtmf string. - * @param aDtmfString String to be sent. - * @return Symbian OS error code - */ - IMPORT_C TInt SendDtmf( const TPEDtmfString& aDtmfString ); - - /** - * Sends dtmf tone - * @param aTone Tone to be sent. - * @return Error (KErrNone or KErrNotFound). - */ - IMPORT_C TInt StartDtmfTone( const TChar& aTone ); - - /** - * Allows a client to cancel the sending of a dtmf string when - * it was stopped by use of 'w' char in the string. - */ - IMPORT_C void StopDtmfSending(); - - /** - * Stops sending dtmf tone. - * @return Error (KErrNone or KErrNotFound). - */ - IMPORT_C TInt StopDtmfTone(); - - public: // From base class MPECallInitialiser - - /** - * @see MPECallInitialiser::InitVoiceCall - */ - void InitVoiceCall( MCCECall& aNewCall ); - - /** - * @see MPECallInitialiser::InitVideoCall - */ - void InitVideoCall( MCCECall& aNewCall ); - - /** - * @see MPECallInitialiser::InitConferenceCall - */ - void InitConferenceCall( MCCEConferenceCall& aConference ); - - public: - /** - * Tells if there is any connected calls. - * @return Indication of connected call(s) (EFalse is no calls, ETrue is connected call(s)). - */ - TBool ConnectedCalls(); - - /** - * Returns voice call object by state. - * @param aState Call state search key. - * @param aIndex Index of the found call object (-1 is not found). - * @param aGetCommandObject (if ETrue then find by command object state). - * @return Call object (NULL is not found). - */ - CPESingleCall* VoiceCallDataByState( - TPEState aState, - TInt& aIndex ) const; - - /** - * SetCallParams. - * @param None. - * @return None. - */ - void SetCallParams( TInt aCallId ); - - /** - * Creates CPECallData objects - * @since Series60_4.0 - * @param None. - * @return None. - */ - void CreateCallDataArraysL(); - - /** - * Create conference call - */ - void CreateConferenceCallL( CPESingleCall& aCall1, CPESingleCall& aCall2 ); - - /** - * Returns number of conference members - * @since Series60_4.0 - * @param aCount It is variable, where number of participants is returned - * @return Return possible error code - */ - TInt GetNumberOfParticipants( TInt& aCount ); - - /** - * Returns added or removed members TName information and CallId - * @since Series60_4.0 - * @param aCallId, Conference calls CallId - * @param aCallName, TName information of dropped or added call - * @param aMemberCallId, CallId of the added or dropped call - * @return Return errorCode - */ - TInt GetConferenceMemberNameAndId( TName& aCallName, TInt& aMemberCallId ); - - /** - * Get call control caps - * @since Series60_4.0 - * @param aCallControlCaps, the call control caps. - * @return KErrNone or KErrNotFound. - */ - TInt GetCallControlCaps( TPECallControlCaps& aCallControlCaps, TInt aCallId ); - - /** - * Returns Conference capabilities - * @since Series60_4.0 - * @param aCallId, call identification number - * @param aCaps, capabilities are returned in this variable - * @return Return errorCode - */ - TInt GetConferenceCallCaps( TUint32& aCaps ); - - /** - * Create new CPESingleCall object to CPECallArrayOwner and open new MCCECall ojcte to CCE. - * @param None. - * @return returns pointer to CPESingleCall objecte. - */ - CPESingleCall* OpenNewCallL( const TPEPhoneNumber& aNumber ); - - /** - * Adds one member to the conference call ( TRAPPED METHOD ) - * @since Series60_4.0 - * @param aCallid It is the index number of the call to be added - * @return Return possible error code - */ - TInt AddMember( TInt aCallId ); - - /** - * Adds one member to the conference call - * @since Series60_4.0 - * @param aCallid It is the index number of the call to be added - */ - void AddMemberL( TInt aCallId ); - - /** - * Get call's secure status. - * @param aCallid. - * @return TBool ETrue if security is enabled, else EFalse. - */ - TBool IsSecureCall( const TInt aCallId ) const; - - /** - * Update System Agent setting for call forward. - * @since Series60_4.0 - */ - void UpdateSaSetting(); - - /** - * Defines basic service code for divert notification. - * @since Series60_4.0 - * @param aLineType used line type - * @param call reference to call object - * @return Returns the basuc service code. - */ - TInt DefineDivertBsc( CCCECallParameters::TCCELineType aLineType, - CPESingleCall* call ); - - /** - * Check if dial allowed - * @param aMultimediaDial. Is new dial multimedia - * @return ETrue if dial allowed - */ - TBool IsDialAllowed( TBool aMultimediaDial ); - - /** - * Get call's secure specified status. - * @param aCallid. - * @return TBool ETrue if security is specified, else EFalse. - */ - TBool SecureSpecified( const TInt aCallId ) const; - - /** - * Initialise conference call info. - * @param call reference to call object - * @param call reference to call object - * @return None. - */ - void InitialiseConferenceCallInfo( - MCCECall& aCall1, - MCCECall& aCall2 ); - - /** - * Handle auto resume. - */ - void HandleAutoResume(); - - private: - - /** - * Delete's call object and reset's datastore. - * @param aCallid. - */ - TInt ReleaseCallObject( const TInt aCallId ); - - /** - * Set call origin to datastore. - * @param aCallid. - * @param aCall reference to call object - */ - void SetCallOrigin( const TInt aCallId, const MCCECall& aCall ) const; - - protected: - // Phone model instance which owns this object. - MPEPhoneModelInternal& iModel; - // Handle to converged call engine (CCE) interface - CCCE& iConvergedCallEngine; - // Video call handling object handles video call operations. - CPEVideoCallHandling* iVideoCallHandling; - // CPEDtmfHandling object handles dtmf commands - CPEDtmfHandling* iDtmfHandling; - // Member variable for CallHandling Errorcode - TInt iErrorCode; - // Call parameters for dialing - CCCECallParameters* iCallOpenParams; - - - //Create conference call CPEConferenceCall object - CPEConferenceCall* iConferenceCall; - // Supplementary Service Monitor - CPESupplementaryServicesMonitor* iSupplementaryServicesMonitor; - // Call array owner - CPECallArrayOwner* iCallArrayOwner; - // CCE dtmf interface - MCCEDtmfInterface& iDtmfInterface; - // Active line - CCCECallParameters::TCCELineType iActiveLine; - // Owned system agent observer. - CPsetSAObserver* iPsetSAObserver; - // Emergency number - TPEPhoneNumber iEmergencyNumber; - // ReplaceActive - TBool iReplaceActive; - // Status of dial, before dialing state - TBool iDialRequest; - - /** - * CCE observer. - */ - CPECCEObserver* iCCEObserver; - // System Call State - CPESystemCallState* iSystemCallState; - }; - -#endif // CPECALLHANDLING_H - -// End of File