multimediacommsengine/tsrc/MCETestUI/MCETestUIEngine/inc/CMCETestUIEngine.h
changeset 0 1bce908db942
equal deleted inserted replaced
-1:000000000000 0:1bce908db942
       
     1 /*
       
     2 * Copyright (c) 2005 Nokia Corporation and/or its subsidiary(-ies).
       
     3 * All rights reserved.
       
     4 * This component and the accompanying materials are made available
       
     5 * under the terms of "Eclipse Public License v1.0"
       
     6 * which accompanies this distribution, and is available
       
     7 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
       
     8 *
       
     9 * Initial Contributors:
       
    10 * Nokia Corporation - initial contribution.
       
    11 *
       
    12 * Contributors:
       
    13 *
       
    14 * Description:    
       
    15 *
       
    16 */
       
    17 
       
    18 #ifndef CMCETESTUIENGINE_H
       
    19 #define CMCETESTUIENGINE_H
       
    20 
       
    21 // SYSTEM INCLUDES
       
    22 #include <e32base.h>
       
    23 #include <es_sock.h>
       
    24 #include <CommDbConnPref.h>
       
    25 #include <mcetransactiondatacontainer.h>
       
    26 // USER INCLUDES
       
    27 #include "MMCETestUIEngineCmdProvider.h"
       
    28 #include "CMCEPoCOmaCSCallWatcher.h"
       
    29 
       
    30 // FORWARD DECLARATIONS
       
    31 
       
    32 class CSIP;
       
    33 class CMCETestUIEngineMultimediaObserver;
       
    34 class CMCETestUIEngineProfile;
       
    35 class CMCETestUIEngineProfileContainer;
       
    36 class CMCETestUIEngineOutSession;
       
    37 class CMCETestUIEngineInSession;
       
    38 class CMCETestUIEngineSipObserver;
       
    39 class MMCETestUIUserInterface;
       
    40 class CMceManager;
       
    41 class CMceFcMsgExchange;
       
    42 class CMceOutSession;
       
    43 class CMceInSession;
       
    44 class CMCETestUIQuestionSingleSelection;
       
    45 class CMCETestUIQuestionDataQuery;
       
    46 class TSessionParams;
       
    47 class CMCETestUIEngineOutEvent;
       
    48 class CMCETestUIEngineInEvent;
       
    49 class CMceOutEvent;
       
    50 class CMceInEvent;
       
    51 class TEventParams;
       
    52 class CMCETestUIEngineCodec;
       
    53 class TSessionEstablishValues;
       
    54 class TSessionResponseValues;
       
    55 class TNotifyValues;
       
    56 class CMceOutRefer;
       
    57 class CMceInRefer;
       
    58 class TReferParams;
       
    59 class CMCEPoCOmaCSCallWatcher;
       
    60 class CMceRefer;
       
    61 class CMceTestUIEngineRefer;
       
    62 class CMCETestUIEngineSession;
       
    63 class CMCETestUIEngineEvent;
       
    64 class CMCETestUIEngineOutRefer;
       
    65 class CMCETestUIEngineInRefer;
       
    66 class CMCETestUIEngineRefer;
       
    67 class CMCETestUIEngineVideoCodec;
       
    68 class CMceMediaStream;
       
    69 class CMceAudioCodec;
       
    70 class CMceSession;
       
    71 class CMceVideoCodec;
       
    72 
       
    73 const TUint KPoCPriority = 1;
       
    74 const TUint KVoIPPriority = 2;
       
    75 const TUint KVSPriority = 3;
       
    76 
       
    77 // CLASS DECLARATIONS
       
    78 
       
    79 /**
       
    80 * 
       
    81 * CMCETestUIEngine provides wrapper for CMCEManager. 
       
    82 * Class is not the traditional wrapper in a sense that it would 
       
    83 * conform to interface provided by CMCEManager. Instead class
       
    84 * implements interface MMCETestUIEngineCmdProvider to provide
       
    85 * same kind of functionality in controlled way on different levels 
       
    86 * of abstraction.
       
    87 * 
       
    88 * Class also has container for all available and used profiles,
       
    89 * observer for Multimedia API and all existing sessions. 
       
    90 *
       
    91 * TODO: Support for Events and Refers.
       
    92 * TODO: Support for Event API and FC API.
       
    93 * (TODO: Possibly add support for observing RTP traffic)
       
    94 * 
       
    95 */
       
    96 
       
    97 
       
    98 /**
       
    99 * Enumerations for sessions
       
   100 */
       
   101 enum TDirection 
       
   102     {
       
   103     ESendRecv = 0,
       
   104     ERecvOnly,
       
   105     ESendOnly,
       
   106     ENotSpesified,
       
   107     };        
       
   108 enum TVideoDirection 
       
   109     {
       
   110     EVideoSendRecv = 0,
       
   111     EVideoRecvOnly,
       
   112     EVideoSendOnly,
       
   113     EVideoNotSpesified,
       
   114     };
       
   115 
       
   116 
       
   117 enum TSessionType 
       
   118     {
       
   119     ECustomSession = 0,
       
   120     EPoCSession,
       
   121     EVoIPSession,
       
   122     EVSSession,
       
   123     E2WayVideoSession
       
   124     }; 
       
   125                          
       
   126 class TSessionParams
       
   127 		{
       
   128 		public:
       
   129 		
       
   130 		enum KMceTestUiCodecSetting
       
   131             {
       
   132             EMceCodecSingle,
       
   133             EMceCodecAll,
       
   134             EMceCodecNone,
       
   135             EMceCodecMultipleModes
       
   136             };
       
   137     
       
   138          enum KMceTestUiCameraSetting
       
   139             {
       
   140             EMceCameraPrimary,
       
   141             EMceCameraSecondary
       
   142             };
       
   143          
       
   144          enum KMceTestUiViewFinderSetting
       
   145             {
       
   146             EMceViewFinderDisabled,
       
   147             EMceViewFinderEnabled
       
   148             };
       
   149 
       
   150 		 TBuf<300>	iRecipentAddress;
       
   151 		 TBool iSuppressRTCP;
       
   152 		 TBuf<100> originator;
       
   153 		 TInt index;
       
   154 		 TInt videoIndex;
       
   155 		 TBool iPoCAdhocSessionType;
       
   156 		 TInt sourceType;
       
   157 		 TBuf<100> sourceFile;
       
   158 		 TBuf<100> sinkFile;
       
   159 		 TInt audioSinkType;
       
   160 		 TInt videoSinkType;
       
   161 		 TInt videoSinkDisplay;
       
   162 		 TInt videoSinkFile;
       
   163 		 TInt videoSinkRtp;
       
   164     	 TInt iNoPrecondtion;
       
   165 	     TInt iBundle;
       
   166 	     TBool iHoldWithAddress;
       
   167 	     TBool iSecureSession;
       
   168 	     TInt iServiceType;
       
   169 	     KMceTestUiCodecSetting iVideoCodec;
       
   170 	     KMceTestUiCodecSetting iAudioCodec;
       
   171          TInt iCameraSetting;
       
   172 		 
       
   173 		};
       
   174 		
       
   175  
       
   176 class CMCETestUIEngine: public CBase,
       
   177                          public MMCETestUIEngineCmdProvider
       
   178     {
       
   179         
       
   180     public: // Constructors and destructors
       
   181 
       
   182 
       
   183         /**
       
   184         * Two-phased constructor.
       
   185         */
       
   186         IMPORT_C static CMCETestUIEngine* NewL();
       
   187 
       
   188     	/**
       
   189     	* Destructor.
       
   190     	*/
       
   191     	IMPORT_C virtual ~CMCETestUIEngine();
       
   192 
       
   193     public: // From MMCETestUICommandProvider
       
   194 
       
   195         IMPORT_C const RPointerArray<TMCETestUIEngineCmdBase>& 
       
   196                     GetCommandsL();
       
   197 	
       
   198     public: // New functions
       
   199 
       
   200 	    /**
       
   201 	    * Set observer for user interface events. Ownership is not
       
   202 	    * transferred.
       
   203 	    *
       
   204 	    * @param aUserInterface, observer for user interface events.
       
   205 	    */
       
   206         IMPORT_C void SetUserInterface( 
       
   207                             MMCETestUIUserInterface* aUserInterface );
       
   208 
       
   209 	    /**
       
   210 	    * Returns available profiles still not in use.
       
   211 	    *
       
   212 	    * @return Array of available profiles still not in use
       
   213 	    */        
       
   214         IMPORT_C const RPointerArray<CMCETestUIEngineProfile>& 
       
   215                             AvailableProfiles();
       
   216 
       
   217 	    /**
       
   218 	    * Returns profiles allready in use.
       
   219 	    *
       
   220 	    * @return Array of available profiles allready in use.
       
   221 	    */        
       
   222         IMPORT_C const RPointerArray<CMCETestUIEngineProfile>& 
       
   223                             UsedProfiles();
       
   224 
       
   225 	    /**
       
   226 	    * Deletes session.
       
   227 	    *
       
   228 	    * @param aSession Session to be deleted
       
   229 	    */     
       
   230         IMPORT_C void DeleteSession( CMCETestUIEngineSession& aSession);
       
   231         
       
   232        
       
   233 
       
   234 	    /**
       
   235 	    * Creates new outgoing session wrapper and stores it.
       
   236 	    *
       
   237 	    * @return reference to newly created outsession wrapper.
       
   238 	    */                
       
   239         IMPORT_C CMCETestUIEngineOutSession& CreateOutSessionL(
       
   240             CMCETestUIEngineProfile& aProfile,
       
   241             TDirection aDirection = ENotSpesified,
       
   242             TVideoDirection aVideoDirection =EVideoNotSpesified,    
       
   243             TSessionType aSessionType = ECustomSession );
       
   244         
       
   245         /**
       
   246 	    * Creates new outgoing session wrapper and stores it.
       
   247 	    *
       
   248 	    * @return reference to newly created outsession wrapper.
       
   249 	    */                
       
   250         IMPORT_C CMCETestUIEngineOutSession& CreateOutSessionL(
       
   251             TUint32 aIAPId,
       
   252             TDirection aDirection = ENotSpesified,
       
   253             TVideoDirection aVideoDirection = EVideoNotSpesified,    
       
   254             TSessionType aSessionType = ECustomSession );
       
   255         /**
       
   256 	    * Creates new outgoing session wrapper and stores it.
       
   257 	    *
       
   258 	    * @return reference to newly created outsession wrapper.
       
   259 	    */             
       
   260 	     IMPORT_C CMCETestUIEngineOutSession& CreateOutSessionL(
       
   261 				CMceRefer& aRefer
       
   262 				);
       
   263 	    /**
       
   264 	    * Creates new incoming session wrapper and stores it.
       
   265 	    *
       
   266 	    * @return reference to newly created insession wrapper.
       
   267 	    */      
       
   268         IMPORT_C CMCETestUIEngineInSession& CreateInSessionL(
       
   269             CMceInSession* aInSession );
       
   270 
       
   271 	    /**
       
   272 	    * Returns all existing outsessions. Ownership is not transferred.
       
   273 	    *
       
   274 	    * @return reference to array of existing outsessions
       
   275 	    */      
       
   276         IMPORT_C const RPointerArray<CMCETestUIEngineOutSession>& OutSessions();
       
   277 
       
   278 	    /**
       
   279 	    * Returns all existing insessions. Ownership is not transferred.
       
   280 	    *
       
   281 	    * @return reference to array of existing insessions
       
   282 	    */      
       
   283         IMPORT_C const RPointerArray<CMCETestUIEngineInSession>& InSessions();
       
   284         
       
   285          /**
       
   286 	    * Returns all existing insessions. Ownership is not transferred.
       
   287 	    *
       
   288 	    * @return reference to array of existing insessions
       
   289 	    */  
       
   290         IMPORT_C void IncomingUpdateL(CMceSession& aOrigSession, 
       
   291 					CMceInSession* aUpdatedSession);
       
   292         /**
       
   293 	    * Creates new outgoing event wrapper and stores it.
       
   294 	    *
       
   295 	    * @return reference to newly created outsession wrapper.
       
   296 	    */                
       
   297         IMPORT_C CMCETestUIEngineOutEvent& CreateOutEventL(
       
   298             CMCETestUIEngineProfile& aProfile);
       
   299         
       
   300         /**
       
   301 	    * Creates new outgoing event wrapper and stores it.
       
   302 	    *
       
   303 	    * @return reference to newly created outsession wrapper.
       
   304 	    */                
       
   305         IMPORT_C CMCETestUIEngineOutEvent& CreateOutEventL(
       
   306             CMceOutEvent* aOutEvent);    
       
   307          /**
       
   308 	    * Creates new incoming event wrapper and stores it.
       
   309 	    *
       
   310 	    * @return reference to newly created insession wrapper.
       
   311 	    */      
       
   312         IMPORT_C CMCETestUIEngineInEvent& CreateInEventL(
       
   313             CMceInEvent* aInEvent );
       
   314             
       
   315         /**
       
   316 	    * Returns all existing outevents. Ownership is not transferred.
       
   317 	    *
       
   318 	    * @return reference to array of existing outevents
       
   319 	    */      
       
   320         IMPORT_C const RPointerArray<CMCETestUIEngineOutEvent>& OutEvents();
       
   321 
       
   322 	    /**
       
   323 	    * Returns all existing inevents. Ownership is not transferred.
       
   324 	    *
       
   325 	    * @return reference to array of existing inevents
       
   326 	    */      
       
   327         IMPORT_C const RPointerArray<CMCETestUIEngineInEvent>& InEvents();
       
   328         
       
   329          /**
       
   330 	    * Deletes event.
       
   331 	    *
       
   332 	    * @param aEvent event to be deleted
       
   333 	    */     
       
   334         IMPORT_C void DeleteEvent( CMCETestUIEngineEvent& aEvent);
       
   335 
       
   336 
       
   337 		/**
       
   338 	    * Creates new outgoing event wrapper and stores it.
       
   339 	    *
       
   340 	    * @return reference to newly created outsession wrapper.
       
   341 	    */                
       
   342         IMPORT_C CMCETestUIEngineOutRefer& CreateOutReferL(
       
   343             CMCETestUIEngineProfile& aProfile);
       
   344             
       
   345         IMPORT_C CMCETestUIEngineOutRefer& CreateOutReferL(
       
   346             CMCETestUIEngineSession& aSession);
       
   347             
       
   348         IMPORT_C CMCETestUIEngineOutRefer& CreateOutReferL(
       
   349             CMCETestUIEngineEvent& aEvent);
       
   350             
       
   351          /**
       
   352 	    * Creates new incoming event wrapper and stores it.
       
   353 	    *
       
   354 	    * @return reference to newly created insession wrapper.
       
   355 	    */      
       
   356         IMPORT_C CMCETestUIEngineInRefer& CreateInReferL(
       
   357             CMceInRefer* aInRefer );
       
   358             
       
   359         /**
       
   360 	    * Returns all existing outevents. Ownership is not transferred.
       
   361 	    *
       
   362 	    * @return reference to array of existing outevents
       
   363 	    */      
       
   364         IMPORT_C const RPointerArray<CMCETestUIEngineOutRefer>& OutRefers();
       
   365 
       
   366 	    /**
       
   367 	    * Returns all existing inevents. Ownership is not transferred.
       
   368 	    *
       
   369 	    * @return reference to array of existing inevents
       
   370 	    */      
       
   371         IMPORT_C const RPointerArray<CMCETestUIEngineInRefer>& InRefers();
       
   372         
       
   373          /**
       
   374 	    * Deletes event.
       
   375 	    *
       
   376 	    * @param aEvent event to be deleted
       
   377 	    */     
       
   378         IMPORT_C void DeleteRefer( CMCETestUIEngineRefer& aRefer);
       
   379 
       
   380 
       
   381         /**
       
   382 	    * Deletes audiocodec.
       
   383 	    *
       
   384 	    * @param aAudioCodec audiocodec to be deleted
       
   385 	    */     
       
   386         IMPORT_C void DeleteAudioCodec( CMCETestUIEngineCodec& aAudioCodec);
       
   387         
       
   388         IMPORT_C void DeleteVideoCodec( CMCETestUIEngineVideoCodec& aVideoCodec);
       
   389         
       
   390         /**
       
   391 	    * responds if FCsession is on or off, default is off.
       
   392 	    *
       
   393 	    * */
       
   394         
       
   395         IMPORT_C TBool IsFCSession();
       
   396         
       
   397         /**
       
   398 	    * sets fcsession on or off, default is off.
       
   399 	    *
       
   400 	    * */
       
   401         
       
   402         IMPORT_C void SetFCSession(TBool aFCSession);
       
   403   
       
   404   
       
   405         IMPORT_C void CreateMceSettingsL();
       
   406         
       
   407         IMPORT_C void CreateMceValueSettingsL();
       
   408         
       
   409         IMPORT_C TBool StartDTMFToneL( TChar& aChar );
       
   410         
       
   411         IMPORT_C TBool SendDTMFToneL( TChar& aChar, TInt& aInterval );
       
   412         
       
   413         IMPORT_C TBool SendDTMFToneSequenceL( TDes& aSequence  );
       
   414         
       
   415         IMPORT_C TBool GetIapIdL( TInt& aIapId  );
       
   416         
       
   417         IMPORT_C TBool GetCodecTypeL( TInt& aCodecIndex  );
       
   418         
       
   419         IMPORT_C void ShowCurrentCryptoContextsL(TBool aCrypto32,TBool aCrypto80);
       
   420         
       
   421         IMPORT_C void ShowSupportedCryptoContextsL(TBool aCrypto32,TBool aCrypto80);
       
   422         
       
   423         IMPORT_C void GetCryptoContextsL(TBool& aCrypto32,TBool& aCrypto80);
       
   424         
       
   425         IMPORT_C TRect GetRect();
       
   426         
       
   427   	
       
   428   	  //  IMPORT_C TInt StatusCode();to be modified later
       
   429   	    //IMPORT_C HBuf)
       
   430     public: // New functions, internal (=not imported)
       
   431 	    
       
   432 	  //   TMCETransactionDataContainer iDataContainer;	
       
   433 	    CMCETestUIEngineProfileContainer& ProfileContainer();
       
   434 
       
   435 	    /**
       
   436 	    * Gets MCEManager
       
   437 	    * @return reference to MCEManager
       
   438 	    */        
       
   439         CMceManager& MCEManager();
       
   440         
       
   441         
       
   442         CMCETestUIEngineMultimediaObserver& MMObserver();
       
   443 	    /**
       
   444 	    * Informs user interface that internal state of engine has changed. 
       
   445 	    */       
       
   446         void EngineStateChangedL();
       
   447         
       
   448        
       
   449 	    /**
       
   450 	    * Informs user interface that a notification should be shown to user. 
       
   451 	    * @param aMessage notification to be shown
       
   452 	    */               
       
   453         void NotifyUser( const TDesC& aMessage );
       
   454         
       
   455 	    /**
       
   456 	    * Notifies user. The note has to be dismissed by the user.
       
   457 	    * @param aMessage notification to be shown to user
       
   458 	    */   
       
   459 	      void NotifyUserWaitL ( const TDesC& aMessage );
       
   460 
       
   461         /////////////////////////////////////// 
       
   462         //
       
   463         // TODO: Functions to inform and warn user 
       
   464         //
       
   465         ////////////////////////////////////////
       
   466 
       
   467         /**
       
   468         * Asks user interface to select one of multiple choices.
       
   469         * 
       
   470         * @param aQuestion data structure holding the question and choices.
       
   471         * @return index of chosen choice. Negative if canceled or otherwise not
       
   472         *         answered. 
       
   473         */         
       
   474         TInt AskQuestionL( const CMCETestUIQuestionSingleSelection& aQuestion );        
       
   475 
       
   476         /**
       
   477         * Asks user interface to return single textual value
       
   478         * 
       
   479         * @param aQuestion data structure holding the question and 
       
   480         *                  default value.
       
   481         * @return given value
       
   482         */       
       
   483         void AskQuestionL( CMCETestUIQuestionDataQuery& aQuestion );
       
   484         
       
   485         TBool SessionParamsL(TSessionParams &aSessionParams, TSessionType aSessionType);
       
   486         
       
   487         TBool SessionEstablishValues(TSessionEstablishValues &sessionValues);
       
   488         
       
   489         TBool SessionResponseValues(TSessionResponseValues &responseValues);
       
   490         
       
   491         TBool NotifyValues(TNotifyValues &notifyValues);
       
   492         
       
   493         TBool IsVideoEnabled();
       
   494         
       
   495         void EnableVideo(CMCETestUIEngineSession& iSession);
       
   496         
       
   497       	void EnableReceivingVideo(CMCETestUIEngineSession& iSession);
       
   498         
       
   499         void DisableVideo(CMCETestUIEngineSession& iSession);
       
   500         
       
   501         void DisableReceivingVideo(CMCETestUIEngineSession& iSession);
       
   502         
       
   503         void UpdateWithPriorityCodecValues(CMceInSession* aSession);
       
   504         
       
   505         void UpdateWithPocPriorityCodecValues(CMceInSession* aSession);
       
   506         void SetPriorities();       
       
   507         
       
   508         void UpdatePoCValues(CMceInSession* aSession);
       
   509         
       
   510         void UpdateInactivitytimeValues(CMceInSession* aSession);
       
   511         
       
   512         void UpdateRtpSink(CMceInSession* aSession);
       
   513         
       
   514         void BundleStreamsL(CMceInSession* aSession);
       
   515         
       
   516         void UpdateIncomingSessionVoIPDataL(CMceInSession* aSession);
       
   517         
       
   518         void UpdateIncomingSessionVoIPDataAfterAnswerL(CMceInSession& aSession);
       
   519         
       
   520         void CsStatusChangedL( TPoCOmaCsState aStatus );
       
   521         
       
   522         void DoHoldUnholdL( TBool aHold );
       
   523         
       
   524         void DoEnableDisableL( CMceSession& aSession, TBool aHold  );
       
   525         
       
   526         void NotifyStreamStateChangeL( CMceMediaStream& aStream ); 
       
   527         
       
   528         void AddSendRecvDefaultAudioStreamsL(CMceInSession* aSession);
       
   529         
       
   530         TInt PrepareConnection( TCommDbConnPref& aPrefs, TInt aIapId );
       
   531         
       
   532         void GetIapIdFromAPList();
       
   533         
       
   534         /**
       
   535         * Get next available Id for new outsession 
       
   536         *
       
   537         * @return Next available Id.
       
   538         */
       
   539         TInt NextOutSessionId();
       
   540 
       
   541         /**
       
   542         * Get next available Id for new insession 
       
   543         *
       
   544         * @return Next available Id.
       
   545         */
       
   546         TInt NextInSessionId();
       
   547         
       
   548         
       
   549         CMceFcMsgExchange& FloorControl();
       
   550     //    void SetStatusCode(TInt aStatusCode);
       
   551 
       
   552        
       
   553        /* enum TSessionType 
       
   554             {
       
   555             ECustomSession = 0,
       
   556             EPoCSession,
       
   557             EVoIPSession,
       
   558             EVSSession,
       
   559             };   
       
   560             
       
   561          TSessionType*/     
       
   562          
       
   563         TBool EventParamsL(TEventParams &aEventParams);
       
   564         
       
   565         /**
       
   566         * Get next available Id for new outevent 
       
   567         *
       
   568         * @return Next available Id.
       
   569         */
       
   570         TInt NextOutEventId();
       
   571 
       
   572         /**
       
   573         * Get next available Id for new inevent
       
   574         *
       
   575         * @return Next available Id.
       
   576         */
       
   577         TInt NextInEventId();
       
   578         
       
   579         // get parameters from the user
       
   580         TBool ReferParamsL(TReferParams &aReferParams);
       
   581         
       
   582         TBool ReferToParamsL(TReferParams &aReferParams);
       
   583         /**
       
   584         * Get next available Id for new outrefer
       
   585         *
       
   586         * @return Next available Id.
       
   587         */
       
   588         TInt NextOutReferId();
       
   589 
       
   590         /**
       
   591         * Set MMF priority for audio codecs
       
   592         */
       
   593         TInt NextInReferId();
       
   594         
       
   595         void SetMMFPriorityForCodecsL( const RPointerArray<CMceAudioCodec>& aCodecs, 
       
   596                                        TUint aAudioPriority, 
       
   597                                        TUint aAudioPreference );
       
   598 
       
   599         /**
       
   600         * Set MMF priority for video codecs
       
   601         */
       
   602         void SetMMFPriorityForCodecsL( const RPointerArray<CMceVideoCodec>& aCodecs, 
       
   603                                        TUint aPriority, 
       
   604                                        TUint aPreference );
       
   605     
       
   606 		/**
       
   607         * Add Transaction ID's to an Array
       
   608         *
       
   609         * @param aId Transaction ID to be added
       
   610         */
       
   611   		void AddTransactionIdL( TMceTransactionId aId );
       
   612 
       
   613 
       
   614 		/**
       
   615         * Returns Array of Transaction ID's
       
   616         *
       
   617         * @returns Array of Transaction ID's
       
   618         */
       
   619   		const RArray< TMceTransactionId >& TransactionIds() const;
       
   620   		
       
   621 
       
   622 		/**
       
   623         * Remvoes INFO TransactionID from the Array
       
   624         *
       
   625         * @param aId Transaction ID to be delted
       
   626         */
       
   627   		void RemoveTransactionId( TMceTransactionId aId );
       
   628   		
       
   629   		void GetJitterBufferValues( CMceMediaStream* aMediaStream, 
       
   630   		                            TInt& aJitbufSize, 
       
   631   		                            TInt& aJitbufThreshold, 
       
   632   		                            TInt& aJitbufTimeout,
       
   633   		                            TBool aSessionTypeKnownToBeVideo );
       
   634 
       
   635         TBool IsSendRecvVideo( CMceSession* aSession );
       
   636          
       
   637     private:  // New functions
       
   638 	    
       
   639         /**
       
   640         * C++ default constructor.
       
   641         */
       
   642         CMCETestUIEngine();	
       
   643 
       
   644     	/**
       
   645         * Symbian second-phase constructor
       
   646         */
       
   647         void ConstructL();	    
       
   648         
       
   649     private:  // Owned data
       
   650 
       
   651 		/// SIP stack observer, owned.
       
   652 		CMCETestUIEngineSipObserver* iSipObserver;
       
   653 
       
   654 		/// SIP stack, owned.
       
   655 		CSIP* iSip;
       
   656 
       
   657         /// Container for all available and used profiles. Owned.
       
   658         CMCETestUIEngineProfileContainer* iProfiles;
       
   659 
       
   660 		// MCE Manager, owned
       
   661 		CMceManager* iManager;
       
   662 
       
   663         // Container for Multimedia API observers, owned. 
       
   664         CMCETestUIEngineMultimediaObserver* iMMObserver;
       
   665 
       
   666 		// Floor controller, owned. Not used yet.
       
   667 		CMceFcMsgExchange* iFC;	
       
   668 
       
   669         // All existing OutSessions, owned
       
   670         RPointerArray<CMCETestUIEngineOutSession> iOutSessions;
       
   671 
       
   672         
       
   673 
       
   674         // Commands applicaple to engine
       
   675         RPointerArray<TMCETestUIEngineCmdBase> iCommands;        
       
   676 
       
   677         // Data container meant to be used in observers
       
   678         TMceTransactionDataContainer iDataContainer;	
       
   679 
       
   680 		 // All existing OutEvents, owned
       
   681         RPointerArray<CMCETestUIEngineOutEvent> iOutEvents;
       
   682 
       
   683         // All existing InEvents, owned
       
   684         RPointerArray<CMCETestUIEngineInEvent> iInEvents;
       
   685         
       
   686         // All existing OutRefers, owned
       
   687         RPointerArray<CMCETestUIEngineOutRefer> iOutRefers;
       
   688 
       
   689         // All existing InRefers, owned
       
   690         RPointerArray<CMCETestUIEngineInRefer> iInRefers;
       
   691         
       
   692         // call watcher from PoC
       
   693         CMCEPoCOmaCSCallWatcher* iCallWatcher;
       
   694 
       
   695 
       
   696         // Counter for created CMCETestUIEngineOutSessions.
       
   697         // To simulate static counter in class CMCETestUIEngineOutSession.
       
   698         TInt iNextOutSessionId;
       
   699         
       
   700         // Counter for created CMCETestUIEngineOutSessions.
       
   701         // To simulate static counter in class CMCETestUIEngineOutSession.
       
   702         TInt iNextInSessionId;
       
   703         
       
   704      //   TInt iStatusCode;
       
   705      
       
   706      // Counter for created CMCETestUIEngineOutEvents.
       
   707         // To simulate static counter in class CMCETestUIEngineOutEvent.
       
   708         TInt iNextOutEventId;
       
   709         
       
   710         // Counter for created CMCETestUIEngineOutEevnts.
       
   711         // To simulate static counter in class CMCETestUIEngineOutEvent.
       
   712         TInt iNextInEventId;
       
   713         
       
   714      // Counter for created CMCETestUIEngineOutRefers.
       
   715         // To simulate static counter in class CMCETestUIEngineOutEvent.
       
   716         TInt iNextOutReferId;
       
   717         
       
   718         // Counter for created CMCETestUIEngineOutRefers.
       
   719         // To simulate static counter in class CMCETestUIEngineOutEvent.
       
   720         TInt iNextInReferId;   
       
   721         
       
   722 
       
   723         TBool iFCSession ;
       
   724 
       
   725         RArray< TMceTransactionId > iTransactionIds;
       
   726         
       
   727     public:
       
   728     	TBool iRtcpFlag;
       
   729         
       
   730         TInt iSRCount;
       
   731         
       
   732         TInt iRRCount;
       
   733         
       
   734         TBool iKoppaFlag;
       
   735         
       
   736         TBool iBundle;
       
   737         
       
   738         TBool iSdp;
       
   739         
       
   740         TBool i180PreCondition;
       
   741         
       
   742         TBool iSecureSessionAVP;
       
   743         
       
   744         TBool iSecPreconditions;
       
   745         TBool iHoldWithAddress;
       
   746         
       
   747         TBool iAutoResponse;
       
   748         
       
   749         TBool iVoIPFlag;
       
   750         
       
   751         TBool iMultiCodecSupport;
       
   752         
       
   753        
       
   754         TInt iPriorityType;
       
   755         
       
   756         TInt iTranscodeCount;
       
   757         
       
   758         TInt iPriorityUplink;
       
   759         TInt iPriorityDownlink;
       
   760         TInt iPrefUplink;
       
   761         TInt iPrefDownlink;
       
   762         
       
   763         TInt iJitterBufSize;
       
   764         TInt iJitterBufTreshold;
       
   765         TInt iJitterBufTimeout;
       
   766         
       
   767         TUint iIapId;
       
   768         
       
   769         TBool iOutSessionWithProfile;        
       
   770         TBool iOutSessionWithAPList;
       
   771         TBool iOutSessionWithAPNumber;
       
   772         
       
   773         RSocketServ iSocketServ; 
       
   774         RConnection iConn;  
       
   775         // All existing InSessions, owned
       
   776         RPointerArray<CMCETestUIEngineInSession> iInSessions;
       
   777         
       
   778         TSessionParams iInSessionSettings; 
       
   779         
       
   780          private: // Not owned data
       
   781     
       
   782         // Pointer to user interface. Not owned.
       
   783         // All user interface related calls are delegated to iUserInterface.
       
   784         MMCETestUIUserInterface* iUserInterface;
       
   785         
       
   786     };
       
   787 
       
   788 class TSessionEstablishValues
       
   789 		{
       
   790 		public:
       
   791 		 TInt timeOut;
       
   792 		 TBuf<100>	headers;
       
   793 		 TInt iBundle;
       
   794 		// TBuf<100> contentType;
       
   795 		// TBuf<100> content;
       
   796 		// TBuf<100> contentHeaders;
       
   797 		TInt iServiceType;
       
   798 		};
       
   799 class TSessionResponseValues
       
   800 		{
       
   801 		public:
       
   802 		 TInt code;
       
   803 		 TBuf<100>	reason;
       
   804 		// TInt iBundle;
       
   805 		// TBuf<100> contentType;
       
   806 		// TBuf<100> content;
       
   807 		// TBuf<100> contentHeaders;
       
   808 		};
       
   809 		
       
   810 class TNotifyValues
       
   811 		{
       
   812 		public:
       
   813 		 TBuf<100>	headers;
       
   814 		 //TBuf<100>	contentType;
       
   815 		 //TBuf<100>	content;
       
   816 		};		
       
   817 					 
       
   818 #endif