diff -r 000000000000 -r c40eb8fe8501 wlan_bearer/wlanldd/wlan_symbian/wlanldd_symbian/inc/WlanLogicalDevice.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/wlan_bearer/wlanldd/wlan_symbian/wlanldd_symbian/inc/WlanLogicalDevice.h Tue Feb 02 02:03:13 2010 +0200 @@ -0,0 +1,167 @@ +/* +* 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 DWlanLogicalDevice class. +* +*/ + +/* +* %version: 14 % +*/ + +#ifndef WLANLOGICALDEVICE_H +#define WLANLOGICALDEVICE_H + +#include "RWlanLogicalChannel.h" +#include "Umac.h" + +#ifdef RD_WLAN_DDK +#include "osa.h" +#endif + + +class WlanChunk; + +/** + * Device factory for logical channel + * @since S60 v3.1 + */ +class DWlanLogicalDevice : public DLogicalDevice +#ifdef RD_WLAN_DDK + , public WlanObject +#endif + { + +public: + + // Interface integrity version check class + class TCaps + { + public: + TVersion iVersion; + }; + + DWlanLogicalDevice(); + + virtual ~DWlanLogicalDevice(); + + /** + * Second stage constructor for derived objects. + * This must at least set a name for the driver object. + * + * @since S60 3.1 + * @return KErrNone or standard error code. + */ + virtual TInt Install(); + + /** + * Gets the driver's capabilities. + * This is called in the response to an RDevice::GetCaps() request. + * + * @since S60 3.1 + * @param aDes A user-side descriptor into which capabilities information is to be wriiten. + */ + virtual void GetCaps(TDes8& aDes) const; + + /** + * Called by the kernel's device driver framework to create a Logical Channel. + * This is called in the context of the user thread (client) which requested the creation of a Logical Channel + * (e.g. through a call to RBusLogicalChannel::DoCreate). + * The thread is in a critical section. + * + * @since S60 3.1 + * @param aChannel Set to point to the created Logical Channel + * @return KErrNone or standard error code. + */ + virtual TInt Create(DLogicalChannelBase*& aChannel); + + /** + * Returns ETrue if cached frame transfer memory shall be used and + * EFalse otherwise + * + * @return See above + */ + TBool UseCachedMemory() const; + + /** + * Sets the type of frame transfer memory (cached / non-cached) that shall + * be used. + * + * @param aValue If ETrue, cached frame transfer memory shall be used + * If EFalse, cached frame transfer memory shall not be used + */ + void UseCachedMemory( TBool aValue ); + + /** + * Sets the number of extra bytes required to align Rx buffer start + * address, to be returned to WHA layer, to allocation unit boundary + */ + void SetRxBufAlignmentPadding( TInt aRxBufAlignmentPadding ); + + /** + * Returns the number of extra bytes required to align Rx buffer start + * address, to be returned to WHA layer, to allocation unit boundary + * @return See above + */ + TInt RxBufAlignmentPadding() const; + +private: // Methods + + // Prohibit copy constructor. + DWlanLogicalDevice ( const DWlanLogicalDevice & ); + // Prohibit assigment operator. + DWlanLogicalDevice & operator= ( const DWlanLogicalDevice & ); + +private: // Data + + Umac iUmac; + + /** Our dynamic DFC queue. Own */ + TDynamicDfcQue* iDfcQ; + +#ifndef RD_WLAN_DDK + /** + * mutex used to protect LDD from simultaneous execution by several + * different threads. Own + */ + DMutex* iMutex; +#else + /** + * OS abstraction object + */ + WlanOsa* iOsa; +#endif + + /** + * ETrue if cached frame transfer memory shall be used, + * EFalse otherwise + */ + TBool iUseCachedMemory; + + /** + * shared memory chunk for frame transfer between user and kernel address + * spaces. Own + */ + DChunk* iSharedMemoryChunk; + + /** Rx frame memory pool manager. Own */ + WlanChunk* iRxFrameMemoryPool; + + /** + * number of extra bytes required to align Rx buffer start address + * to be returned to WHA layer to allocation unit boundary + */ + TInt iRxBufAlignmentPadding; + }; + +#endif // WLANLOGICALDEVICE_H