diff -r 1422c6cd3f0c -r e7dfaa7b0b8d linklayerprotocols/ethernetnif/EtherPkt/Cardctl.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/linklayerprotocols/ethernetnif/EtherPkt/Cardctl.h Thu Mar 04 11:58:36 2010 +0000 @@ -0,0 +1,201 @@ +// 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 + @internalComponent +*/ + +#if !defined(__CARDCTL_H__) +#define __CARDCTL_H__ + +#include + +#include "carddrv.h" +#include // for KSlashChar + +const TInt KConfigBufferSize = 12; + + +NONSHARABLE_CLASS(CIOBuffer) : public CBase +/** +Generic buffer class +Enables HBufC8 pointers to be queued +@internalComponent +*/ +{ +public: + ~CIOBuffer(); + inline HBufC8* Data() const {return iBuf;}; + void FreeData(); + inline TPtr8& Ptr() {return iBufPtr;}; + void Assign(HBufC8* aBuffer = NULL); + static CIOBuffer* NewL(HBufC8* aBuf = NULL); + static CIOBuffer* NewL(const TInt aSize); + static TInt LinkOffset(); + +private: + CIOBuffer(); + void ConstructL(const TInt aSize); + // void Construct(HBufC8* aBuffer); + + TSglQueLink iLink; + HBufC8* iBuf; + TPtr8 iBufPtr; +}; + + +// Main Card Control class. Controls open, close, read, write etc +class CPcCardSender; +class CPcCardReceiver; +class CPcCardIOCTL; +class CPcCardEventHandler; + +NONSHARABLE_CLASS(CPcCardControlEngine) : public CBase +/** +@internalComponent +*/ +{ +public: + friend class CPcCardSender; + friend class CPcCardReceiver; + friend class CPcCardIOCTL; + friend class CPcCardEventHandler; + + static CPcCardControlEngine *NewL(CPcCardPktDrv* aPktDrv); + ~CPcCardControlEngine(); + void StartL(); + void Stop(); + TUint8* GetInterfaceAddress(); + TInt Send(HBufC8* aBuffer); + TBool CardOpen(){return iCardOpen;}; + +#if (!defined __WINS__) + void ParseMACFromFileL(); +#endif + + +private: + CPcCardControlEngine(CPcCardPktDrv* aPktDrv); + void ConstructL(); + void ProcessReceivedPacket(TDesC8 &aBuffer); + void ResumeSending(); + void LinkLayerUp(); + void LoadDeviceDriversL(); + +private: + TBool iCardOpen; + CPcCardPktDrv* iNotify; + + TBuf8 iConfig; + + CPcCardSender* iSender; + CPcCardReceiver* iReceiver; + CPcCardEventHandler* iEventHandler; + RBusDevEthernet iCard; + TInt iPcmciaSocket; + + TBuf iPDDName; + TBuf iLDDName; +}; + +NONSHARABLE_CLASS(CPcCardSender) : public CActive +/** +Writer Active object class +Queues buffers for transmit +@internalComponent +*/ +{ +public: + static CPcCardSender* NewL(CPcCardControlEngine* aParent); + ~CPcCardSender(); + TInt Send(CIOBuffer* aBuffer); + void EmptyQueue(); + +private: + virtual void RunL(); + virtual void DoCancel(); + CPcCardSender(); + void InitL(CPcCardControlEngine* aParent); + + TInt iQueueLength; + CPcCardControlEngine* iParent; + TSglQue iTxQueue; + TBool iStopSending; +}; + +NONSHARABLE_CLASS(CPcCardReceiver) : public CActive +/** +Reader active object +One receive buffer only, read queue handled by LDD +@internalComponent +*/ +{ +public: + static CPcCardReceiver* NewL(CPcCardControlEngine* aParent); + ~CPcCardReceiver(); + void QueueRead(); +private: + virtual void RunL(); + virtual void DoCancel(); + CPcCardReceiver(); + void InitL(CPcCardControlEngine* aParent); + + CPcCardControlEngine* iParent; + HBufC8* iRecvBuffer; + TUint iRecvBufLength; + TPtr8 iRecvBufPtr; +}; + +NONSHARABLE_CLASS(CPcCardEventHandler) : public CActive +/** +@internalComponent +*/ +{ +public: + ~CPcCardEventHandler(); + static CPcCardEventHandler* NewL(CPcCardControlEngine* aParent); + void GetEvent(); +private: + virtual void RunL(); + virtual void DoCancel(); + CPcCardEventHandler(); + void InitL(CPcCardControlEngine* aParent); + + TBuf8<32> iEventBuffer; + CPcCardControlEngine* iParent; +}; + +NONSHARABLE_CLASS(CPcCardIOCTL) : public CActive +/** +@internalComponent +*/ +{ +public: + ~CPcCardIOCTL(); + static CPcCardIOCTL* NewL(CPcCardControlEngine* aParent); + TInt Ioctl(const TUint8 aIOCTLCode); +private: + virtual void RunL(); + virtual void DoCancel(); + CPcCardIOCTL(); + void InitL(CPcCardControlEngine* aParent); + TBuf8<32> iIOCTLBuffer; + TUint8 iCurrentIOCTL; + + CPcCardControlEngine* iParent; +}; + +#endif