diff -r 000000000000 -r af10295192d8 linklayerprotocols/ethernetnif/INC/PKTDRV.H --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/linklayerprotocols/ethernetnif/INC/PKTDRV.H Tue Jan 26 15:23:49 2010 +0200 @@ -0,0 +1,192 @@ +// 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: +// + +/** + @file + @publishedPartner + @released +*/ + +#if !defined(__PKTDRV_H__) +#define __PKTDRV_H__ + +#include +#include + +/** +Uid2 for all pkt drv +@publishedPartner +@released +@since v8.1 (internalComponent from v5.0u) +*/ +const TInt KUidNifmanPktDrv = 0x1000053F; + +/** +@publishedPartner +@released +*/ +_LIT(KPacketDriverFileExtension, ".drv"); + +/** +@publishedPartner +@released +*/ +const TInt KIeee802AddrSize = 0x06; + +/** +An IEEE802-assigned address +@note This should be compatible with TBTDevAddr +@publishedPartner +@released +@since v8.1 +*/ +class TIeee802Addr +{ +public: +/* + // Commented out until we converge with Bluetooth definitions - these methods will then be defined + inline TBool operator==(const TIeee802Addr& aAddr) const; + inline TBool operator!=(const TIeee802Addr& aAddr) const; + inline const TUint8 &operator[](TInt aIndex) const; + inline TUint8 &operator[](TInt aIndex); + inline TPtr8 Des(); //< Access value as a bigendian descriptor + inline const TPtrC8 Des() const; + IMPORT_C TInt SetReadable(const TDesC& aSource); + inline void GetReadable(TDes& aDest) const; + IMPORT_C void GetReadable(TDes& aDest, const TDesC& aPrepend, const TDesC& aByteSeperator, const TDesC& aAppend) const; +*/ + IMPORT_C void Reset(); //< Zero fill +protected: + IMPORT_C TIeee802Addr(); + IMPORT_C TIeee802Addr(const TInt64 &aInt); //< Construct from a TInt64 + IMPORT_C TIeee802Addr(const TDesC8 &aDes); //< Construct from a buffer +private: + TFixedArray iAddr; +}; + +/** +An ethernet or IEEE802.3 address. +No special implementation at the moment +@publishedPartner +@released +@since v8.1 +*/ +class TEthernetAddr : public TIeee802Addr +{ + public: + IMPORT_C TEthernetAddr(); + IMPORT_C TEthernetAddr(const TInt64 &aInt); //< Construct from a TInt64 + IMPORT_C TEthernetAddr(const TDesC8 &aDes); //< Construct from a buffer +}; + +typedef TEthernetAddr THWAddr; // for SC with code that uses THWAddr (note: SetAddress() method missing, so not full SC) + +/** +@publishedPartner +@released +@since v8.1 (internalComponent from v5.0u) +*/ +class TPacketDriverStats +{ +public: + TUint8 iPacketsIn; + TUint8 iPacketsOut; + TUint8 iBytesIn; + TUint8 iBytesOut; + TUint8 iErrorsIn; + TUint8 iErrorsOut; + TUint8 iPacketsLost; +}; + +class CPktDrvBase; +class CLANLinkCommon; +class CEther802LLCBase; +/** +@publishedPartner +@released +@since v8.1 (internalComponent from v5.0u) +*/ +class CPktDrvFactory : public CObject +{ +public: + virtual CPktDrvBase* NewDriverL(CLANLinkCommon* aParent)=0; + void Install( RLibrary& aLib ); + IMPORT_C virtual void Close(); + virtual TVersion Version() const=0; +public: + RLibrary iLib; +}; + +class RMBufChain; + +/** +@publishedPartner +@released +@since v8.1 (internalComponent from v5.0u) +*/ +class CPktDrvBase : public CBase +{ +public: + enum TRxMode {RxOff, RxPhysicalAddr, RxBroadcast, + RxSomeMulticast, RxAllMulticast, RxPromiscuous}; +public: + IMPORT_C CPktDrvBase(CPktDrvFactory& aFactory); + IMPORT_C ~CPktDrvBase(); + IMPORT_C void SetNameL(const TDesC& aName); + virtual void ConstructL(CLANLinkCommon* aParent)=0; + virtual TInt Send(RMBufChain& aPkt)=0; + virtual TInt StartInterface()=0; + virtual TInt StopInterface()=0; + virtual TInt ResetInterface()=0; + virtual TInt SetRxMode(TRxMode AMode)=0; + virtual TInt GetRxMode() const=0; + virtual TInt SetInterfaceAddress(const THWAddr&)=0; + virtual TUint8* GetInterfaceAddress()const=0; + virtual TInt GetMulticastList(const THWAddr* aAddr, TInt& n) const=0; + virtual TInt SetMulticastList(const THWAddr* aAddr, TInt n)=0; + virtual TInt InterfacePowerUp()=0; + virtual TInt InterfacePowerDown()=0; + virtual TInt InterfaceSleep()=0; + virtual TInt InterfaceResume()=0; + virtual TInt Notification(enum TAgentToNifEventType aEvent, void* aInfo)=0; + virtual TInt Control(TUint aLevel,TUint aName,TDes8& aOption, TAny* aSource=0)=0; + + // + const TPacketDriverStats& GetInterfaceStats() const { return iStats;} + TInt SenseInterfacePower() const {return iPowerState;} +protected: + HBufC* iName; + CPktDrvFactory* iFactory; + TInt iRefCount; + CLANLinkCommon* iParent; + enum TDriverResetState {EStart, EWarmStart, EInitialising, + Ready, ESleeping, ERunning, EHalted}; + enum TDriverPowerState {EPowerOn, EPowerOff, ESleep}; + TDriverResetState iResetState; + TDriverPowerState iPowerState; + TPacketDriverStats iStats; + THWAddr iHWAddr; + TRxMode iRxMode; +}; + +#ifndef SYMBIAN_ENABLE_SPLIT_HEADERS +#include +#endif + +#endif + + + +