--- /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 <e32base.h>
+#include <usbhost/internal/fdcpluginobserver.h>
+#include <usb/usblogger.h>
+
+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<TUint>& 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<TUint>& 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<TUint>& 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<TUint> iDeviceIds;
+ CFdcPlugin* iPlugin;
+ MFdcInterfaceV1* iInterface;
+ TBool iInMfi1NewFunction;
+ TInt i0thInterface;
+ TBool iMarkedForDeletion;
+ TBool iRomBased;
+ };
+
+#endif // FDCPROXY_H