linklayerprotocols/ethernetnif/EthInt/CLanxBearer.cpp
author Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Tue, 26 Jan 2010 15:23:49 +0200
changeset 0 af10295192d8
permissions -rw-r--r--
Revision: 201004

// Copyright (c) 1997-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:
// Implementation CLanxBearer class, a derived from CNifIfBase.
// History
// 15/11/01 Started by Julian Skidmore. 
// 00572     RMBufPktInfo* info = RMBufPacket::PeekInfoInChain(aPacket);
// 00573     TUint prot = TPppAddr::Cast(info->iDstAddr).GetProtocol();
// 00574 
// 
//

/**
 @file
*/

#include <in_sock.h> // Header is retained, but in_sock.h is modified for ipv6
#include <in_iface.h> // Gone.
#include "CLanxBearer.h"
#include "EthProto.h"

using namespace ESock;

/**
Constructor. Initialises the link layer object iLink  and the notifier iNotify (inherited 
from CNIfIfBase) to aLink and aNotify respectively.
@param aLink A pointer to the Link Layer object.
@param aNotify A pointer to the notifier.
*/
CLanxBearer::CLanxBearer(CLANLinkCommon* aLink):iLink(aLink), iSoIfConnectionInfoCached(false)
{
}

/**
ConstructL method. Does nothing (CLanxBearer has no memory allocating objects).
*/
void  CLanxBearer::ConstructL()
{
}

/**
StartSending notifies the protocol that this object is ready to transmit and process data. 
CLanxBearer provides a default implementation which calls the iProtocol's StartSending method, 
passing this as input.
@param aProtocol A pointer to the object which signalled it is ready to StartSending.
*/
void CLanxBearer::StartSending(CProtocolBase* /*aProtocol*/)
	{
	// Default implementation.
	iUpperControl->StartSending();
	}

void CLanxBearer::UpdateMACAddr()
	{	
	} // default implementation

// MLowerControl methods

TInt CLanxBearer::GetName(TDes& aName)
/**
Return the interface name

@param aName Out parameter to return the name
@return KErrNone
*/
	{
	aName.Copy(iIfName);
	return KErrNone;
	}

	
TInt CLanxBearer::BlockFlow(MLowerControl::TBlockOption /*aOption*/)
	{
	return KErrNotSupported;
	}

//
// Utilities
// 

void CLanxBearer::SetUpperPointers(MUpperDataReceiver* aReceiver, MUpperControl* aControl)
	{
	ASSERT(iUpperReceiver == NULL && iUpperControl == NULL);
	iUpperReceiver = aReceiver;
	iUpperControl = aControl;
	}

TBool CLanxBearer::MatchesUpperControl(const ESock::MUpperControl* aUpperControl) const
/**
Check whether the passed MUpperControl matches that associated with the current instance
*/
	{
	ASSERT(iUpperControl);
	return iUpperControl == aUpperControl;
	}