diff -r d3e8e7d462dd -r f92a4f87e424 usbmgmt/usbmgr/device/classdrivers/ncm/classimplementation/ncmpktdrv/pktdrv/inc/ncmcomminterfacesenderandreceiver.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/usbmgmt/usbmgr/device/classdrivers/ncm/classimplementation/ncmpktdrv/pktdrv/inc/ncmcomminterfacesenderandreceiver.h Tue Aug 31 17:01:47 2010 +0300 @@ -0,0 +1,112 @@ +/* +* 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: +* header file of class for read and write data from share chunk LDD +* +*/ + + +/** +@file +@internalComponent +*/ + +#ifndef NCMCOMMINTERFACESENDERANDRECEIVER_H +#define NCMCOMMINTERFACESENDERANDRECEIVER_H + +#include + +#ifndef __OVER_DUMMYUSBSCLDD__ +#include +#else +#include +#endif + + + +class CNcmCommunicationInterface; + +/** +Responsible for sending and receiving data on Control Endpoint +*/ + +NONSHARABLE_CLASS(CNcmCommInterfaceSenderAndReceiver) : public CActive + { +public: + static CNcmCommInterfaceSenderAndReceiver* NewL(RDevUsbcScClient& aPort, CNcmCommunicationInterface& aCommInterface); + ~CNcmCommInterfaceSenderAndReceiver(); + void Start(); + void Stop(); + /** + * read aLength data from LDD + * + * @param aStatus complete status for this request. + * @param aBuf buffer to store data. + * @param aLength length to read. + */ + TInt Read(TRequestStatus& aStatus, TDes8& aBuf, TInt aLength); + /** + * write aLength data to LDD + * + * @param aStatus complete status for this request. + * @param aBuf buffer of data. + * @param aLength length to write. + */ + TInt Write(TRequestStatus& aStatus, TDesC8& aBuf, TInt aLength); + +private: + enum TNcmControlEndpointState + { + EUnInit = 1, + EIdle, + EReceiving, + ESending + }; + + CNcmCommInterfaceSenderAndReceiver(RDevUsbcScClient& aPort, CNcmCommunicationInterface& aCommInterface); + void ReadData(); + +private: + /** + * derived from CActive + */ + void RunL(); + void DoCancel(); + +private: + RDevUsbcScClient& iPort; + /** + * LDD control endpoint buffer + */ + TEndpointBuffer iEp0Buffer; + CNcmCommunicationInterface& iCommInterface; + /** + * point to buffer to store data of Read function, this is not ownership + */ + TDes8* iReceiveBuf; + /** + * length of data left to be read from LDD for a Read request + */ + TInt iToReceiveLength; + /** + * complete status for Read and Write function, this is not ownership + */ + TRequestStatus* iCompleteStatus; + TNcmControlEndpointState iState; + + }; + + +#endif //NCMCOMMINTERFACESENDERANDRECEIVER_H +