wlan_bearer/wlanldd/wlan_symbian/wlanldd_symbian/inc/EtherCardApi.inl
changeset 0 c40eb8fe8501
child 22 c6a1762761b8
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/wlan_bearer/wlanldd/wlan_symbian/wlanldd_symbian/inc/EtherCardApi.inl	Tue Feb 02 02:03:13 2010 +0200
@@ -0,0 +1,186 @@
+/*
+* 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:   Implementation of RPcmNetCardIf inline methods.
+*
+*/
+
+/*
+* %version: 9 %
+*/
+
+// ---------------------------------------------------------------------------
+// 
+// ---------------------------------------------------------------------------
+//
+inline TInt RPcmNetCardIf::Open()
+	{
+	return DoCreate( 
+             LDD_NAME, 
+             VersionRequired(), 
+             KUnitEthernet, 
+             NULL, 
+             NULL );
+	}
+
+// ---------------------------------------------------------------------------
+// 
+// ---------------------------------------------------------------------------
+//
+inline TVersion RPcmNetCardIf::VersionRequired() const
+    {
+	return TVersion( 
+	            KWlanDriverMajorVersion, 
+	            KWlanDriverMinorVersion, 
+	            KWlanDriverBuildVersion );
+    }
+
+// ---------------------------------------------------------------------------
+// 
+// ---------------------------------------------------------------------------
+//
+inline void RPcmNetCardIf::ReadCancel()
+    { 
+    DoCancel( 1 << EControlReadCancel );
+    }
+
+// ---------------------------------------------------------------------------
+// 
+// ---------------------------------------------------------------------------
+//
+inline void RPcmNetCardIf::ResumeTxCancel()
+    { 
+    DoCancel( 1 << EControlResumeTxCancel );
+    }
+
+// ---------------------------------------------------------------------------
+// 
+// ---------------------------------------------------------------------------
+//
+inline TInt RPcmNetCardIf::GetConfig( TDes8& aConfig )
+    {
+    return DoControl( 
+                EControlGetConfig, 
+                const_cast<TUint8*>(aConfig.Ptr()) );
+    }
+
+// ---------------------------------------------------------------------------
+// 
+// ---------------------------------------------------------------------------
+//
+inline TInt RPcmNetCardIf::InitialiseBuffers( 
+    RFrameXferBlockProtocolStack*& aFrameXferBlock )
+    {
+    TInt status ( KErrNone );
+    
+    TSharedChunkInfo info;
+    
+    status = DoSvControl( 
+        ESvControlInitBuffers, 
+        static_cast<TAny*>(&info) );
+
+    if ( status == KErrNone )
+        {
+        // shared memory chunk initialization success
+
+        // Set the handle for the shared memory chunk
+        iSharedMemoryChunk.SetHandle( info.iChunkHandle );
+        
+        // Set the relevant user mode 
+        // addresses as offsets from the chunk base address
+
+        TUint8* baseAddress ( iSharedMemoryChunk.Base() );
+        
+        const TUint KRxDataChunkSize( 
+            info.iSize
+            - ( sizeof( TDataBuffer )
+                + KMgmtSideTxBufferLength
+                + KProtocolStackSideTxDataChunkSize
+                + sizeof( RFrameXferBlock ) 
+                + sizeof( RFrameXferBlockProtocolStack ) ) );
+
+        aFrameXferBlock = reinterpret_cast<RFrameXferBlockProtocolStack*>(
+            baseAddress
+            + KRxDataChunkSize
+            + sizeof( TDataBuffer )
+            + KMgmtSideTxBufferLength
+            + KProtocolStackSideTxDataChunkSize
+            + sizeof( RFrameXferBlock ) );
+
+        aFrameXferBlock->SetRxDataChunkField( reinterpret_cast<TLinAddr>(
+            baseAddress) );
+
+        aFrameXferBlock->SetTxDataBufferField( reinterpret_cast<TLinAddr>(
+            baseAddress
+            + KRxDataChunkSize
+            + sizeof( TDataBuffer )
+            + KMgmtSideTxBufferLength) );
+        
+        aFrameXferBlock->UserInitialize( 
+            reinterpret_cast<TUint32>(aFrameXferBlock) );
+        }
+    
+    return status;
+    }
+
+// ---------------------------------------------------------------------------
+// 
+// ---------------------------------------------------------------------------
+//
+inline TInt RPcmNetCardIf::ReleaseBuffers()
+    {
+    // close the handle to the shared memory chunk
+    iSharedMemoryChunk.Close();
+    
+    return DoSvControl( ESvControlFreeBuffers );
+    }
+
+// ---------------------------------------------------------------------------
+// 
+// ---------------------------------------------------------------------------
+//
+inline void RPcmNetCardIf::ResumeTx( TRequestStatus& aStatus )
+    {
+    DoRequest( EResumeTx, aStatus );
+    }
+
+// ---------------------------------------------------------------------------
+// 
+// ---------------------------------------------------------------------------
+//
+inline void RPcmNetCardIf::RequestFrame( TRequestStatus& aStatus )
+    {
+    DoRequest( ERequestRead, aStatus );
+    }
+
+// ---------------------------------------------------------------------------
+// 
+// ---------------------------------------------------------------------------
+//
+inline TDataBuffer* RPcmNetCardIf::AllocTxBuffer( TUint aLength )
+    {
+    return reinterpret_cast<TDataBuffer*>(DoControl( 
+        EControlFastAllocTxBuffer,
+        reinterpret_cast<TAny*>(aLength) ));
+    }
+
+// ---------------------------------------------------------------------------
+// 
+// ---------------------------------------------------------------------------
+//
+inline TBool RPcmNetCardIf::AddTxFrame( TDataBuffer* aPacket )
+    {
+    return static_cast<TBool>(DoControl( 
+        EControlFastAddTxFrame, 
+        reinterpret_cast<TAny*>(aPacket) ));
+    }