tsrc/musenginestub/inc/musengmcesession.h
branchRCL_3
changeset 23 bc78a40cd63c
parent 22 73a1feb507fb
--- a/tsrc/musenginestub/inc/musengmcesession.h	Tue Aug 31 15:12:07 2010 +0300
+++ b/tsrc/musenginestub/inc/musengmcesession.h	Wed Sep 01 12:31:01 2010 +0100
@@ -21,10 +21,28 @@
 
 // USER
 #include "musengsession.h"
-#include "lcsession.h"
-#include "lcwindow.h"
-#include "lcaudiocontrol.h"
+#include "musengsessiondurationtimerobserver.h"
+
+// SYSTEM
+/*
+#include <mcesessionobserver.h>
+#include <mcestreamobserver.h>
+#include <mcertpobserver.h>
+#include <mcetransactiondatacontainer.h>
+*/
 
+/*
+class CMceManager;
+class CMceSession;
+*/
+class CMusEngSessionDurationTimer;
+
+
+// CONSTANTS
+
+_LIT8( KMusEngAcceptContactHeader,
+       "Accept-Contact: *;+g.3gpp.cs-voice; explicit" );
+_LIT8( KMusEngSessionSdpLineXApplication, "a=X-application:com.nokia.rtvs" );
 
 // CLASS DECLARATION
 
@@ -34,112 +52,252 @@
 *
 * CMusEngMceSession encapsulates CMCESession and simplifies use of
 * MCE Sessions to user interface. Also splits observers messy events
-* to simplified function calls.
+* simplified commands like a SessionDisconnected.
 *
 * @lib musengine.lib
+* @since S60 v3.2
 */
 class CMusEngMceSession : public CMusEngSession,
