diff -r 000000000000 -r c40eb8fe8501 wlan_bearer/wlanldd/wlan_common/umac_common/inc/umacconfiguretxautoratepolicy.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/wlan_bearer/wlanldd/wlan_common/umac_common/inc/umacconfiguretxautoratepolicy.h Tue Feb 02 02:03:13 2010 +0200 @@ -0,0 +1,203 @@ +/* +* Copyright (c) 2007-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 WlanConfigureTxAutoRatePolicy class. +* +*/ + +/* +* %version: 6 % +*/ + +#ifndef WLAN_CONFIGURE_TX_AUTO_RATE_POLICY_H +#define WLAN_CONFIGURE_TX_AUTO_RATE_POLICY_H + +#include "UmacWsaComplexCommand.h" +#include "umacinternaldefinitions.h" + + +/** + * Configures the relevant txAutoRatePolicy MIB entries to enable the lower + * layers to perform autonomous rate adaptation + * + * @lib wlanumac.lib + * @since S60 v5.0 + */ +class WlanConfigureTxAutoRatePolicy : public WlanWsaComplexCommand + { + +public: + + /** + * C++ default constructor. + */ + WlanConfigureTxAutoRatePolicy(); + + /** + * Destructor. + */ + virtual ~WlanConfigureTxAutoRatePolicy(); + + /** + * Provides the input parameters for this state + * + * @since S60 5.0 + * @param aCompleteMgmtRequest ETrue if WLAN Mgmt Client request needs to be + * completed when we are done; EFalse otherwise + */ + void Set( TBool aCompleteMgmtRequest ); + +private: + + // Types for the FSM + + // events for the FSM + enum TEvent + { + ESTATEENTRY, // state entry action to be executed + ETXCOMPLETE, // underlying sw layer tx delivery complete event + EABORT, // abort execution event + EEVENTMAX // defined as an upper bound + }; + + // states of the FSM + enum TState + { + EINIT, // start state of the state machine + ESETAUTORATEPOLICY, + EFINIT, + ESTATEMAX // defined as an upper bound + }; + + /** + * Dispatches the internal state machine events + * + * @since S60 5.0 + * @param aCtxImpl Global statemachine context + * @param aEvent The event to dispatch + */ + void Fsm( + WlanContextImpl& aCtxImpl, + TEvent aEvent ); + + /** + * Handles the Internal State Entry event + * + * @since S60 5.0 + * @param aCtxImpl Global statemachine context + */ + void OnStateEntryEvent( WlanContextImpl& aCtxImpl ); + + /** + * Handles the Tx Complete event. + * + * @since S60 5.0 + * @param aCtxImpl Global statemachine context + */ + void OnTxCompleteEvent( WlanContextImpl& aCtxImpl ); + + /** + * Handles the Abort event. + * + * @since S60 5.0 + * @param aCtxImpl Global statemachine context + */ + void OnAbortEvent( WlanContextImpl& aCtxImpl ); + + /** + * Handles internal state machine state changes. + * + * @since S60 5.0 + * @param aCtxImpl Global statemachine context + * @param aNewState The state to change to + */ + void ChangeInternalState( + WlanContextImpl& aCtxImpl, + TState aNewState ); + + /** + * ?member_description. + * + * @since S60 5.0 + * @param aCtxImpl Global statemachine context + */ + void SetAutoRatePolicy( + WlanContextImpl& aCtxImpl ); + + /** + * From WlanMacState. + * Performs state entry actions + * + * @since S60 5.0 + * @param aCtxImpl Global statemachine context + */ + virtual void Entry( WlanContextImpl& aCtxImpl ); + + /** + * From WlanMacState. + * Performs state exit actions + * + * @since S60 5.0 + * @param aCtxImpl Global statemachine context + */ + virtual void Exit( WlanContextImpl& aCtxImpl); + + /** + * From WlanMacState. + * Returns the name of this state. + * + * @since S60 5.0 + * @param aLength Length of the returned name buffer + */ +#ifndef NDEBUG + virtual const TInt8* GetStateName( TUint8& aLength ) const; +#endif // !NDEBUG + + // Prohibit copy constructor. + WlanConfigureTxAutoRatePolicy( const WlanConfigureTxAutoRatePolicy& ); + // Prohibit assignment operator. + WlanConfigureTxAutoRatePolicy& operator= + ( const WlanConfigureTxAutoRatePolicy& ); + +private: // Data + + /** state of the internal state machine */ + TState iState; + /** + * ETrue if WLAN Mgmt Client request needs to be completed when we are + * done, EFalse otherwise + */ + TBool iCompleteMgmtRequest; + // memory handle for TxAutoRatePolicyMib objects. Own + WHA::StxAutoRatePolicy* iTxAutoRatePolicyMib; + /** number of rate policy classes to configure */ + TUint iNumberOfPolicyClassesToConfigure; + /** ID of the rate policy class being configured */ + TUint iRatePolicyClass; + +#ifndef NDEBUG + /** max length of state name for tracing */ + enum { KMaxStateStringLength = 50 }; + /** max length of event name for tracing */ + enum { KMaxEventStringLength = KMaxStateStringLength }; + + /** state names for tracing */ + static const TUint8 iStateName[ESTATEMAX][KMaxStateStringLength]; + /** event names for tracing */ + static const TUint8 iEventName[EEVENTMAX][KMaxEventStringLength]; + static const TInt8 iName[]; +#endif // !NDEBUG + + }; + +#endif // WLAN_CONFIGURE_TX_AUTO_RATE_POLICY_H