--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/wlan_bearer/wlannwif/etherpkt/receiver_hw.cpp Tue Feb 02 02:03:13 2010 +0200
@@ -0,0 +1,135 @@
+/*
+* 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 "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: Implements receiver class for target
+*
+*/
+
+/*
+* %version: 12 %
+*/
+
+#include <nifmbuf.h>
+#include "am_debug.h"
+#include "receiver_hw.h"
+#include "WlanProto.h"
+#include "carddrv.h"
+
+// ---------------------------------------------------------
+// CReceiver::CReceiver()
+// ---------------------------------------------------------
+//
+CReceiver::CReceiver( CPcCardPktDrv* aParent ) :
+ CActive(EPriorityStandard),
+ iParent(aParent)
+ {
+ }
+
+// ---------------------------------------------------------
+// CReceiver::ConstructL()
+// ---------------------------------------------------------
+//
+void CReceiver::ConstructL()
+ {
+ DEBUG("CReceiver::ConstructL()");
+ }
+
+// ---------------------------------------------------------
+// CReceiver::NewL()
+// ---------------------------------------------------------
+//
+CReceiver* CReceiver::NewL( CPcCardPktDrv* aParent )
+ {
+ DEBUG("CReceiver::NewL()");
+ CReceiver* self = new (ELeave) CReceiver( aParent );
+ CleanupStack::PushL( self );
+ self->ConstructL();
+ CActiveScheduler::Add( self );
+ CleanupStack::Pop( self );
+ return self;
+ }
+
+// ---------------------------------------------------------
+// CReceiver::~CReceiver()
+// ---------------------------------------------------------
+//
+CReceiver::~CReceiver()
+ {
+ DEBUG("CReceiver::~CReceiver()");
+ Cancel();
+ }
+
+// ---------------------------------------------------------
+// CReceiver::DoCancel()
+// ---------------------------------------------------------
+//
+void CReceiver::DoCancel()
+ {
+ DEBUG("CReceiver::DoCancel()");
+ iParent->iCard.ReadCancel();
+ }
+
+// ---------------------------------------------------------
+// CReceiver::QueueRead()
+// ---------------------------------------------------------
+//
+void CReceiver::QueueRead()
+ {
+ iParent->iCard.RequestFrame( iStatus );
+ SetActive();
+ }
+
+
+// ---------------------------------------------------------
+// CReceiver::RunL()
+// ---------------------------------------------------------
+//
+void CReceiver::RunL()
+ {
+ DEBUG("CReceiver::RunL()" );
+
+ while( iParent->iFrameXferBlock->GetNextRxDataBuffer( iDataBuffer ) )
+ {
+ TUint8* buf = iDataBuffer->GetBuffer();
+ TUint32 len = iDataBuffer->GetLength();
+
+ //Save the original buf value which points
+ //to the beginning of the Ethernet header
+ TUint8* bufOrig = buf;
+
+ DEBUG1("CReceiver::RunL() - packet length: %u", len );
+
+ if( buf && len > 0 && len <= KMaxEthernetFrameLength )
+ {
+ //Now set buf point to the beginning of the Payload
+ buf = buf + KEtherHeaderSize;
+
+ len = len - KEtherHeaderSize;
+
+ TPtrC8 pkt(buf, len);
+ RMBufPacket pFrame; //Payload
+ TRAPD( ret, pFrame.CreateL( pkt ) );
+ if( ret == KErrNone )
+ {
+ pFrame.Pack();
+
+ iParent->iParent->Process( pFrame, bufOrig, iDataBuffer->UserPriority() );
+ }
+ }
+ }
+
+ if( iParent->CardOpen() )
+ {
+ QueueRead();
+ }
+ }