diff -r 73a1feb507fb -r bc78a40cd63c tsrc/musenginestub/inc/musengmcesession.h --- 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 +#include +#include +#include +*/ +/* +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