multimediacommscontroller/mmccqoscontroller/inc/mccqoscontroller.h
changeset 0 1bce908db942
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/multimediacommscontroller/mmccqoscontroller/inc/mccqoscontroller.h	Tue Feb 02 01:04:58 2010 +0200
@@ -0,0 +1,183 @@
+/*
+* Copyright (c) 2006 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:    
+*
+*/
+
+
+
+
+#ifndef MCCQOSCONTROLLER_H
+#define MCCQOSCONTROLLER_H
+
+//  INCLUDES
+#include <e32base.h>
+#include "mccrateadaptationdef.h"
+#include "mccinternalevents.h"
+#include "mmccevents.h"
+
+// CONSTANTS
+
+// MACROS
+
+// DATA TYPES
+
+// FUNCTION PROTOTYPES
+
+// FORWARD DECLARATIONS
+class MMccRateAdaptationObserver;
+class MMccResources;
+class TMccEvent;
+class CDeltaTimer;
+class MDataSink;
+class MDataSource;
+
+// CLASS DECLARATION
+
+class TMccQosControllerIcmpError
+    {
+    public:
+    
+        TMccQosControllerIcmpError() :
+            iLinkId( 0 ),
+            iErrorTimeWindowBeginning( 0 ),
+            iErrorCount( 0 )
+            {
+            }
+            
+    public:
+    
+        TUint32 iLinkId;
+        TTime iErrorTimeWindowBeginning;
+        TInt iErrorCount;
+    };
+
+/**
+*
+*/
+class CMccQosController : public CBase
+    {
+    public:  // Constructors and destructor
+        
+        /**
+        * Two-phased constructor.
+        */
+        IMPORT_C static CMccQosController* NewL( MMccRateAdaptationObserver& aObserver, 
+                                        MMccResources& aResources );
+        
+        /**
+        * Destructor.
+        */
+        IMPORT_C ~CMccQosController();
+
+    public: // New functions
+    
+        /**
+        * Processes event if it is qos related.
+        * @param aEvent
+        * @return ETrue if event should be ignored, otherwise EFalse
+        */
+        IMPORT_C TBool EventReceived( const TMccEvent& aEvent );       
+
+    public: // Functions from base classes       
+        
+    protected:  // New functions
+
+    protected:  // Functions from base classes
+
+    private:
+
+        /**
+        * C++ default constructor.
+        */
+        CMccQosController( MMccRateAdaptationObserver& aObserver,
+                           MMccResources& aResources );
+
+        /**
+        * By default Symbian 2nd phase constructor is private.
+        */
+        void ConstructL();
+        void DoAdaptationCalculations();
+        void FillRateAdaptationEvent();
+        void ClearRateEventData();
+        
+        /**
+		*Starts timer of type CDeltaTimer, 
+		*which callback is AsyncTimerExpired function
+		*/
+		void StartTimerForAsync();
+		
+		/**
+		* A callback for CDeltaTimer
+		*/
+		static TInt AsyncTimerExpired(TAny* aPtr);
+        
+        void GetSinkSources();
+        
+        void CheckRateChangeResult(TInt aValue);
+        
+        TBool HandleIcmpError( const TMccEvent& aEvent );
+        
+        static TBool IcmpErrorMatch( const TMccQosControllerIcmpError& aError1, 
+                                     const TMccQosControllerIcmpError& aError2 );
+        
+        static TBool IcmpErrorCleanup( const TMccQosControllerIcmpError& aError1, 
+                                       const TMccQosControllerIcmpError& aError2 );
+        
+        void DoAdaptation();
+        
+        TInt GetShortTermComparisonDelay();
+        
+        TInt CalculateDelayOfShortTermPeriod();
+
+    public:     // Data
+    
+    protected:  // Data
+
+    private:    // Data
+    
+        MMccRateAdaptationObserver& iMainObserver;
+        MMccResources& 				iResources;
+        TInt 						iRoundTripTime;
+        TRtpPeerStat 				iStreamStat;
+        TMccRateAdaptationEventData iRateEventData;
+        TMccEvent					iEvent;
+        TMccEvent					iResultEvent;
+        TThresholdValues 			iThresholdValues; //rate control threshold values
+        CDeltaTimer* 				iDeltaTimer;
+        TCallBack 					iDeltaTimerCallBack;
+		TDeltaTimerEntry 			iDeltaTimerEntry;
+		
+       TBool						iBitRateChanged;
+       TUint						iEventCounter;
+       TBool                        iAdapted;
+       TInt                         iRoundTripDelayOfPreviousShortPeriod;
+       TInt                         iRoundTripDelays[ KMccShortTermCalculation ];
+        RArray<TMccQosControllerIcmpError> iIcmpErrors;
+       
+    public:     // Friend classes
+
+    protected:  // Friend classes
+
+    private:    // Friend classes
+
+    #ifdef TEST_EUNIT
+    friend class UT_CMccQosController;
+    #endif
+
+    };
+
+#endif      // MCCQOSCONTROLLER_H   
+            
+// End of File