--- /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 <wha.h>
+#else
+#include <wlanwha.h>
+#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
+