diff -r d3e8e7d462dd -r f92a4f87e424 usbmgmt/usbmgr/device/classdrivers/ncm/classimplementation/ncmpktdrv/pktdrv/inc/ncmdatainterface.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/usbmgmt/usbmgr/device/classdrivers/ncm/classimplementation/ncmpktdrv/pktdrv/inc/ncmdatainterface.h Tue Aug 31 17:01:47 2010 +0300 @@ -0,0 +1,115 @@ +/* +* Copyright (c) 2010 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 +*/ + +#ifndef NCMDATAINTERFACE_H +#define NCMDATAINTERFACE_H + +#include +#ifndef __OVER_DUMMYUSBSCLDD__ +#include +#include +#include +#else +#include +#include +#endif + +#include "ncmpktdrvcommon.h" + +class CNcmDataSender; +class CNcmDataReceiver; + +/** +The interface to NCM data channel. +*/ +NONSHARABLE_CLASS(MNcmDataObserver) +{ +public: + /** + Process received datagram parsed from NCM. + @param[in] aPacket, contains the datagram(ethernet frame) to be dealed with. + */ + virtual void ProcessReceivedDatagram(RMBufPacket& aPacket) = 0; + /** + Notify the upper layer(TCP/IP stack) to continue to send data. + */ + virtual void ResumeSending() = 0; + /** + Notify unrecoverable error in data channel. + */ + virtual void DataError(TInt aError) = 0; + /** + Notify the Data Interface's alt-setting changes, which commonly from 0 to 1, or vice versa. + @param[in] aIfAltSet, the alt-setting number. + */ + virtual void HandleAltSetting(TInt aIfAltSet) = 0; +}; + +/** +Maintain the logic of Ncm data channel +*/ +NONSHARABLE_CLASS(CNcmDataInterface) : public CActive + { +public: + static CNcmDataInterface* NewL(MNcmDataObserver& aEngine, RDevUsbcScClient& aLdd); + ~CNcmDataInterface(); + + inline TBool IsStarted() const; + void Start(); + void Stop(); + TInt Send(RMBufChain& aPacket); + + TInt GetSpeed(TInt& aSpeed); + TInt GetNtbInputSize(TDes8& aSize); + TInt SetNtbInputSize(TDesC8& aSize); + TInt GetNtbParam(TDes8& aParam); + TInt SetInEpBufferSize(TUint aSize); + + void ActivateLdd(); + inline void DataError(TInt aErroCode) const; + inline void ResumeSending() const; + inline void ProcessDatagram(RMBufPacket& aPacket) const; + inline TInt AltSetting() const; + +private: + CNcmDataInterface(MNcmDataObserver& aEngine, RDevUsbcScClient& aLdd); + void ConstructL(); + + //From CActive + void RunL(); + void DoCancel(); + +private: + TBool iStarted; + CNcmDataSender* iSender; + CNcmDataReceiver* iReceiver; + MNcmDataObserver& iEngine; + + RDevUsbcScClient& iLdd; + TInt iAltSetting; + TUint iIfState; + }; + +// inline functions +#include "ncmdatainterface.inl" + +#endif // NCMDATAINTERFACE_H