phoneengine/phonemodel/inc/cpephonemodel.h
changeset 0 5f000ab63145
child 24 41a7f70b3818
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/phoneengine/phonemodel/inc/cpephonemodel.h	Mon Jan 18 20:18:27 2010 +0200
@@ -0,0 +1,329 @@
+/*
+* Copyright (c) 2004 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 CPEPhoneModel class.
+*
+*/
+
+
+#ifndef CPEPHONEMODEL_H
+#define CPEPHONEMODEL_H
+
+//INCLUDES
+#include "mpeactivestarter.h"
+#include "mpephonemodelinternal.h"
+#include <apgtask.h>
+#include <coemain.h>
+#include <cpephonemodelif.h>
+#include <DosSvrServices.h>
+#include <e32base.h>
+#include <talogger.h>
+
+// FORWARD DECLARATIONS
+class CPEActiveStarter;
+class CCCE;
+class CPEEngineInfo;
+class CPEGsmAudioData;
+class CPEExternalDataHandler;
+class CPEMessageHandler;
+class CPESimStateMonitor;
+class CPEIdleStatusMonitor;
+class MEngineMonitor;
+class MPEContactHandling;
+class MPECallHandling;
+class MPELogHandling;
+class MCCEDtmfInterface;
+class CPEAudioFactory;
+class MPEServiceHandling;
+class CPERemotePartyInfoMediator;
+
+// CLASS DECLARATION
+
+// DESCRIPTION
+// Handles phone related events from the phone application.
+//
+NONSHARABLE_CLASS( CPEPhoneModel ) 
+    : public CPEPhoneModelIF,
+      public MPEPhoneModelInternal,
+      public MPEActiveStarter
+    {
+    public:  //Constructors and destructor
+
+        // Starting modules of active starter (StepL method)
+        enum TActiveStarterSteps
+            {
+            EPEInitializeCceConnection = 0,
+            EPEExternalData,
+            EPECallHandling,
+            EPEAudioHandling,
+            EPELogHandlingPhaseOne,
+            EPEContactHandlingPhaseOne,
+            EPESimStateMonitor,
+            EPEServiceHandling,
+            EPEMessageHandler,
+            EPESimChangedMonitor,
+            EPESimStatusMonitorStart,
+            EPELogHandlingPhaseTwo,
+            EPEContactHandlingPhaseTwo,
+            EPEMediatorCommandHandler
+            };
+
+        /**
+        * Two-phased constructor.
+        * 
+        * @param aEngineMonitor, for phone application communication
+        */
+        static CPEPhoneModel* NewL( MEngineMonitor& aEngineMonitor );
+        
+        /**
+        * Two-phased constructor for module tests.
+        * 
+        * @param aEngineMonitor, for phone application communication
+        * @param aAudioFactory for creating audio related classes.
+        */
+        static CPEPhoneModel* NewL( 
+            MEngineMonitor& aEngineMonitor,
+            CPEAudioFactory& aAudioFactory );       
+
+        /**
+        * Destructor.
+        */
+        virtual ~CPEPhoneModel( );
+
+    public:    //New functions 
+
+       /**
+        * Recalls starting of modules after leave occured in the middle of StepL sequence.
+        * 
+        */
+        void RecallSteps( );
+
+       /**
+        * Starts modules of PhoneEngine.
+        * 
+        * @return True or False depending on wether to continue stepping. 
+        */
+        TBool StepL( );
+        
+       /**
+        * Constructs Contact Handling Phase Two
+        */           
+        void ConstructContactHandlingPhaseTwoL();
+
+// Functions from CPEPhonemodelIF
+
+       /**
+        * From CPEPhonemodelIF
+        * Returns the name of the specified message to PhoneEngine
+        *
+        * @since S60 v.4.0
+        * @param aMessage is the message code
+        * @return String containing the name of the message
+        */
+        TPtrC NameByMessageToPhoneEngine( const TInt aMessage ) const; 
+        
+       /**
+        * From CPEPhonemodelIF
+        * Returns the name of the specified message from PhoneEngine
+        
+        * @since S60 v.4.0
+        * @param aMessage is the message code
+        * @return String containing the name of the message
+        */
+        TPtrC NameByMessageFromPhoneEngine( const TInt aMessage ) const;    
+       
+// Functions from MPEPhoneModel base class
+       
+       /**
+        * From MPEPhoneModel
+        * Returns pointer to information object (CPEEngineInfo) 
+        * 
+        * @return Return pointer to CPEEngineInfo object as MPEEngineInfo.
+        */
+        MPEEngineInfo* EngineInfo();
+        
+       /**
+        * From MPEPhoneModel
+        * Reroutes messages from the phone application to the message handler
+        * 
+        * @param aMessage is the message code.
+        * @return Return possible error code.
+        */
+        void HandleMessage( const TInt aMessage );
+        
+// Functions from MPEPhoneModelInternal base class
+        
+       /**
+        * From MPEPhoneModelInternal
+        * Returns pointer to information object (CPEEngineInfo) 
+        *
+        * @return pointer to CPEEngineInfo object as MPEDataStore
+        */
+        MPEDataStore* DataStore();
+
+       /**
+        * From MPEPhoneModelInternal
+        * Returns pointer to external data handler
+        *
+        * @return pointer to CPEExternalDataHandler as MPEExternalDataHandler
+        */
+        MPEExternalDataHandler* DataStoreExt(); 
+        
+        /**
+         * From MPEPhoneModelInternal
+         * Returns pointer to Mediator Command handler
+         *
+         * @return pointer to CPERemotePartyInfoMediator object
+         */
+        CPERemotePartyInfoMediator* MediatorCommunicationHandler();
+        
+       /**
+        * From MPEPhoneModelInternal
+        * Handle internal message
+        *
+        * @since S60 v4.0
+        * @param aMessage specifies the event that has taken place
+        * @param aCallId is the call id number.
+        */
+        void HandleInternalMessage( const TInt aMessage );
+
+     
+       /**
+        * From MPEPhoneModelInternal
+        * Reroutes messages from the subsystems to the message handler
+        * 
+        * @param aMessage is the message id.
+        * @return None.
+        */
+        void SendMessage( const MEngineMonitor::TPEMessagesFromPhoneEngine aMessage );
+        
+       /**
+        * From MPEPhoneModelInternal
+        * Reroutes messages from the subsystems to the message handler.
+        * 
+        * @param aMessage is the message id.
+        * @param aCallId is the call id number.
+        * @return None.
+        */
+        void SendMessage( const MEngineMonitor::TPEMessagesFromPhoneEngine aMessage, 
+                          const TInt aCallId );
+        
+
+    private: 
+        
+        /**
+         * C++ default constructor.
+         * @param aAudioFactory Makes copy of aAudioFactory
+         */
+        CPEPhoneModel( 
+            MEngineMonitor& aEngineMonitor );
+
+        /**
+        * C++ default constructor.
+        * @param aAudioFactory Makes copy of aAudioFactory
+        */
+        CPEPhoneModel( 
+            MEngineMonitor& aEngineMonitor,
+            CPEAudioFactory& aAudioFactory );
+
+        /**
+        * By default EPOC constructor is private.
+        */
+        void ConstructL();
+        
+        /**
+        * Static callback function to send message
+        * @param aSelf - pointer to itself
+        * @return KErrNone
+        */
+        static TInt CallBackMessageSend( TAny* aSelf );
+        
+        /**
+        * Process messages from the subsystems.
+        * 
+        * @param aMessage is the message id.
+        * @param aCallId is the call id number.
+        * @return error from message handler.        
+        */
+        TInt ProcessMessage( const MEngineMonitor::TPEMessagesFromPhoneEngine aMessage, 
+                             const TInt aCallId );
+        
+        /**
+         * Determines which messages needs to be delayed and delays
+         * sending them to Engine monitor.
+         * 
+         * @param aMessage is the message id.  
+         * @param aCallId is the call id number.       
+         * @return info indicating wheather message sending needs to be delayed.         
+         */
+        TBool DelayMessageSending( const MEngineMonitor::TPEMessagesFromPhoneEngine aMessage, 
+                                   const TInt aCallId ); 
+        
+
+    private:    //Data
+
+        // Starts Phone Engine's modules asynchronically.
+        CPEActiveStarter* iActiveStarter;
+        // MEngineMonitor is the message api to phone application
+        MEngineMonitor& iEngineMonitor;
+        // CPEEngineInfo object which handles engine information
+        CPEEngineInfo* iEngineInfo;    
+        // CPEMessageHandler object which handles messages
+        CPEMessageHandler* iMessageHandler;    
+        // MPECallHandling object which handles call related commands
+        MPECallHandling* iCallHandling;
+        // CPEAudioHandling object which handles audio related commands
+        CPEGsmAudioData* iAudioData;
+        // Handle to log handling
+        MPELogHandling* iLogHandling;
+        // Handle to contact handling
+        MPEContactHandling* iContactHandling;
+        MPEServiceHandling* iServiceHandling;
+        // handle to file server session
+        RFs iFsSession;
+        // External data handler
+        CPEExternalDataHandler* iExternalDataHandler;
+        // SIM changed monitor
+        CPESimStateMonitor* iSimChangedMonitor;
+        // SIM state monitor
+        CPESimStateMonitor* iSimStatusMonitor;
+        // Idle status monitor
+        CPEIdleStatusMonitor* iIdleStatusMonitor;
+        // DosServer connect error code.
+        TInt iErrorCode;
+        // Stepper counter
+        TInt iStep;
+        // CCE interface
+        CCCE* iConvergedCallEngine;
+        // CCE dtmf interface
+        MCCEDtmfInterface* iDtmfInterface;
+        /*
+        * Audio factory
+        * Not own.
+        */      
+        CPEAudioFactory* iAudioFactory;
+        // Callback
+        CIdle* iCallStackCutter;
+        // Message Id for callback       
+        MEngineMonitor::TPEMessagesFromPhoneEngine iCallBackMessage; 
+        // Call Id for callback
+        TInt iCallBackCallId ;
+        
+        // Mediator command handler
+        CPERemotePartyInfoMediator* iMediatorCommunicationHandler;
+
+    };
+
+#endif // CPEPHONEMODEL_H  
+            
+// End of File