wlan_bearer/wlanldd/wlan_common/umac_common/inc/UmacManagementSideUmacCb.h
changeset 0 c40eb8fe8501
child 17 a828660c511c
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/wlan_bearer/wlanldd/wlan_common/umac_common/inc/UmacManagementSideUmacCb.h	Tue Feb 02 02:03:13 2010 +0200
@@ -0,0 +1,175 @@
+/*
+* 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 WlanManagementSideUmacCb class.
+*
+*/
+
+/*
+* %version: 17 %
+*/
+
+#ifndef WLANMANAGEMENTSIDEUMACB_H
+#define WLANMANAGEMENTSIDEUMACB_H
+
+class TDataBuffer;
+struct TMacAddress;
+
+/**
+* Callback interface class for oid completion and stuff
+*/
+class WlanManagementSideUmacCb
+    {
+public:  // Types
+
+    struct SOidOutputData
+        {
+        public:
+
+            TUint32 iOidId;
+            TAny*   iBufferSupplied;
+            TUint32 iLengthOfBufferSupplied;
+
+            const TAny* iOidData;
+            TUint32     iLengthOfDataInBytes;
+
+            SOidOutputData() 
+                : iOidId( 0 ), 
+                iBufferSupplied( NULL ),
+                iLengthOfBufferSupplied( 0 ),
+                iOidData( NULL ),
+                iLengthOfDataInBytes( 0 ) {};
+
+        private:
+            
+            /** Prohibit assignment operator */
+            SOidOutputData& operator= ( const SOidOutputData& aObj );    
+            /** Prohibit copy constructor */
+            SOidOutputData( const SOidOutputData& );
+        };
+
+public:
+    
+    // dtor
+    virtual ~WlanManagementSideUmacCb();
+
+    void Attach( WlanManagementSideUmacCb& aSelf ); 
+    void Detach(); 
+
+    /**
+    * Called from statemachine when oid has been completed. 
+    * Triggers handling of a new oid
+    * @param aOid OID handled
+    * @param aReason completion code
+    */
+    virtual void OnOidCompleted( TInt aReason, SOidOutputData& OidOutputData );
+
+    /**
+    * Sets the Tx offset for every frame type which can be transmitted
+    *
+    * @since S60 5.0
+    * @param aEthernetFrameTxOffset Tx offset for Ethernet frames and Ethernet
+    *        Test frames
+    * @param aDot11FrameTxOffset Tx offset for 802.11 frames
+    * @param aSnapFrameTxOffset Tx offset for SNAP frames
+    */
+    virtual void SetMgmtSideTxOffsets( 
+        TUint32 aEthernetFrameTxOffset,
+        TUint32 aDot11FrameTxOffset,
+        TUint32 aSnapFrameTxOffset ); 
+
+    /**
+    * Gets buffer for Rx data
+    * @param aLengthinBytes Requested buffer length
+    * @return buffer for Rx data upon success
+    *         NULL otherwise
+    */
+    virtual TUint8* GetBufferForRxData( TUint aLengthinBytes );
+
+    /**
+     * Get DMA xfer suitable Tx buffer for UMAC's internal use
+     *
+     * @since S60 3.1
+     * @returns begin of the memory that can be used for DMA xfer 
+     */
+    virtual TUint8* DmaPrivateTxMemory();
+    
+    /**
+    * Completes a data read operation from management side
+    *
+    * @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
+    */
+    virtual void MgmtDataReceiveComplete( 
+        const TDataBuffer*& aBufferStart, 
+        TUint32 aNumOfBuffers );
+
+    /**
+    * Completes a data write operation from management side
+    * @param aErr completion code 
+    */
+    virtual void MgmtPathWriteComplete( TInt aErr );
+
+    /**
+    * Sends a indication to the management side
+    * @param aIndication indication code 
+    */
+    virtual void OnInDicationEvent( TIndication aIndication );
+
+    /**
+    * Frees the specified Rx frame buffer
+    *
+    * @param aBufferToFree The buffer to free
+    */
+    virtual void MarkRxBufFree( TUint8* aBufferToFree );
+
+    virtual void RegisterTimeout( 
+        TUint32 aTimeoutInMicroSeconds, 
+        TWlanTimer aTimer = EWlanDefaultTimer );
+    virtual void CancelTimeout( TWlanTimer aTimer = EWlanDefaultTimer );
+
+    virtual void RegisterDfc( TAny* aCntx );
+    virtual void CancelDfc();
+
+    /**
+    * Allocates Rx frame meta header
+    * @return Rx frame meta header upon success
+    *         NULL otherwise
+    */
+    virtual TDataBuffer* GetRxFrameMetaHeader();
+
+    /**
+    * Deallocates Rx frame meta header
+    * @param aMetaHeader Meta header to deallocate
+    */
+    virtual void FreeRxFrameMetaHeader( TDataBuffer* aMetaHeader );
+    
+protected:
+
+    WlanManagementSideUmacCb() : iSelf( NULL ) {};
+
+private:
+    
+    // Prohibit copy constructor 
+    WlanManagementSideUmacCb( const WlanManagementSideUmacCb& );
+    // Prohibit assigment operator 
+    WlanManagementSideUmacCb& operator= ( const WlanManagementSideUmacCb& );   
+
+private: // Data
+
+    /** pointer to self */
+    WlanManagementSideUmacCb* iSelf;
+    };
+
+#endif      // WLANMANAGEMENTSIDEUMACB_H