-                          public MLcSession,
-                          public MLcWindow,
-                          public MLcAudioControl
+                          public MMusEngSessionDurationTimerObserver
     {
-    
-    public: 
-    
+
+    public:
+
         /**
         * Destructor
+        *
+        * @since S60 v3.2
         */
         ~CMusEngMceSession();
 
 
-    public: // from MLcSession
-        
-        TLcSessionState LcSessionState() const;
-    
-        virtual void EstablishLcSessionL();
-        
-        void TerminateLcSessionL();
-        
-        virtual MLcVideoPlayer* RemoteVideoPlayer();
-    
-        virtual MLcVideoPlayer* LocalVideoPlayer();       
-       
-        virtual const TDesC& LocalDisplayName();
-    
-        virtual const TDesC& RemoteDisplayName();
+    public: // API FUNCTIONS
+
+        /**
+        * Terminates session.
+        * @pre Session is established
+        * @post Session is ready to be deleted
+        * @leave KErrNotReady if precondition is not fullfilled
+        * @since S60 v3.2
+        */
+        IMPORT_C void TerminateL();
+
+        /**
+        * Releases all this session internal observers. This function is needed
+        * before we could get session store out of this session.
+        * TODO: Is this function really needed? At least at the moment it is
+        * not called from UI.   -HR 21.8.
+        *
+        * @since S60 v3.2
+        */
+        IMPORT_C void ReleaseInternalObservers();
 
-        TInt SetParameter( TInt aId, TInt aValue );
+        /**
+        * Get session time return estabilished session time
+        *
+        * @since S60 v3.2
+        * @return TTime returns time if connection established else < 0
+        */
+        IMPORT_C TTimeIntervalSeconds GetSessionTime() const;
 
-        TInt ParameterValue( TInt aId );
-        
-        void UpdateLcSessionL();
+        /**
+        * Returns current connection state
+        *
+        * @since S60 v3.2
+        * @return TBool returns current connection state
+        */
+        IMPORT_C TBool ConnectionActive() const;
+
+
+    public: // VIRTUAL API
+
+        // No virtual api
+
 
-        
-    public: // from MLcWindow
-        
-        void EnableLcWindowL( TBool aEnable );
-        
-        TBool IsLcWindowEnabled();
-        
-        void SetLcWindowRectL( TRect aRect );
-        
-        TRect LcWindowRect();
-        
-        void SetLcWindowOrientationL( 
-            TLcWindowOrientation aOrientation );
-        
-        TLcWindowOrientation LcWindowOrientationL();        
-        
-    public: // from MLcAudioControl
-        
-        TBool IsLcAudioMutedL();
+    public: //  from CMusEngSession
+
+        /**
+        * Increases volume level by one
+        *
+        * @pre Session is ongoing
+        * @since S60 v3.2
+        */
+        IMPORT_C void VolumeUpL();
+
+        /**
+        * Decreases volume level by one
+        *
+        * @pre Session is ongoing
+        * @since S60 v3.2
+        */
+        IMPORT_C void VolumeDownL();
 
-        void MuteLcAudioL( TBool aMute );       
-
-        TBool IsLcMicMutedL();    
-
-        void MuteLcMicL( TBool aMute );
-        
-        TBool IsLcLoudspeakerEnabled();
+        /**
+        * Permission to draw on screen device.
+        *
+        * @pre Session is ongoing
+        * @since S60 v3.2
+        */
+        IMPORT_C void EnableDisplayL( TBool aEnable );
 
-        void EnableLcLoudspeakerL( TBool aEnabled );
-        
-        TBool IsEnablingLcLoudspeakerAllowed();
-        
-        TInt LcVolumeL();
-     
-        void SetLcVolumeL( TInt aValue );    
-    
-        void IncreaseLcVolumeL();
-        
-        void DecreaseLcVolumeL();        
-        
+        /**
+        * Implements virtual from CMusEngSession
+        *
+        * @pre Session is ongoing
+        * @since S60 v3.2
+        */
+        IMPORT_C void MuteL();
+
+        /**
+        * Implements virtual from CMusEngSession
+        *
+        * @pre Session is ongoing
+        * @since S60 v3.2
+        */
+        IMPORT_C void UnmuteL();
+
+
     protected: // CONSTRUCTORS
 
         /**
         * Constructor
         *
+        * @since S60 v3.2
         */
         CMusEngMceSession( const TRect& aRect );
 
         /**
         * Second-phase constructor
         *
+        * @since S60 v3.2
         */
         void ConstructL();
-        
+
+
+    protected: // HELPER FUNCTIONS
+
+        /**
+        *
+        * @since S60 v3.2
+        */
+        void RectChangedL();
+
+        /**
+        * Sets session specific SDP line to a session
+        *
+        * @since S60 v3.2
+        */
+        //void SetSessionSdpLinesL( CMceSession& aSession );
+
+
+    protected: // internal API
+
+        /**
+        *
+        * @since S60 v3.2
+        */
+        virtual TBool IsRtpcInactivityTimoutSupported();
+
+
+    private: // HELPER FUNCTIONS
 
-    private:
+        /**
+        * Start counting session time
+        *
+        * @since S60 v3.2
+        */
+        void InitializeSessionTimer();
+
+        /**
+        * Callback
+        *
+        * @since S60 v3.2
+        */
+        void UpdateTimerEvent();
+
+        /**
+        *
+        *
+        * @since S60 v3.2
+        */
+        void DoMuteL( TBool aMute );
+
+        /**
+        * Increases or decreases current volume of all speakers in session
+        * structure by one.
+        * @pre Current volume of all the speakers is less than MaxVolumeL()
+        *      and at least 1.
+        */
+        void ChangeVolumeByOneL( TBool aIncreaseVolume );
+
+
+    private: // Helpers
 
-        MLcWindow::TLcWindowOrientation iOrientation;
-        TBool iMuted;
-        TBool iMicMuted;
-        TBool iLoudspeakerEnabled;
-        TBool iEnablingLoudspeakerAllowed;
-        TInt iVolume;
-        TRect iRect;
-        TBool iWindowEnabled;
+        /**
+        * Helper function to avoid three different traps.
+        * Should be replaced when MCE supports different kind of method
+        * detecting end of clip.
+        *
+        * @since S60 v3.2
+        */
+        void CheckClipEndL();
+
+
+    public: // MEMBERS
+
+        /**
+        * Class for connecting to MCE server.
+        * This class provides the connection to the MCE server and
+        * provides functions
+        * for setting observers for asynchronous events.
+        * The user should create only one instance of this class.
+        *
+        * @since S60 v3.2
+        */
+        //CMceManager* iManager;
+
+        /**
+        * Base class for MCE sessions, inherited by both CMCEInSession and
+        * CMCEOutSession. * CMCESession represents peer-to-peer connection
+        * made with remote terminal. This connection is also known as dialog
+        * and it is set up using SIP INVITE method. The characteristics of the
+        * session are defined by user of this class by attaching media streams
+        * into the session. After the session has been succesfully established,
+        * it can be later updated and must be finally terminated. If for any
+        * reason instance of this class is deleted while in established state,
+        * session is automatically terminated by MCE server.
+        *
+        * @since S60 v3.2
+        */
+        //CMceSession* iSession;
+
+
+    public:
+
+        /**
+        * It is assumed, that user has only one instance of this class.
+        * The same instance is passed between MCE and user, but the data
+        * inside of this container is just updated for each event.
+        *
+        * @since S60 v3.2
+        */
+        //TMceTransactionDataContainer iTransactionDataContainer;
+
+        /**
+        * Session time. Acts simultaneously as RTCP inactivity timer.
+        *
+        * @since S60 v3.2
+        */
+        TTime iStartTime;
+
+        CMusEngSessionDurationTimer*   iUpdateTimer;
+
+        /**
+        * Value indicating seconds gone since last received RTCP sender or
+        * receiver report. Value 20 indicates RTCP inactivity timeout.
+        */
+        TInt iSecondsFromLastRtcpReport;
+        TInt iDisplayEnabled;
 
     };
-    
 #endif //MUSHENGMCESESSION_H