wlan_bearer/wlanldd/wlan_symbian/wlanldd_symbian/inc/WlanLogicalDevice.h
changeset 0 c40eb8fe8501
--- /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