diff -r 000000000000 -r c40eb8fe8501 wlan_bearer/wlanldd/wlan_common/umac_common/inc/umacactivemodepowermodemgr.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/wlan_bearer/wlanldd/wlan_common/umac_common/inc/umacactivemodepowermodemgr.h Tue Feb 02 02:03:13 2010 +0200 @@ -0,0 +1,139 @@ +/* +* Copyright (c) 2006-2009 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of the License "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: Declaration of the WlanActiveModePowerModeMgr class +* +*/ + +/* +* %version: 9 % +*/ + +#ifndef WLAN_ACTIVE_MODE_POWER_MODE_MGR +#define WLAN_ACTIVE_MODE_POWER_MODE_MGR + +#include "umacpowermodemgrbase.h" + +class WlanContextImpl; + +/** +* Class implementing infrastructure mode dynamic power mode management +* algorithm for Active mode (CAM) +*/ +class WlanActiveModePowerModeMgr : public WlanPowerModeMgrBase + { + +public: + + /** Ctor */ + WlanActiveModePowerModeMgr(); + + /** Dtor */ + virtual ~WlanActiveModePowerModeMgr(); + + /** + * Sets the dynamic power mode transition algorithm parameters + * + * @since S60 5.1 + * @param aToLightPsFrameThreshold frame count threshold for changing to + * Light PS mode + * @param aUapsdRxFrameLengthThreshold received frame + * payload length (in bytes) threshold in U-APSD network + */ + inline void SetParameters( + TUint aToLightPsFrameThreshold, + TUint16 aUapsdRxFrameLengthThreshold ); + + /** + * To be called when transmitting a frame + * Determines the need to make a power mode transition + * + * @since S60 3.1 + * @param aCtxImpl global statemachine context + * @param aQueueId Id of the queue/AC via which the frame will be transmitted + * @param aEtherType Ethernet type of the frame + * @param aIgnoreThisFrame shall this frame be ignored from dynamic power + * mode management perspective + * @return To which power management mode to change; if any at all + */ + virtual TPowerMgmtModeChange OnFrameTx( + WlanContextImpl& aCtxImpl, + WHA::TQueueId aQueueId, + TUint16 aEtherType, + TBool aIgnoreThisFrame ); + + /** + * To be called when accepting an Rx frame + * + * @since S60 3.1 + * @param aCtxImpl global statemachine context + * @param aAccessCategory AC/Queue via which the frame was transmitted + * @param aEtherType Ethernet type of the received frame + * @param aIgnoreThisFrame shall this frame be ignored from dynamic power + * mode management perspective + * @param aPayloadLength length of the ethernet frame payload + * @param aDaType DA type (Unicast, Multicast or Broadcast) of the frame + * @return To which power management mode to change; if any at all + */ + virtual TPowerMgmtModeChange OnFrameRx( + WlanContextImpl& aCtxImpl, + WHA::TQueueId aAccessCategory, + TUint16 aEtherType, + TBool aIgnoreThisFrame, + TUint aPayloadLength, + TDaType aDaType ); + + /** + * From WlanPowerModeMgrBase + * To be called upon Active to Light PS timer timeout + * + * @since S60 5.1 + * @return ETrue if power mode transition should be done, + * EFalse otherwise + */ + virtual TBool OnActiveToLightPsTimerTimeout(); + + /** + * From WlanPowerModeMgrBase + * Resets the state of the object + * + * @since S60 3.1 + */ + virtual void DoReset(); + +private: + + // Prohibit copy constructor + WlanActiveModePowerModeMgr( const WlanActiveModePowerModeMgr& ); + // Prohibit assignment operator + WlanActiveModePowerModeMgr& operator= ( + const WlanActiveModePowerModeMgr& ); + +private: // Data + + /** + * Rx/Tx frame counter used when considering change to + * Light PS mode + */ + TUint iToLightPsFrameCount; + + /** + * Rx/Tx frame count threshold used when considering change to + * Light PS mode + */ + TUint iToLightPsFrameThreshold; + }; + +#include "umacactivemodepowermodemgr.inl" + +#endif // WLAN_ACTIVE_MODE_POWER_MODE_MGR