diff -r 000000000000 -r c40eb8fe8501 wlan_bearer/wlanldd/wlan_common/umac_common/inc/umacpowermodemgrbase.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/wlan_bearer/wlanldd/wlan_common/umac_common/inc/umacpowermodemgrbase.h Tue Feb 02 02:03:13 2010 +0200 @@ -0,0 +1,168 @@ +/* +* 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 WlanPowerModeMgrBase class +* +*/ + +/* +* %version: 12 % +*/ + +#ifndef WLAN_POWER_MODE_MGR_BASE_H +#define WLAN_POWER_MODE_MGR_BASE_H + +#ifndef RD_WLAN_DDK +#include +#else +#include +#endif + +#include "umacinternaldefinitions.h" + +class WlanContextImpl; + +/** +* Common base class for classes implementing dynamic power mode transition +* algorithm between PS and active mode in infrastructure mode +*/ +class WlanPowerModeMgrBase + { +public: + + /** Dtor */ + virtual ~WlanPowerModeMgrBase(); + + /** + * 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 ) = 0; + + /** + * 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 has beeen 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 ) = 0; + + /** + * To be called upon Active to Light PS timer timeout + * + * @since S60 v5.1 + * @return ETrue if power mode transition should be done, + * EFalse otherwise + */ + virtual TBool OnActiveToLightPsTimerTimeout(); + + /** + * To be called upon Light PS to Active timer timeout + * + * @since S60 v5.1 + * @param aCtxImpl global statemachine context + * @return ETrue if power mode transition should be done, + * EFalse otherwise + */ + virtual TBool OnLightPsToActiveTimerTimeout( WlanContextImpl& aCtxImpl ); + + /** + * To be called upon Light PS to Deep PS timer timeout + * + * @since S60 v5.1 + * @return ETrue if power mode transition should be done, + * EFalse otherwise + */ + virtual TBool OnLightPsToDeepPsTimerTimeout(); + + /** + * Resets the state of the object + * + * @since S60 3.1 + */ + void Reset(); + + /** + * Resets the state of the derived object + * + * @since S60 3.1 + */ + virtual void DoReset() = 0; + +protected: + + /** Ctor */ + WlanPowerModeMgrBase(); + + /** + * Determines the need to increment frame counter + * + * @since S60 3.1 + * @param aCtxImpl + * @param aAccessCategory + * @param aPayloadLength + * @param aUapsdRxFrameLengthThreshold + * @param aDaType DA type (Unicast, Multicast or Broadcast) of the frame + * @return ETrue if the frame should increment relevant frame counter, + * EFalse otherwise + */ + static TBool CountThisFrame( + WlanContextImpl& aCtxImpl, + WHA::TQueueId aAccessCategory, + TUint16 aEtherType, + TBool aIgnoreThisFrame, + TUint aPayloadLength, + TUint16 aUapsdRxFrameLengthThreshold, + TDaType aDaType ); + +private: + + // Prohibit copy constructor + WlanPowerModeMgrBase( const WlanPowerModeMgrBase& ); + // Prohibit assigment operator + WlanPowerModeMgrBase& operator= ( const WlanPowerModeMgrBase& ); + +protected: // Data + + /** + * Frame payload length threshold value (in bytes) for U-APSD + */ + TUint16 iUapsdRxFrameLengthThreshold; + }; + +#endif // WLAN_POWER_MODE_MGR_BASE_H