phoneengine/callhandling/inc/cpevideocallhandling.h
changeset 0 5f000ab63145
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/phoneengine/callhandling/inc/cpevideocallhandling.h	Mon Jan 18 20:18:27 2010 +0200
@@ -0,0 +1,356 @@
+/*
+* Copyright (c) 2002-2007 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 CPEVideoCallHandling object
+*
+*/
+
+
+#ifndef CPEVIDEOCALLHANDLING_H
+#define CPEVIDEOCALLHANDLING_H
+
+//INCLUDES
+#include <e32base.h>
+#include <mpemessagesender.h>
+
+// CONSTANTS
+const TInt KPEDataCallIdBase( KPEMaximumNumberOfVoiceCalls +
+         KPEMaximumNumberOfConferenceCalls );
+
+// MACROS
+// None.
+
+// DATA TYPES
+// None.
+
+// FUNCTION PROTOTYPES
+// None.
+
+// FORWARD DECLARATIONS
+class CPESingleCall;
+class MPEPhoneModelInternal;
+class MPEMessageSender;
+class CCCE;
+class MCCECall;
+class CPECallArrayOwner;
+class CPEGprsTermination;
+class MPEMonitorCommandOwner;
+class MPEDataStore;
+
+// CLASS DECLARATION
+
+/**
+* Handles video call related events from phone engine
+*
+* @lib CallHandlingGsm.lib
+* @since Series60_4.0
+*/
+class CPEVideoCallHandling : public CBase,
+                             public MPEMessageSender
+    {
+    public: // Constructors and destructor
+        /**
+        * Two-phased constructor
+        */
+        static CPEVideoCallHandling* NewL( 
+                MPEMessageSender& aOwner,
+                MPEPhoneModelInternal& aModel, 
+                CCCE& aConvergedCallEngine,
+                CPECallArrayOwner& aCallArrayOwner );
+
+        /**
+        * Destructor
+        */
+        virtual ~CPEVideoCallHandling();
+
+    public:    // New functions
+        
+        /**
+        * Makes answer request.
+        * @return Symbian OS error code
+        */
+        TInt AnswerCall();
+
+        /**
+        * Returns call terminated error
+        * @param aCallId, call identification number
+        * @return Return errorCode
+        */        
+        TInt CallTerminatedError( const TInt aCallId );
+
+        /**
+        * Checks if there are any connected calls
+        */
+        TBool ConnectedCalls();
+
+        /**
+        * Checks if the call has reserved serial communications data port for use
+        * @param aCallId, call identification number
+        * @return ETrue if the data port is reserved for use or EFalse if not
+        */
+        TBool DataPortInUse( TInt aCallId ) const;
+
+        /**
+        * Creates dialing request.
+        * @param aNumber, the telephone number to be called
+        * @return Symbian OS error code
+        */
+        TInt DialCall( const TPEPhoneNumber& aNumber, TInt& aCallId );
+        
+        /**
+        * Makes HangUp request. 
+        * @param aCallId, call identification number
+        * @return Symbian OS error code
+        */
+        TInt HangUp( TInt aCallId );
+
+        /**
+        * Initializes a single video call
+        * @param aCall handle to converged call engine call object
+        */
+        void InitCall( MCCECall& aCall );
+
+        /**
+        * Checks if the data call is a multimedia call
+        * @param aCallId, call identification number
+        * @return TBool, ETrue if this is a multimedia call, EFalse if not
+        */
+        TBool IsMultimedia( TInt aCallId ) const;
+
+        /**
+        * Notifies system for changes to the call state.
+        * @param aMessage, message id
+        * @param aCallId, call identification number
+        */
+        void NotifySystemCallStateChanged( 
+            MEngineMonitor::TPEMessagesFromPhoneEngine aMessage, 
+            TInt aCallId );
+
+        /**
+        * Makes resume request to the Multimode ETel 
+        * @param aCallId, call identification number
+        * @return Symbian OS error code
+        */
+        TInt ResumeCall( TInt aCallId );
+
+        /**
+        * Makes terminate all connection request.
+        * @return KErrNone if operation was successful
+        * @return KerrNotFound if there is not a call 
+        * @return KErrServerBusy if similar request is already being serviced 
+        * @return KErrGeneral
+        * @return KErrNotSupported if feature is not supported
+        */
+        TInt TerminateAllConnections();
+
+        /**
+        * Starts monitoring incoming data calls
+        */
+        void StartUp();
+
+        /**
+        * Swaps connected and held calls
+        * @return Symbian OS error code
+        */
+        TInt SwapCalls();
+
+        /**
+        * Checks is phonenumber available
+        * @param aCallId, call identification number
+        */
+        TBool IsPhoneNumberAvailable( const TInt aCallId );
+
+        /**
+        * Video Call By State
+        */
+        CPESingleCall* VideoCallByState( TPEState aState );
+                                              
+        /**
+        * Video Call By call id
+        */
+        CPESingleCall* VideoCallById( TInt aCallId );
+        
+        /**
+         * Replace active video call with a waiting video call
+         * NOT SUPPORTED AS OF 5.1
+         */
+        TInt ReplaceActive( TInt aCallId  );
+
+        /**
+        * Returns the number of non-idle data calls
+        * @return Number of calls. 
+        */
+        TInt GetNumberOfCalls ();
+        
+        /**
+        * Get the call state
+        * @paramaCallId, call identification number
+        * @return the call state. 
+        */
+        TPEState GetCallState ( TInt aCallId );
+        
+        /**
+        * Returns information of the data call
+        * @param aCallInfo, call info.
+        * @param aCallId, call identification number
+        * @return Symbian OS error code
+        */  
+        TInt GetCallInfo( RMobileCall::TMobileCallInfoV3& aCallInfo, TInt aCallId );
+        
+        /**
+        * Finds data call name given the call id
+        * @param aCallId, call identification number
+        * @return data call name
+        */
+        TName& VideoCallName( const TInt aCallId );
+        
+        /**
+        * Returns call duration time
+        * @param aDuration the duration value of the call
+        * @return KErrNone or KErrNotFound.
+        */    
+        TInt GetCallDuration( TTimeIntervalSeconds& aDuration, TInt aCallId );
+        
+        /**
+        * Makes reject request. 
+        * @return Symbian OS error code
+        */
+        TInt RejectCall( );
+
+        /**
+        * Makes HangUp requests for all calls
+        * @return Symbian OS error code (KErrNotFound if there are no calls to release)
+        */
+        TInt ReleaseAll();
+
+    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 );
+        
+        /**
+        * Overrides CPEDataCallHandling::SendMessage to provide internal handling for gsm events
+        * @param aMessage, message id
+        */
+        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 );
+        
+    private:
+        /**
+        * C++ default constructor
+        */
+        CPEVideoCallHandling( MPEMessageSender& aOwner,
+                              MPEPhoneModelInternal& aModel, 
+                              CCCE& aConvergedCallEngine,
+                              CPECallArrayOwner& aCallArrayOwner );
+
+        /**
+        * By default Symbian 2nd phase constructor is private
+        */
+        void ConstructL();
+          
+        /**
+        * SetCallParams.
+        * @param None.
+        * @return None.
+        */
+        void SetCallParams( TInt aCallId );
+        
+        /**
+        * 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 );
+        
+        /**
+        * Returns data call object by state
+        * @param aState, call state
+        * @return pointer to data call object
+        */
+        CPESingleCall* VideoCallByState( const TPEState aState ) const;
+        
+        /**
+        * Returns data call object by name
+        * @param aName, call name
+        * @return pointer to data call
+        */
+        CPESingleCall* VideoCallByName( const TName& aName );
+        
+        /**
+        * Checks if there are any data calls in the specified state
+        * @param aState, call state
+        * @return TBool, ETrue if there is a data call in the specified state
+        *                EFalse if there is no data call in the specified state
+        */
+        TBool VideoCallInState( const TPEState& aState ) const;
+        
+        /**
+        * Delete's call object and reset's datastore.
+        * @param aCallid.
+        */
+        TInt ReleaseCallObject( const TInt aCallId  ); 
+        
+    private: // Data
+    
+        // Reference to owner of this class
+        MPEMessageSender& iOwner;
+        // Reference to phone model
+        MPEPhoneModelInternal& iModel;
+        // Etel phone connection.
+        CCCE& iConvergedCallEngine;
+        // Data call name stored for Video Call Manager use
+        TName iDataCallName;
+        // Call array owner
+        CPECallArrayOwner& iCallArrayOwner;
+        // Reference to data store
+        MPEDataStore& iDataStore;
+        // Restore Cause Video Call Reject 
+        TBool iRestoreCauseVTCallReject;
+        
+        // Owned GPRS termination instance.
+        CPEGprsTermination* iGprsInterface;
+        /*
+         * Call parameters for dialing
+         * Own.
+         */
+        CCCECallParameters* iCallOpenParams;
+
+};
+
+#endif // CPEVIDEOCALLHANDLING_H
+            
+// End of File