diff -r 000000000000 -r c9bc50fca66e usbmgmt/usbmgr/device/classdrivers/acm/classimplementation/ecacm/inc/CdcControlInterfaceReader.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/usbmgmt/usbmgr/device/classdrivers/acm/classimplementation/ecacm/inc/CdcControlInterfaceReader.h Tue Feb 02 02:02:59 2010 +0200 @@ -0,0 +1,94 @@ +/* +* 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: +* +*/ + +#ifndef __CDCCONTROLINTERFACEREADER_H__ +#define __CDCCONTROLINTERFACEREADER_H__ + +#include +#include "RequestHeader.h" +#include "acmcapability.h" + +class MCdcCommsClassRequestHandler; +class RDevUsbcClient; + +NONSHARABLE_CLASS(CCdcControlInterfaceReader) : public CActive +/** + * Deals with reading control information from the LDD. + */ + { +public: + static CCdcControlInterfaceReader* NewL( + MCdcCommsClassRequestHandler& aParent, + RDevUsbcClient& aLdd); + ~CCdcControlInterfaceReader(); + +private: + CCdcControlInterfaceReader(MCdcCommsClassRequestHandler& aParent, + RDevUsbcClient& aLdd); + +private: // utility + void HandleReadCompletion(TInt aError); + + void DecodeMessageHeader(); + void DecodeMessageDataWithResponseRequired(); + void DecodeMessageData(); + + void ReadMessageHeader(); + void ReadMessageData(TUint aLength); + +private: // from CActive + void RunL(); + void DoCancel(); + +private: // unowned + MCdcCommsClassRequestHandler& iParent; + RDevUsbcClient& iLdd; + +private: // owned + TBuf8 iMessageHeader; ///< Raw message header + + enum + { + KAcmControlReadBufferLength = 256, ///< Size of the ACM control read + ///< buffer + + // Request IDs- see p16 of UBSCDC1.1 Table 4. + KGetEncapsulated = 0x01, ///< GET_ENCAPSULATED_RESPONSE + KGetCommFeature = 0x03, ///< GET_COMM_FEATURE + KGetLineCoding = 0x21, ///< GET_LINE_CODING + + KSendEncapsulated = 0x00, ///< SEND_ENCAPSULATED_COMMAND + KSetCommFeature = 0x02, ///< SET_COMM_FEATURE + KClearCommFeature = 0x04, ///< CLEAR_COMM_FEATURE + KSetLineCoding = 0x20, ///< SET_LINE_CODING + KSetControlLineState = 0x22, ///< SET_CONTROL_LINE_STATE + KSendBreak = 0x23, ///< SEND_BREAK + }; + + enum TReaderState + { + EWaitingForHeader = 0, ///< Waiting for message header + EWaitingForData = 1, ///< Waiting for message data + }; + + TBuf8 iMessageData; ///< Message data + ///< Decoded message header + TUsbRequestHdr iRequestHeader; + TReaderState iState; ///< Reader state + }; + +#endif // __CDCCONTROLINTERFACEREADER_H__