diff -r 000000000000 -r c9bc50fca66e usbmgmt/usbmgr/host/fdf/production/server/inc/fdcproxy.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/usbmgmt/usbmgr/host/fdf/production/server/inc/fdcproxy.h Tue Feb 02 02:02:59 2010 +0200 @@ -0,0 +1,105 @@ +/* +* Copyright (c) 2007-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 +*/ + +#ifndef FDCPROXY_H +#define FDCPROXY_H + +#include +#include +#include + +class CFdcPlugin; +class MFdcInterfaceV1; +class CImplementationInformation; +class TUsbDeviceDescriptor; +class TUsbConfigurationDescriptor; +class CFdf; + +/** +CFdcProxy is a class internal to the FDF. +It is used to interface to CFdcPlugins, providing for +(a) re-use of CFdcPlugin objects for multiple devices, and +(b) easy finding of required CFdcPlugins by caching the data on which they +match USB interfaces. +*/ +NONSHARABLE_CLASS(CFdcProxy) : public CBase, public MFdcPluginObserver + { +public: + /** Link between elements of this type in a TSglQue. */ + TSglQueLink iLink; + +public: + static CFdcProxy* NewL(CFdf& aFdf, CImplementationInformation& aImplInfo); + ~CFdcProxy(); + +public: + const TDesC8& DefaultDataField() const; + TInt NewFunction(TUint aDeviceId, + const RArray& aInterfaces, + const TUsbDeviceDescriptor& aDeviceDescriptor, + const TUsbConfigurationDescriptor& aConfigurationDescriptor); + void DeviceDetached(TUint aDeviceId); + TUid ImplUid() const; + TInt Version() const; + TInt DeviceCount() const; + void MarkForDeletion(); + void UnmarkForDeletion(); + TBool MarkedForDeletion() const; + TBool RomBased() const; + +private: + CFdcProxy(CFdf& aFdf); + void ConstructL(CImplementationInformation& aImplInfo); + +private: // from MFdcPluginObserver + TUint32 MfpoTokenForInterface(TUint8 aInterface); + const RArray& MfpoGetSupportedLanguagesL(TUint aDeviceId); + TInt MfpoGetManufacturerStringDescriptor(TUint aDeviceId, TUint aLangId, TName& aString); + TInt MfpoGetProductStringDescriptor(TUint aDeviceId, TUint aLangId, TName& aString); + TInt MfpoGetSerialNumberStringDescriptor(TUint aDeviceId, TUint aLangId, TName& aString); + +private: // utilities + void Invariant() const; + void Log() const; + void NewFunctionL(TUint aDeviceId, + const RArray& aInterfaces, + const TUsbDeviceDescriptor& aDeviceDescriptor, + const TUsbConfigurationDescriptor& aConfigurationDescriptor); + void CheckDeviceIdL(TUint aDeviceId) const; + +private: // unowned + CFdf& iFdf; + +private: // owned + TUid iImplementationUid; + TInt iVersion; + RBuf8 iDefaultData; + RArray iDeviceIds; + CFdcPlugin* iPlugin; + MFdcInterfaceV1* iInterface; + TBool iInMfi1NewFunction; + TInt i0thInterface; + TBool iMarkedForDeletion; + TBool iRomBased; + }; + +#endif // FDCPROXY_H