multimediacommscontroller/mmccsubcontroller/inc/mcculdlclient.h
changeset 0 1bce908db942
equal deleted inserted replaced
-1:000000000000 0:1bce908db942
       
     1 /*
       
     2 * Copyright (c) 2004 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:    Provides interface for UL/DL subthread clients
       
    15 *
       
    16 */
       
    17 
       
    18 
       
    19 
       
    20 
       
    21 #ifndef MCCULDLCLIENT_H
       
    22 #define MCCULDLCLIENT_H
       
    23 
       
    24 //  INCLUDES
       
    25 #include <mmf/common/mmfbase.h>
       
    26 #include <mmf/common/mmfutilities.h>
       
    27 #include "rtpapi.h"
       
    28 #include "rtpdef.h"
       
    29 #include "mmccinterfacedef.h"
       
    30 #include "mccinternaldef.h"
       
    31 
       
    32 // CONSTANTS
       
    33 
       
    34 // MACROS
       
    35 
       
    36 // DATA TYPES
       
    37 
       
    38 // FUNCTION PROTOTYPES
       
    39 
       
    40 // FORWARD DECLARATIONS
       
    41 class CMccSubThreadClientBase;
       
    42 class CMccUlSubThreadClient;
       
    43 class CMccDlSubThreadClient;
       
    44 class MDataSource;
       
    45 class MDataSink;
       
    46 class CMccDTMFClient;
       
    47 class CMccSymSubthreadClient;
       
    48 class MMccEventHandler;
       
    49 class TMccCodecInfo;
       
    50 class TMccEvent;
       
    51 class MMccResources;
       
    52 class CMccRtpMediaClock;
       
    53 class TMccCryptoContext;
       
    54 
       
    55 // CLASS DECLARATION
       
    56 
       
    57 /**
       
    58 * Mcc Uplink/Downlink client interface
       
    59 *
       
    60 * @lib Mccsubthreads.lib
       
    61 * @since Series 60 3.0
       
    62 */
       
    63 class CMccUlDlClient : public CBase, public MMccEventHandler
       
    64     {
       
    65     public:  // Constructors and destructor
       
    66         
       
    67         /**
       
    68         * Two-phased constructor.
       
    69         */
       
    70         IMPORT_C static CMccUlDlClient* NewL( MMccEventHandler* aMccEventHandler,
       
    71                                               MMccResources* aMccResources,
       
    72                                               TUint32 aSessionId );
       
    73         /**
       
    74         * Destructor.
       
    75         */
       
    76         IMPORT_C virtual ~CMccUlDlClient();        
       
    77 	                               
       
    78     public: // New functions
       
    79         
       
    80         
       
    81 		IMPORT_C static void GetCodecDefaultsL( const TUid aType,
       
    82 												TDes8& aParam,
       
    83 												TMccCodecInfo& aCodec );
       
    84 												
       
    85         /**
       
    86         * Gets the gain of current stream
       
    87         * @since Series 60 3.0
       
    88         * @param [input] aLinkId Link location in the array
       
    89         * @param [input] aStreamId ID of the stream
       
    90         * @param [output] aGain Return value of the current gain
       
    91         * @return TInt System wide error code   
       
    92         */
       
    93         IMPORT_C TInt GetGainL( const TUint32 aLinkId,
       
    94                                 const TUint32 aStreamId,
       
    95                                 TInt& aGain );
       
    96         /**
       
    97         * Sets the gain for ul client
       
    98         * @since Series 60 3.0
       
    99         * @param [input] aGain The wanted gain value 
       
   100         * @return TInt System wide error code
       
   101         */
       
   102         IMPORT_C TInt SetGainL( TInt aGain );
       
   103         /**
       
   104         * Returns the maximum gain of current stream
       
   105         * @since Series 60 3.0
       
   106         * @param [input] aLinkId Link location in the array
       
   107         * @param [input] aStreamId ID of the stream
       
   108         * @param [output] aMaxGain Value of the maximum gain
       
   109         * @return System wide error code   
       
   110         */
       
   111         IMPORT_C void MaxGainL( const TUint32 aLinkId,
       
   112         						const TUint32 aStreamId,
       
   113                                 TInt& aMaxGain );
       
   114         
       
   115         /**
       
   116         * Sets the volume for current stream
       
   117         * @since Series 60 3.0
       
   118         * @param [input] aVolume Value for the current volume
       
   119         * @return System wide error code   
       
   120         */
       
   121         IMPORT_C TInt SetVolumeL( TInt aVolume );
       
   122 
       
   123         /**
       
   124         * Returns the maximum volume for current stream
       
   125         * @since Series 60 3.0
       
   126         * @param [input] aLinkId Link location in the array
       
   127         * @param [input] aStreamId ID of the stream
       
   128         * @param [output] aMaxVolume Return value of the maximum volume
       
   129         * @return TInt System wide error code   
       
   130         */
       
   131         IMPORT_C void MaxVolumeL( const TUint32 aLinkId,
       
   132                 				  const TUint32 aStreamId,
       
   133                                   TInt& aMaxVolume );                         
       
   134         /**
       
   135         * Returns the used codec
       
   136         * @since Series 60 3.0
       
   137         * @param [input] aLinkId Link location in the array
       
   138         * @param [input] aStreamId ID of the stream
       
   139         * @param [output] aCodec Codec information struct containing codec info
       
   140         * @return void   
       
   141         */
       
   142         IMPORT_C void GetCodecL( const TUint32 aLinkId,
       
   143                                  const TUint32 aStreamId,
       
   144                                  TMccCodecInfo& aCodec );
       
   145 
       
   146         /**
       
   147         * Returns the fmtp 
       
   148         * @since Series 60 3.0
       
   149         * @param [input] aLinkId Link location in the array
       
   150         * @param [input] aStreamId ID of the stream
       
   151         * @return the fmtp string for the link
       
   152         */
       
   153         IMPORT_C void GetFmtpAttrL( const TUint32 aLinkId,
       
   154                                     const TUint32 aStreamId,
       
   155                                     TDes8& aFmtp );
       
   156         
       
   157         /**
       
   158         * Sets the stream priority
       
   159         * @since Series 60 3.0
       
   160         * @param [input] aLinkId Link location in the array
       
   161         * @param [input] aStreamId ID of the stream
       
   162         * @param [input] aPrioritySettings An object that holds the
       
   163         *                audio client's priority and device state settings.
       
   164         * @return TInt System wide error code
       
   165         */
       
   166         IMPORT_C TInt SetPriorityL( const TUint32 aLinkId,
       
   167                                     const TUint32 aStreamId,
       
   168                                     TMMFPrioritySettings aPrioritySettings );
       
   169         /**
       
   170         * Opens the ul or dl client subthread
       
   171         * @since Series 60 3.0
       
   172         * @param [input] aLinkId Link ID
       
   173         * @param [input] aStreamId unique id for the stream
       
   174         * @param [input] aStreamType The desired stream type
       
   175         * @param [input] aFourCC the fourCC code of the desired codec
       
   176         * @param [input] aDataSource Data source of the client
       
   177         * @param [input] aSink Data sink of the client
       
   178         * @param [input] aSettings MMF settings
       
   179         * @leave System-wide error code if unsuccessful
       
   180         * @return void
       
   181         */
       
   182         IMPORT_C void OpenL( const TUint32 aLinkIdId,
       
   183                              const TUint32 aStreamId, 
       
   184                              TInt aStreamType,
       
   185                              TFourCC aFourCC,
       
   186                              MDataSource* aDataSource,
       
   187                              MDataSink* aSink,
       
   188                              TMMFPrioritySettings aSettings );
       
   189                 
       
   190         /**
       
   191         * Prepares ul/dl streams
       
   192         * @since Series 60 3.0
       
   193         * @param [input] aLinkId Link location in the array
       
   194         * @param [input] aStreamId ID of the stream
       
   195         * @leave System wide error code if unsuccessful
       
   196         * @return None
       
   197         */
       
   198         IMPORT_C void PrepareL( const TUint32 aLinkId,
       
   199                                 const TUint32 aStreamId,
       
   200                                 const TUint32 aEndpointId );
       
   201 
       
   202         /**
       
   203         * Plays ul/dl streams
       
   204         * @since Series 60 3.0
       
   205         * @param [input] aLinkId Link location in the array
       
   206         * @param [input] aStreamId ID of the stream
       
   207         * @leave System wide error code if unsuccessful
       
   208         * @return None
       
   209         */
       
   210         IMPORT_C void PlayL( const TUint32 aLinkId,
       
   211                              const TUint32 aStreamId,
       
   212 							 const TUint32 aEndpointId,
       
   213                              const TBool aStreamPaused,
       
   214                              const TBool aEnableRTCP );
       
   215 
       
   216         /**
       
   217         * Pauses ul/dl streams
       
   218         * @since Series 60 3.0
       
   219         * @param [input] aLinkId Link location in the array
       
   220         * @param [input] aStreamId ID of the stream
       
   221         * @param [input] aEnableRTCP ETrue if automatic RTCP sending should be
       
   222         *   enabled when the stream is paused
       
   223         * @leave System wide error code if unsuccessful
       
   224         * @return None
       
   225         */
       
   226         IMPORT_C void PauseL( const TUint32 aLinkId,
       
   227                               const TUint32 aStreamId,
       
   228                               const TUint32 aEndpointId,
       
   229                               const TBool aEnableRTCP );
       
   230 
       
   231         /**
       
   232         * Stops ul/dl streams
       
   233         * @since Series 60 3.0 
       
   234         * @param [input] aLinkId Link location in the array
       
   235         * @param [input] aStreamId ID of the stream
       
   236         * @return TInt System wide error code
       
   237         */
       
   238         IMPORT_C void StopL( const TUint32 aLinkId,
       
   239                              const TUint32 aStreamId,
       
   240                              const TUint32 aEndpointId );
       
   241 
       
   242         /**
       
   243         * Resumes ul/dl streams
       
   244         * @since Series 60 3.0 
       
   245         * @param [input] aLinkId Link location in the array
       
   246         * @param [input] aStreamId ID of the stream
       
   247         * @param [input] aEnableRTCP ETrue if automatic RTCP sending should be
       
   248         *   enabled when the stream is paused
       
   249         * @leave System wide error code if unsuccessful
       
   250         * @return None
       
   251         */
       
   252         IMPORT_C void ResumeL( const TUint32 aLinkId,
       
   253                                const TUint32 aStreamId,
       
   254                                const TUint32 aEndpointId,
       
   255                                const TBool aEnableRTCP );
       
   256 
       
   257         /**
       
   258         * Checks if link contais stream
       
   259         * @since Series 60 3.0 
       
   260         * @param [input] aLinkId Link location in the array
       
   261         * @leave System wide error code if unsuccessful
       
   262         * @return ETrue, if streams exists
       
   263         */
       
   264         IMPORT_C TBool StreamsExistsL( const TUint32 aLinkId );
       
   265 
       
   266         /**
       
   267         * Returns the play balance
       
   268         * @since Series 60 3.0 
       
   269         * @param [input] aLinkId Link location in the array
       
   270         * @param [output] aLeftBalance Value for the left balance
       
   271         * @param [output] aRightBalance Value for the right balance
       
   272         * @return System wide error code
       
   273         */
       
   274         IMPORT_C TInt GetPlayBalanceL( const TUint32 aLinkId,
       
   275                                        const TUint32 aStreamId,
       
   276                                        TInt& aLeftBalance,
       
   277                                        TInt& aRightBalance );
       
   278 
       
   279         /**
       
   280         * Returns the record balance
       
   281         * @since Series 60 3.0 
       
   282         * @param [input] aLinkId Link location in the array
       
   283         * @param [input] aStreamId ID of the stream
       
   284         * @param [output] aLeftBalance Value for the left balance
       
   285         * @param [output] aRightBalance Value for the right balance
       
   286         * @return System wide error code
       
   287         */
       
   288         IMPORT_C TInt GetRecordBalanceL( const TUint32 aLinkId,
       
   289                                          const TUint32 aStreamId,
       
   290                                          TInt& aLeftBalance,
       
   291                                          TInt& aRightBalance );
       
   292 
       
   293         /**
       
   294         * Sets the record balance
       
   295         * @since Series 60 3.0 
       
   296         * @param [input] aLinkId Link location in the array
       
   297         * @param [input] aStreamId ID of the stream
       
   298         * @param [input] aLeftBalance Value for the left balance
       
   299         * @param [input] aRightBalance Value for the right balance
       
   300         * @leave System wide error code
       
   301         */
       
   302         IMPORT_C void SetRecordBalanceL( const TUint32 aLinkId, 
       
   303                                          const TUint32 aStreamId, 
       
   304                                          TInt aLeftBalance,
       
   305                                          TInt aRightBalance );
       
   306 
       
   307         /**
       
   308         * Sets the play balance
       
   309         * @since Series 60 3.0 
       
   310         * @param [input] aLinkId Link location in the array
       
   311         * @param [input] aStreamId ID of the stream
       
   312         * @param [input] aLeftBalance Value for the left balance
       
   313         * @param [input] aRightBalance Value for the right balance
       
   314         * @leave System wide error code
       
   315         */
       
   316         IMPORT_C void SetPlayBalanceL( const TUint32 aLinkId, 
       
   317                                        const TUint32 aStreamId, 
       
   318                                        TInt aLeftBalance, 
       
   319                                        TInt aRightBalance );  
       
   320         
       
   321         /**
       
   322         * Closes ul/dl streams
       
   323         * @since Series 60 3.0 
       
   324         * @param [input] aLinkId ID of link that contains stream
       
   325         * @param [input] aStreamId ID of stream to close
       
   326         * @return void
       
   327         */
       
   328         IMPORT_C void CloseL( const TUint32 aLinkIdId,
       
   329                               const TUint32 aStreamId );
       
   330       
       
   331         /**
       
   332         * Returns the session ID 
       
   333         * @since Series 60 3.0
       
   334         * @param None
       
   335         * @return Value which represents the session ID
       
   336         */
       
   337         IMPORT_C TUint32 GetSessionId();
       
   338 
       
   339         /**
       
   340         * Sets the remote address for aStream
       
   341         * @since Series 60 3.0
       
   342         * @param [input] aRemAddr Denotes the remote IP address
       
   343         * @param [input] aLinkId Link location in the array
       
   344         * @leave System wide error code if unsuccessful
       
   345         * @return None
       
   346         */
       
   347         IMPORT_C void SetRemoteAddressL( TInetAddr aRemAddr,
       
   348                                          const TUint32 aLinkId );
       
   349                                          
       
   350         /**
       
   351         * Sets the remote rtcp address for aStream
       
   352         * @since Series 60 3.0
       
   353         * @param [input] aRemAddr Denotes the remote rtcp IP address
       
   354         * @param [input] aLinkId Link location in the array
       
   355         * @leave System wide error code if unsuccessful
       
   356         * @return None
       
   357         */
       
   358         IMPORT_C void SetRemoteRtcpAddrL( TInetAddr aRemAddr,
       
   359                                          const TUint32 aLinkId );                                
       
   360 
       
   361         /**
       
   362         * Creates link
       
   363         * @since Series 60 3.0
       
   364         * @param [input] aLinkId ID of the new link (UL or DL client)
       
   365         * @param [input] aType   Type of the link to be created
       
   366         * @return void
       
   367         */
       
   368         IMPORT_C void CreateLinkL( TUint32& aLinkId,
       
   369                                    TInt aType );
       
   370 
       
   371         /**
       
   372         * Initializes link
       
   373         * @since Series 60 3.0
       
   374         * @param [input/output] aStatus Status of the request
       
   375         * @param [input] aLinkId ID of the link
       
   376         * @param [input] aIapId IAP ID
       
   377         * @return void
       
   378         */
       
   379         IMPORT_C void InitializeLinkL( TRequestStatus& aStatus,
       
   380                                        TUint32 aLinkId,
       
   381                                        TInt aIapId );
       
   382 
       
   383         /**
       
   384         * Creates the RTP session
       
   385         * @since Series 60 3.0
       
   386         * @param [input] aLinkId
       
   387         * @param [input/output] aPort    
       
   388         * @param [input] aIpTOS           
       
   389         * @param [input] aMediaSignaling 
       
   390         * @return void
       
   391         */
       
   392         IMPORT_C void CreateRtpSessionL( TUint32 aLinkId,
       
   393                                          TUint aPort,
       
   394                                          TInt aIpTOS,
       
   395                                          TInt aMediaSignaling );
       
   396 
       
   397         /**
       
   398         * Closes ul/dl links
       
   399         * @since Series 60 3.0 
       
   400         * @param [input] aLinkId ID of link to close
       
   401         * @return System wide error code
       
   402         */
       
   403         IMPORT_C TInt CloseLinkL( TUint32 aLinkIdId );
       
   404 
       
   405                                       
       
   406         /**
       
   407         * Sends media signals to uplink if possible
       
   408         * @since Series 60 3.0
       
   409         * @param aStreamId Stream into which the signal should be sent
       
   410         * @param aEvent The event to be sent
       
   411         * @return void
       
   412         */
       
   413         IMPORT_C void SendMediaSignalL( const TMccEvent& aEvent );
       
   414         
       
   415         /**
       
   416         * Sets the codec information for specific stream
       
   417         * @since Series 60 3.0
       
   418         * @param [input] aLink Link for which the codec information is set
       
   419         * @param [input] aStreamId ID of the stream
       
   420         * @param aCodecInfo Codec information for the stream
       
   421         * @return void
       
   422         */
       
   423         IMPORT_C void SetCodecInformationL( const TUint32 aLinkId, 
       
   424                 const TUint32 aStreamId, 
       
   425                 const TMccCodecInfo& aCodecInfo,
       
   426                 const TDesC8& aFmtp );
       
   427                 
       
   428         /**
       
   429         * Get the supported bitrates from the codec of the specified stream
       
   430         * @since Series 60 3.0
       
   431         * @param aLinkId - [input] link ID
       
   432         * @param aStreamId - [input] Stream ID identifying stream
       
   433         * @param aBitrates Array for the bitrates
       
   434         * @leave System wide error code if unsuccessful
       
   435         * @return None
       
   436         */
       
   437         IMPORT_C void GetSupportedBitratesL( const TUint32 aLinkIdId, 
       
   438                                              const TUint32 aStreamId,
       
   439                                              RArray<TUint>& aBitrates );
       
   440         
       
   441        /**
       
   442         * Get syncrinization source from the specified stream
       
   443         * @since Series 60 3.0
       
   444         * @param aLinkId - [input] link ID
       
   445         * @param aStreamId - [input] Stream ID identifying stream
       
   446         * @param aaSSRCValue - [input] SSRC value to be retturn
       
   447         * @leave System wide error code if unsuccessful
       
   448         * @return none.
       
   449         */
       
   450         IMPORT_C void GetSSRCL( const TUint32 aLinkId, 
       
   451                                 const TUint32 aStreamId, 
       
   452                                 TUint32&      aSSRCValue);
       
   453         
       
   454         /**
       
   455         * Sends RTCP receiver report to uplink if possible.
       
   456         * @param aLinkId - [input] link ID
       
   457         * @param aStreamId - [input] Stream ID identifying stream
       
   458         * @leave System wide error code if unsuccessful
       
   459         * @return None
       
   460         */
       
   461         IMPORT_C void SendRTCPReceiverReportL( const TUint32 aLinkIdId, 
       
   462                                                const TUint32 aStreamId );
       
   463 
       
   464         /**
       
   465         * Sends RTCP sender report to uplink if possible.
       
   466         * @param aLinkId - [input] link ID
       
   467         * @param aStreamId - [input] Stream ID identifying stream
       
   468         * @leave System wide error code if unsuccessful
       
   469         * @return None
       
   470         */
       
   471         IMPORT_C void SendRTCPSenderReportL( const TUint32 aLinkIdId,
       
   472                                              const TUint32 aStreamId );
       
   473 
       
   474 
       
   475         /**
       
   476         * Sends RTCP data to uplink if possible.
       
   477         * @param aLinkId - [input] link ID
       
   478         * @param aStreamId - [input] Stream ID identifying stream
       
   479         * @param aData - [input] Non-RTCP data
       
   480         * @leave System wide error code if unsuccessful
       
   481         * @return None
       
   482         */
       
   483         IMPORT_C void SendRTCPDataL( const TUint32 aLinkId,
       
   484                                      const TUint32 aStreamId,
       
   485                                      const TDesC8& aData );
       
   486         /**
       
   487         * Starts inactivity timer for a stream in a given session.
       
   488         * @param aLinkId - [input] link ID
       
   489         * @param aStreamId - [input] Stream ID identifying stream
       
   490         * @param aTimeoutTime - [input] timeout value in milliseconds
       
   491         * @leave System wide error code if unsuccessful
       
   492         * @return None
       
   493         */
       
   494         IMPORT_C void StartInactivityTimerL( const TUint32 aLinkIdId, 
       
   495                                              const TUint32 aStreamId,
       
   496                                              TUint32 aTimeoutTime );
       
   497 
       
   498         /**
       
   499         * Stops inactivity timer for a stream in a given session.
       
   500         * @param aLinkId - [input] link ID
       
   501         * @param aStreamId - [input] Stream ID identifying stream
       
   502         * @leave System wide error code if unsuccessful
       
   503         * @return None
       
   504         */
       
   505         IMPORT_C void StopInactivityTimerL( const TUint32 aLinkIdId,
       
   506                                             const TUint32 aStreamId );
       
   507                                       	  
       
   508         /**
       
   509         * Sets audio route for a stream in a given session.
       
   510         * @param aLinkId - [input] link ID
       
   511         * @param aStreamId - [input] Stream ID identifying stream
       
   512         * @param aRoutingDestination - [input] routing destination
       
   513         * @leave System wide error code if unsuccessful
       
   514         * @return None
       
   515         */
       
   516         IMPORT_C void SetAudioRouteL( TUint32 aLinkId, 
       
   517                                       TUint32 aStreamId,
       
   518                                       TUint32 aRoutingDestination );
       
   519         
       
   520         
       
   521         /**
       
   522         * Sets audio route for a stream in a given session.
       
   523         * @param aLinkId - [input] link ID
       
   524         * @param aStreamId - [input] Stream ID identifying stream
       
   525         * @param aRoutingDestination - [output] routing destination
       
   526         * @leave System wide error code if unsuccessful
       
   527         * @return None
       
   528         */
       
   529         IMPORT_C void GetAudioRouteL( TUint32 aLinkId, 
       
   530                                       TUint32 aStreamId,
       
   531                                       TUint32& aRoutingDestination );
       
   532                                       
       
   533         /**
       
   534         * Generates a random stream identifier
       
   535         * @since Series 60 3.0
       
   536         * @param None
       
   537         * @return TInt New stream ID
       
   538         */
       
   539         IMPORT_C TUint32 GenerateStreamId();
       
   540         
       
   541         /**
       
   542         * Unuses ul/dl stream
       
   543         * @since Series 60 3.0 
       
   544         * @param [input] aLinkId Link location in the array
       
   545         * @param [input] aStreamId ID of the stream
       
   546         * @return TInt System wide error code
       
   547         */
       
   548         IMPORT_C void UnuseL( const TUint32 aLinkId,
       
   549                               const TUint32 aStreamId );
       
   550 
       
   551         /**
       
   552         * Resolves local IP addresses and ports
       
   553         * @since Series 60 3.2
       
   554         * @param [input/output] aClientData Client data
       
   555         * @return void
       
   556         */
       
   557         IMPORT_C void GetLocalIpAddressesL( TMccCreateLink& aClientData );
       
   558 
       
   559 
       
   560         /**
       
   561          * Bind context into stream.
       
   562          * @since Series 60 3.2
       
   563          * @param aLinkId The link id
       
   564          * @param aStreamId The stream id
       
   565          * @param aEndpointId The endpoint id
       
   566          * @param aCryptoContext Crypto context
       
   567          * @return void
       
   568          */	
       
   569         IMPORT_C void BindContextIntoStreamL(  TUint32 aLinkId,
       
   570                                                TUint32 aStreamId,
       
   571                                                TUint32 aEndpointId,
       
   572                                                const TMccCryptoContext& aCryptoContext );
       
   573 
       
   574         /**
       
   575          * Remove context.
       
   576          * @since Series 60 3.2
       
   577          * @param aLinkId The link id
       
   578          * @param aStreamId The stream id
       
   579          * @param aEndpointId The endpoint id
       
   580          * @return void
       
   581          */	
       
   582         IMPORT_C void RemoveContextL( TUint32 aLinkId,
       
   583                                       TUint32 aStreamId,
       
   584                                       TUint32 aEndpointId );
       
   585 
       
   586         /**
       
   587         * Generic value setter.
       
   588         * @param [input] aParam identifier of the param to be set
       
   589         * @param [input] aLinkId Link location in the array
       
   590         * @param [input] aStreamId ID of the stream
       
   591         * @param [input] aEndpointId ID of the endpoint
       
   592         * @param [input] aVal value to be set
       
   593         */                      
       
   594         IMPORT_C void SetParameterL( TUint32 aParam,
       
   595                                      TUint32 aLinkId,
       
   596                                      TUint32 aStreamId,
       
   597                                      TUint32 aEndpointId,
       
   598                                      const TDesC8& aVal );
       
   599          
       
   600         /**
       
   601         * Generic value getter.
       
   602         * @param [input] aParam identifier of the param to be get
       
   603         * @param [input] aLinkId Link location in the array
       
   604         * @param [input] aStreamId ID of the stream
       
   605         * @param [input] aEndpointId ID of the endpoint
       
   606         * @param [input] aVal value fill be set to this
       
   607         */                      
       
   608         IMPORT_C void GetParameterL( TUint32 aParam,
       
   609                                      TUint32 aLinkId,
       
   610                                      TUint32 aStreamId,
       
   611                                      TUint32 aEndpointId,
       
   612                                      TDesC8& aVal );
       
   613                                                                   
       
   614     public: // From MMccEventHandler
       
   615         
       
   616         virtual TInt SendMccEventToClient( TMccEvent& aEvent );
       
   617 
       
   618 	    virtual void StateChange( TInt aState, TUint32 aLinkId );
       
   619 
       
   620 	    virtual void ErrorOccured( TInt aError, 
       
   621 	                               TUint32 aSessionId, 
       
   622 	                               TUint32 aLinkId,
       
   623 	                               TUint32 aStreamId, 
       
   624 	                               TUint32 aEndpointId );
       
   625 
       
   626     protected:  // New functions
       
   627        
       
   628 
       
   629     protected:  // Functions from base classes
       
   630         
       
   631     private:    // New functions
       
   632     
       
   633         /**
       
   634         * Method for finding correct streams
       
   635         * @since Series 60 3.0 
       
   636         * @param [input] aLinkId Link location in the array
       
   637         * @return TInt System wide error code
       
   638         */
       
   639         TInt FindLinkL( const TUint32 aLinkId );
       
   640 
       
   641         /**
       
   642         * Stores the link (pointer to clients)
       
   643         * @since Series 60 3.0 
       
   644         * @param [input] aClient client object
       
   645         * @return TInt System wide error code 
       
   646         */
       
   647         TInt StoreLink( CMccSubThreadClientBase* aClient );
       
   648         
       
   649     private:    // Constructors
       
   650 
       
   651         /**
       
   652         * C++ default constructor.
       
   653         */
       
   654         CMccUlDlClient( MMccEventHandler* aMccEventHandler,
       
   655                         MMccResources* aMccResources,
       
   656                         TUint32 aSessionId );
       
   657 
       
   658         /**
       
   659         * By default Symbian 2nd phase constructor is private.
       
   660         */
       
   661         void ConstructL();
       
   662 
       
   663     public:     // Data
       
   664         
       
   665     protected:  // Data
       
   666 
       
   667     private:    // Data    
       
   668     
       
   669         // array for storing ul & dl client pointers to streams 
       
   670         RPointerArray<CMccSubThreadClientBase> iClientArray;
       
   671 
       
   672         // member variable for storing session id
       
   673         TUint32 iSessionId;
       
   674 
       
   675         // Variable for storing event error code
       
   676         TInt iErrorCode;
       
   677 
       
   678         // Datasink of the subthread
       
   679         MDataSink* iDatasink;
       
   680 
       
   681         // Datasource of the subthread
       
   682         MDataSource* iDatasource;
       
   683         
       
   684         // Event handler
       
   685         MMccEventHandler* iMccEventHandler;
       
   686         
       
   687         // Resources
       
   688         MMccResources* iMccResources;
       
   689         
       
   690         // Rtp media clock
       
   691         CMccRtpMediaClock* iRtpMediaClock;
       
   692                 
       
   693     public:     // Friend classes
       
   694        
       
   695     protected:  // Friend classes
       
   696        
       
   697     private:    // Friend classes
       
   698        
       
   699 
       
   700     };
       
   701 
       
   702 #endif      // MCCULDLCLIENT_H   
       
   703             
       
   704 // End of File
       
   705 
       
   706 
       
   707