--- /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