/*
* 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 WlanProtocolStackSideUmacCb class.
*
*/
/*
* %version: 14 %
*/
#ifndef WLANPROTOCOLSTACKSIDEUMACCB_H
#define WLANPROTOCOLSTACKSIDEUMACCB_H
class TDataBuffer;
/**
*
*/
class WlanProtocolStackSideUmacCb
{
public:
// dtor
virtual inline ~WlanProtocolStackSideUmacCb();
/**
*
* UMAC adaptation needs to call this method!
*/
inline void AttachProtocolStackSideUmacCb(
WlanProtocolStackSideUmacCb& aSelf );
/**
*
* UMAC adaptation needs to call this method!
*/
inline void DetachProtocolStackSideUmacCb();
/**
* Sets the Tx offset for every frame type which can be transmitted
* UMAC adaptation needs to implement this method!
*
* @param aEthernetFrameTxOffset Tx offset for Ethernet frames
*/
virtual void SetProtocolStackTxOffset(
TUint32 aEthernetFrameTxOffset );
/**
* Called when the Tx packet in question has been trasferred to the WLAN
* device.
*
* UMAC adaptation needs to implement this method!
* @param aCompletionCode Status of the operation.
* @param aMetaHeader Meta header associated with the related Tx packet
*/
virtual void OnTxProtocolStackDataComplete(
TInt aCompletionCode,
TDataBuffer* aMetaHeader );
/**
* Called when a Tx packet - submitted by someone else than the Protocol
* Stack Side Client - has been trasferred to the WLAN device.
*
* Note! TxProtocolStackData() must not be called in the same context in
* which this method is called (but instead e.g. via a DFC)!
*
* UMAC adaptation needs to implement this method!
*/
virtual void OnOtherTxDataComplete();
/**
* Called when the Tx of a frame has completed (either successfully or
* unsuccessfully).
*
* Note! TxProtocolStackData() must not be called in the same context in
* which this method is called (but instead e.g. via a DFC)!
*
* UMAC adaptation needs to implement this method!
*/
virtual void OnTxDataSent();
/**
* Completes a data read operation from protocol stack side
* UMAC adaptation needs to implement this method!
*
* @param aBufferStart first element of the array that holds pointers to
* Rx frame meta headers
* @param aNumOfBuffers number of meta header pointers in the array
* @return ETrue if this event was processed successfully
* EFalse otherwise
*/
virtual TBool ProtocolStackDataReceiveComplete(
const TDataBuffer*& aBufferStart,
TUint32 aNumOfBuffers );
/**
* Determines if the Protocol Stack Side client is ready to handle any
* callbacks from UMAC
* UMAC adaptation needs to implement this method!
*
* @return ETrue if the client is ready
* EFalse if the client is not ready
*/
virtual TBool ProtocolStackSideClientReady() const;
/**
* Indicates that WLAN Mgmt Client has (re-)enabled protocol stack side
* user data Tx.
* UMAC adaptation needs to implement this method!
* To quickly resume user data Tx after roaming, UMAC adaptation should call
* MWlanProtocolStackSideUmac::TxProtocolStackData() as soon as possible
* after receiving this indication. Note! TxProtocolStackData() must not be
* called in the same context in which this method is called (but instead
* e.g. via a DFC)!
*/
virtual void UserDataReEnabled();
protected:
WlanProtocolStackSideUmacCb() : iSelf( NULL ) {};
private:
// Prohibit copy constructor
WlanProtocolStackSideUmacCb( const WlanProtocolStackSideUmacCb& );
// Prohibit assigment operator
WlanProtocolStackSideUmacCb& operator= (
const WlanProtocolStackSideUmacCb& );
private: // Data
/** pointer to self */
WlanProtocolStackSideUmacCb* iSelf;
};
#include "UmacProtocolStackSideUmacCb.inl"
#endif // WLANPROTOCOLSTACKSIDEUMACCB_H