diff -r 000000000000 -r c40eb8fe8501 wlan_bearer/wlanldd/wlan_common/umac_common/inc/Umac.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/wlan_bearer/wlanldd/wlan_common/umac_common/inc/Umac.h Tue Feb 02 02:03:13 2010 +0200 @@ -0,0 +1,395 @@ +/* +* Copyright (c) 2002-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 Umac class. +* +*/ + +/* +* %version: 32 % +*/ + +#ifndef UMAC_H +#define UMAC_H + +#include "umaceventdispatcherclient.h" +#include "UmacProtocolStackSideUmac.h" +#include "UmacProtocolStackSideUmacCb.h" +#include "UmacManagementSideUmac.h" +#include "UmacManagementSideUmacCb.h" +#include "UmacTimerClient.h" +#include "umacdfcclient.h" + +#ifndef RD_WLAN_DDK +#include +#else +#include +#endif + + +class WlanContextImpl; +class WlanConnectContext; +class WlanPrivacyModeFilters; + +class Umac : + public MWlanProtocolStackSideUmac, + public WlanProtocolStackSideUmacCb, + public WlanManagementSideUmacCb, + public MWlanManagementSideUmac, + public MWlanTimerClient, + public MWlanEventDispatcherClient, + public MWlanDfcClient + { + +public: + + /** + * C++ default constructor. + */ + Umac(); + + virtual ~Umac(); + + virtual void OnTimeout( TWlanTimer aTimer ); + + virtual void OnDfc( TAny* aCtx ); + + void CompleteManagementCommand( + TInt aReason, + const TAny* aData = NULL, + TUint32 aLengthInBytes = 0 ); + + /** + * From MManagementSideUmac + * OID request handler routine + * @param aInputBuffer Pointer to the input buffer (set-operations) + * @param aInputBufferSize Size of the buffer pointed to by aInputBuffer + * @param aOutputBuffer Pointer to the output buffer (query-operations) + * @param aOutputBufferSize Size of the buffer pointed to by aOutputBuffer + * @return Status of the operation see #TStatus + */ + virtual void HandleOid( + const TOIDHeader* aOid, + TAny* aOutputBuffer, + TUint aOutputBufferSize ); + + /** + * From MManagementSideUmac + */ + virtual void AttachWsa( WHA::Wha* aWha ); + virtual TBool Init(); + virtual void BootUp( + const TUint8* aPda, + TUint32 aPdaLength, + const TUint8* aFw, + TUint32 aFwLength ); + + virtual void FinitSystem(); + + // From MWlanProtocolStackSideUmac + + virtual const TMacAddress& StationId() const; + + /** + * Triggers the setting of the Tx offset on the protocol stack side for + * every frame type which can be transmitted + */ + virtual void SetTxOffset(); + + /** + * Transmit a protocol stack frame + * + * The frame to be sent needs to be in 802.3 format + * @param aDataBuffer meta header of the frame to be transmitted + * @param aMore ETrue if another frame is also ready to be transmitted + * EFalse otherwise + */ + virtual void TxProtocolStackData( + TDataBuffer& aDataBuffer, + TBool aMore ); + + /** + * Gets the WLAN vendor needs for extra space (bytes) in frame buffers + * + * @param aRxOffset How much extra space needs to be reserved + * in the Rx buffer before every Rx frame that is received from the + * WHA layer. + * @param aTxHeaderSpace How much extra space needs to be reserved + * in the Tx buffer before every Tx frame that is given to the + * WHA layer. + * @param aTxTrailerSpace How much extra space needs to be reserved + * in the Tx buffer after every Tx frame that is given to the + * WHA layer. + */ + virtual void GetFrameExtraSpaceForVendor( + TUint8& aRxOffset, + TUint8& aTxHeaderSpace, + TUint8& aTxTrailerSpace ) const; + + /** + * From MWlanProtocolStackSideUmac + * Is protocol stack side transmission permitted + * + * @param aTxQueueState If the return value is ETrue, the state + * (full / not full) of every WHA transmit queue. Otherwise, not + * valid. + * Note! A frame shall not be submitted to a full queue - even if + * the return value would be ETrue + * @return ETrue if Tx frame submission is permitted + * EFalse if Tx frame submission is not permitted + */ + virtual TBool TxPermitted( TWhaTxQueueState& aTxQueueState ) const; + + /** + * From MWlanProtocolStackSideUmac + * Is user data Tx enabled + * + * @return ETrue if user data Tx is enabled + * EFalse if user data Tx is not enabled + */ + virtual TBool UserDataTxEnabled() const; + + virtual void WriteMgmtFrame(TDataBuffer& aDataBuffer); + +private: + + /** + * Connect OID request handler + * @param aInputBuffer Pointer to the input buffer + * @return ETrue if a state transition occurred + * EFalse otherwise + */ + virtual TBool HandleConnect(const TAny *aInputBuffer); + + /** + * Start IBSS OID request handler + * @param aInputBuffer Pointer to the input buffer + * @return ETrue if a state transition occurred + * EFalse otherwise + */ + virtual TBool HandleStartIBSS(const TAny *aInputBuffer); + + /** + * Disconnect OID request handler + * @return ETrue if a state transition occurred + * EFalse otherwise + */ + virtual TBool HandleDisconnect(); + + /** + * Set power mode OID request handler + * @param aInputBuffer Pointer to the input buffer + * @return ETrue if a state transition occurred + * EFalse otherwise + */ + virtual TBool HandleSetPowerMode(const TAny *aInputBuffer); + + /** + * Set RCPI trigger level OID request handler + * @param aInputBuffer Pointer to the input buffer + * @return ETrue if a state transition occurred + * EFalse otherwise + */ + virtual TBool HandleSetRcpiTriggerLevel(const TAny *aInputBuffer); + + /** + * Set Tx power level OID request handler + * @param aInputBuffer Pointer to the input buffer + * @return ETrue if a state transition occurred + * EFalse otherwise + */ + virtual TBool HandleSetTxPowerLevel(const TAny *aInputBuffer); + + /** + * Configure OID request handler + * @param aInputBuffer Pointer to the input buffer + * @return ETrue if a state transition occurred + * EFalse otherwise + */ + virtual TBool HandleConfigure(const TAny *aInputBuffer); + + /** + * Scan OID request handler + * @param aInputBuffer Pointer to the input buffer + * @return ETrue if a state transition occurred + * EFalse otherwise + */ + virtual TBool HandleScan(const TAny *aInputBuffer); + + /** + * Stop scan OID request handler + * + * @since S60 3.2 + * @return ETrue if a state transition occurred + * EFalse otherwise + */ + TBool HandleStopScan(); + + /** + * Get last RCPI OID request handler + * @return ETrue if a state transition occurred + * EFalse otherwise + */ + virtual TBool HandleGetLastRcpi(); + + /** + * Disable user data OID request handler + * @return ETrue if a state transition occurred + * EFalse otherwise + */ + virtual TBool HandleDisableUserData(); + + /** + * Enable user data OID request handler + * @return ETrue if a state transition occurred + * EFalse otherwise + */ + virtual TBool HandleEnableUserData(); + + /** + * Add cipher key OID request handler + * @return ETrue if a state transition occurred + * EFalse otherwise + */ + virtual TBool HandleAddCipherKey(const TAny *aInputBuffer); + + /** + * Add multicast address OID request handler + * @return ETrue if a state transition occurred + * EFalse otherwise + */ + virtual TBool HandleAddMulticastAddr(const TAny *aInputBuffer); + + /** + * Remove multicast address OID request handler + * @return ETrue if a state transition occurred + * EFalse otherwise + */ + virtual TBool HandleRemoveMulticastAddr(const TAny *aInputBuffer); + + /** + * BSS lost configure OID request handler + * @return ETrue if a state transition occurred + * EFalse otherwise + */ + virtual TBool HandleConfigureBssLost(const TAny *aInputBuffer); + + /** + * Set Tx rate adaptation parameters OID request handler + * @return ETrue if a state transition occurred + * EFalse otherwise + */ + virtual TBool HandleSetTxRateAdaptParams(const TAny *aInputBuffer); + + /** + * Configure Tx rate policies OID request handler + * @return ETrue if a state transition occurred + * EFalse otherwise + */ + virtual TBool HandleConfigureTxRatePolicies(const TAny *aInputBuffer); + + /** + * Set power mode management parameters OID request handler + * @return ETrue if a state transition occurred + * EFalse otherwise + */ + virtual TBool HandleSetPowerModeMgmtParams(const TAny *aInputBuffer); + + /** + * Configure PS Mode Traffic Override OID request handler + * @return ETrue if a state transition occurred + * EFalse otherwise + */ + virtual TBool HandleConfigurePwrModeMgmtTrafficOverride( + const TAny *aInputBuffer ); + + /** + * Get Frame Statistics OID request handler + * @return ETrue if a state transition occurred + * EFalse otherwise + */ + virtual TBool HandleGetFrameStatistics(); + + /** + * Configure U-APSD OID request handler + * @return ETrue if a state transition occurred + * EFalse otherwise + */ + virtual TBool HandleConfigureUapsd( const TAny *aInputBuffer ); + + /** + * Configure Tx Queue OID request handler + * @return ETrue if a state transition occurred + * EFalse otherwise + */ + virtual TBool HandleConfigureTxQueue( const TAny *aInputBuffer ); + + /** + * Get MAC Address OID request handler + * @return ETrue if a state transition occurred + * EFalse otherwise + */ + virtual TBool HandleGetMacAddress(); + + /** + * Configure ARP IP Address Filtering OID request handler + * @return ETrue if a state transition occurred + * EFalse otherwise + */ + virtual TBool HandleConfigureArpIpAddressFiltering( + const TAny *aInputBuffer ); + + /** + * Configure HT Block Ack OID request handler + * @return ETrue if a state transition occurred + * EFalse otherwise + */ + virtual TBool HandleConfigureHtBlockAck( const TAny *aInputBuffer ); + + /** + * Configure Proprietary SNAP Header OID request handler + * @return ETrue if a state transition occurred + * EFalse otherwise + */ + virtual TBool HandleConfigureProprietarySnapHdr( + const TAny *aInputBuffer ); + + /** + * + */ + virtual TBool OnWhaCommandComplete( + WHA::TCompleteCommandId aCompleteCommandId, + WHA::TStatus aStatus, + const WHA::UCommandCompletionParams& aCommandCompletionParams ); + + /** + * + */ + virtual TBool OnInternalEvent( TInternalEvent aInternalEvent ); + + // Prohibit copy constructor + Umac( const Umac& ); + // Prohibit assigment operator + Umac& operator= ( const Umac& ); + +private: // Data + + /** pointer to our implementation details (pimpl-idiom) */ + WlanContextImpl* iPimpl; + + TBool iManagementRequestPending; + WlanManagementSideUmacCb::SOidOutputData iOidOutputData; + }; + +#endif // UMAC_H +