diff -r 000000000000 -r c40eb8fe8501 wlan_bearer/wlanldd/wlan_common/umac_common/inc/UmacDot11InfrastructureMode.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/wlan_bearer/wlanldd/wlan_common/umac_common/inc/UmacDot11InfrastructureMode.h Tue Feb 02 02:03:13 2010 +0200 @@ -0,0 +1,349 @@ +/* +* 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 WlanDot11InfrastructureMode class +* +*/ + +/* +* %version: 34 % +*/ + +#ifndef WLANDOT11INFRASTRUCTUREMODE_H +#define WLANDOT11INFRASTRUCTUREMODE_H + +#include "UmacDot11Associated.h" + +class WlanElementLocator; + +/** +* This is a state where STA has succesfully +* authenticated and associated to a infrastructuremode network +*/ +class WlanDot11InfrastructureMode : public WlanDot11Associated + { +public: + + /** + * Connect (authenticate and associate) to a BSS. + * As we are already connected, this means actually roaming. + * + * @since S60 3.1 + * @param aCtxImpl statemachine context + * @param aSSID Name of the network + * @param aBSSID BSSID of the access point + * @param aAuthAlgorithmNbr Authentication algorithm number to be used + * @param aEncryptionStatus Used encryption level + * @param aIsInfra ETrue when connecting to infrastructure network + * @param aScanResponseFrameBodyLength length of the scan response frame body + * @param aScanResponseFrameBody scan response frame body + * @param aIeData The IE(s) to be included into the (re-)association request. + * NULL, if none to be included + * @param aIeDataLength Length of the IE(s) to be included into the + * (re-)association request + * @return ETrue if a state transition occurred + * EFalse otherwise + */ + virtual TBool Connect( + WlanContextImpl& aCtxImpl, + const TSSID& aSSID, + const TMacAddress& aBSSID, + TUint16 aAuthAlgorithmNbr, + TEncryptionStatus aEncryptionStatus, + TBool aIsInfra, + TUint16 aScanResponseFrameBodyLength, + const TUint8* aScanResponseFrameBody, + const TUint8* aIeData, + TUint16 aIeDataLength ); + + /** + * Connect (authenticate and associate) to a BSS. + * As we are already connected, this means actually roaming. + * + * @since S60 3.1 + * @param aCtxImpl statemachine context + * @param aSSID Name of the network. + * @param aBSSID BSSID of the access point. + * @param aAuthAlgorithmNbr Authentication algorithm number to be used + * @param aEncryptionStatus Used encryption level. + * @return KErrNone = command completed successfully, + * any other = failure + */ + TBool Connect( + WlanContextImpl& aCtxImpl, + const TSSID& aSSID, + const TMacAddress& aBSSID, + TUint16 aAuthAlgorithmNbr, + TEncryptionStatus aEncryptionStatus ); + +protected: + + /** + * C++ default constructor. + */ + WlanDot11InfrastructureMode() {}; + + /** + * Destructor. + */ + virtual ~WlanDot11InfrastructureMode() {}; + + virtual void DoSetTxMpduDaAddress( + SDataFrameHeader& aDataFrameHeader, + const TMacAddress& aMac ) const; + + virtual TBool DoIsRxFrameSAourAddress( + WlanContextImpl& aCtxImpl, + const SDataFrameHeader& aFrameHeader, + const SAmsduSubframeHeader* aSubFrameHeader ) const; + + virtual TBool DoIsValidAddressBitCombination( + const SDataFrameHeader& aFrameHeader ) const; + + virtual void DoBuildEthernetFrame( + TDataBuffer& aBuffer, + const SDataMpduHeader& aDot11DataMpdu, + const TUint8* aStartOfEtherPayload, + TUint aEtherPayloadLength, + TBool aAmsdu, + TUint8* aCopyBuffer ); + + /** + * Indicates Consecutive 802.11 Power Management Mode Set Failures + * to WLAN Mgmt Client; if necessary + * + * @since S60 5.0 + * @param aCtxImpl global statemachine context + */ + virtual void DoConsecutivePwrModeSetFailuresIndication( + WlanContextImpl& aCtxImpl ); + +private: + + /** + * Set trigger level for RCPI trigger. + * @param aCtxImpl statemachine context + * @param aRcpiTrigger RCPI trigger level + * @return ETrue if a state change occurred in the state machine + * EFalse otherwise + */ + virtual TBool SetRcpiTriggerLevel( + WlanContextImpl& aCtxImpl, + TUint32 aRcpiTrigger); + + /** + * Updates the RCPI Trigger Level MIB + * + * @since Series 60 3.1 + * @param aCtxImpl Global statemachine context + * @param aRcpiTrigger the value to assign to the MIB + * @param aCompleteManagementRequest ETrue if this request came from the + * WLAN Mgmt client and that request + * needs to be completed. + * EFalse otherwise. + * @return ETrue if state transition occurred, EFalse otherwise + */ + virtual TBool SetRcpiTriggerLevelMib( + WlanContextImpl& aCtxImpl, + TUint32 aRcpiTrigger, + TBool aCompleteManagementRequest ); + + /** + * Validates our current ERP parameters + * + * @param aCtxImpl statemachine context + * @param aElementLocator + */ + void ValidateErpParams( + WlanContextImpl& aCtxImpl, + WlanElementLocator& aElementLocator ); + + /** + * Validates our current QoS AC parameters + * + * @param aCtxImpl statemachine context + * @param aElementLocator + */ + void ValidateAcParams( + WlanContextImpl& aCtxImpl, + WlanElementLocator& aElementLocator ); + + /** + * Validates our current HT operation parameters + * + * @param aCtxImpl statemachine context + * @param aElementLocator + */ + void ValidateHtBssOperationParams( + WlanContextImpl& aCtxImpl, + WlanElementLocator& aElementLocator ); + + /** + * Called upon receiving a deauthentication frame + * @param aCtxImpl statemachine context + * @param aBuffer pointer to the beginning of the Rx buffer allocated + * for the frame + */ + virtual void OnDeauthenticateFrameRx( + WlanContextImpl& aCtxImpl, + TUint8* aBuffer ); + + /** + * Called upon receiving a disassociation frame + * @param aCtxImpl statemachine context + * @param aBuffer pointer to the beginning of the Rx buffer allocated + * for the frame + */ + virtual void OnDisassociateFrameRx( + WlanContextImpl& aCtxImpl, + TUint8* aBuffer ); + + /** + * Called upon receiving a beacon type frame + * + * @param aCtxImpl statemachine context + * @param aRcpi RCPI of the frame + * @param aBuffer pointer to the beginning of the Rx buffer allocated + * for the frame + */ + virtual void OnBeaconFrameRx( + WlanContextImpl& aCtxImpl, + const TAny* aFrame, + const TUint32 aLength, + WHA::TRcpi aRcpi, + TUint8* aBuffer ); + + /** + * Disconnect STA from current network. + * @param aCtxImpl statemachine context + * @return KErrNone = command completed successfully, + * any other = failure + */ + virtual TBool Disconnect( WlanContextImpl& aCtxImpl ); + + /** + * Write for management data + * The frame to be sent needs to be in 802.3 format + * Data is copied to NIC's Tx queue. That normally succeeds, but in + * the event the Tx queue is full copying is deferred to a + * more appropriate time -> TxCompleted function + * @param aCtxImpl statemachine context + * @param aDataBuffer meta header of the frame to be transmitted + */ + virtual void TxMgmtData( + WlanContextImpl& aCtxImpl, + TDataBuffer& aDataBuffer ); + + /** + * Scan all available networks. + * This SW module decides is background scan or foreground scan used + * @param aCtxImpl statemachine context + * @param aMode passive or active scan see #TScanMode + * @param aSSID Network that APs are scanned. Can be broadcast SSID. + * @param aScanRate Rate that is used in active scanning + * @param aMinChannelTime min. time to listen beacons/probe responses on + * a channel + * @param aMaxChannelTime max. time to listen beacons/probe responses on + * a channel + * @param aSplitScan if ETrue, use split scan + * @return KErrNone = command completed successfully, + * any other = failure + */ + virtual TBool RealScan( + WlanContextImpl& aCtxImpl, + TScanMode aMode, + const TSSID& aSSID, + TUint32 aScanRate, + SChannels& aChannels, + TUint32 aMinChannelTime, + TUint32 aMaxChannelTime, + TBool aSplitScan ); + + virtual void DoRcpiIndication( + WlanContextImpl& aCtxImpl, + WHA::TRcpi aRcpi ); + + /** + * Indicates that the WLAN device has detected problems in the power + * save mode operation of the AP + * + * @param aCtxImpl global statemachine context + */ + virtual void DoPsModeErrorIndication( WlanContextImpl& aCtxImpl ); + + /** + * Voice Call Entry timer timeout function + * + * @since S60 v3.2 + * @param aCtxImpl statemachine context + * @return ETrue if a state change occurred in the state machine + * EFalse otherwise + */ + virtual TBool OnVoiceCallEntryTimerTimeout( WlanContextImpl& aCtxImpl ); + + /** + * Null timer timeout function + * + * @since S60 v3.2 + * @param aCtxImpl statemachine context + * @return ETrue if a state change occurred in the state machine + * EFalse otherwise + */ + virtual TBool OnNullTimerTimeout( WlanContextImpl& aCtxImpl ); + + /** + * No Voice timer timeout function + * + * @since S60 v3.2 + * @param aCtxImpl statemachine context + * @return ETrue if a state change occurred in the state machine + * EFalse otherwise + */ + virtual TBool OnNoVoiceTimerTimeout( WlanContextImpl& aCtxImpl ); + + /** + * To be called upon Keep Alive Timer timeout + * + * @since S60 3.2 + * @param aCtxImpl statemachine context + * @return ETrue if a state change occurred in the state machine + * EFalse otherwise + */ + virtual TBool OnKeepAliveTimerTimeout( WlanContextImpl& aCtxImpl ); + + virtual TBool OnWlanWakeUpIntervalChange( WlanContextImpl& aCtxImpl ); + + /** + * Request to send a Null Data Frame + * + * @since S60 v3.2 + * @param aCtxImpl statemachine context + * @param aQosNull ETrue if a QoS Null Data frame should be transmitted + * EFalse if a regular Null Data frame should be transmitted + * @return ETrue if the send request was successfully submitted + * EFalse otherwise + */ + virtual TBool TxNullDataFrame( + WlanContextImpl& aCtxImpl, + TBool aQosNull ); + + + // Prohibit copy constructor. + WlanDot11InfrastructureMode( + const WlanDot11InfrastructureMode& ); + // Prohibit assigment operator. + WlanDot11InfrastructureMode& operator= ( + const WlanDot11InfrastructureMode& ); + }; + +#endif // WLANDOT11INFRASTRUCTUREMODE_H