linklayerprotocols/ethernetnif/INC/carddrv.h
author Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Mon, 21 Jun 2010 17:25:18 +0300
branchRCL_3
changeset 40 d566d76acea1
parent 0 af10295192d8
permissions -rw-r--r--
Revision: 201025 Kit: 2010125

// 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 of packet driver interface for the ethernet packet driver
// 
//

/**
 @file 
 @internalComponent 
*/

#if !defined(__CARDDRV_H__)
#define __CARDDRV_H__

#include "eth_log.h"
#ifdef SYMBIAN_ENABLE_SPLIT_HEADERS
#include <comms-infras/nifprvar_internal.h>
#endif


const TInt KEtherBufSize = 1540;
const TUint KPcCardDrvMajorVersionNumber=1;
const TUint KPcCardDrvMinorVersionNumber=0;
const TUint KPcCardDrvBuildVersionNumber=1;

/**
@internalComponent
*/
NONSHARABLE_CLASS(CPcCardPktDrvFactory) : public CPktDrvFactory
{
public:
	CPcCardPktDrvFactory();
	virtual CPktDrvBase* NewDriverL(CLANLinkCommon* aParent);
	virtual TVersion Version() const;
};

class CPcCardControlEngine;
/**
@internalComponent
*/
NONSHARABLE_CLASS(CPcCardPktDrv) : public CPktDrvBase
{
public: 
	CPcCardPktDrv(CPktDrvFactory& aFactory);
	virtual ~CPcCardPktDrv();
	virtual void ConstructL(CLANLinkCommon* aParent);
	virtual TInt StartInterface();
	virtual TInt StopInterface();
	virtual TInt ResetInterface();
	virtual TInt SetRxMode(TRxMode AMode); 
	virtual TInt GetRxMode() const;
	virtual TInt AccessType();
	virtual TInt ReleaseType();
	virtual TInt SetInterfaceAddress(const THWAddr&);
	virtual TUint8* GetInterfaceAddress()const;
	virtual TInt GetMulticastList(const THWAddr* aAddr, TInt& n) const;
	virtual TInt SetMulticastList(const THWAddr* aAddr, TInt n);
	virtual TInt InterfacePowerUp();
	virtual TInt InterfacePowerDown();
	virtual TInt InterfaceSleep();
	virtual TInt InterfaceResume();
	virtual TInt Notification(enum TAgentToNifEventType aEvent, void* aInfo);
	virtual TInt Control(TUint aLevel,TUint aName,TDes8& aOption, TAny* aSource=0);

	// Upcall from Control Object
	void ReadDataAvailable(TDesC8& aBuffer);
	void ResumeSending();
	CLANLinkCommon* NifNotify();

	virtual TInt Send(RMBufChain& aPkt); //< CPktDrvBase
	void LinkLayerUp();

private: 
	CPcCardControlEngine* iControl;
#ifdef __LOGDEB__
	RFs iFs;
#endif

};

#endif