201036_01 PDK_4.0.a
authorhgs
Thu, 16 Sep 2010 12:03:29 +0800
changeset 49 93c0009bd947
parent 48 21625e5de155
child 53 8353e29a36f1
child 55 3b97f0de7605
201036_01
usbmgmt/usbmgr/conf/usbmanager.confml
usbmgmt/usbmgr/device/classdrivers/ncm/classcontroller/inc/ncmclientmanager.h
usbmgmt/usbmgr/device/classdrivers/ncm/classcontroller/src/ncmclientmanager.cpp
usbmgmt/usbmgr/device/classdrivers/ncm/classcontroller/traces/fixed_id.definitions
usbmgmt/usbmgr/group/Usbman.iby
usbmgmt/usbmgr/host/fdf/production/client/EABI/usbhoststacku.def
usbmgmt/usbmgr/host/fdf/production/client/public/usbhoststack.h
usbmgmt/usbmgr/host/fdf/production/client/src/session.cpp
usbmgmt/usbmgr/host/fdf/production/client/traces/fixed_id.definitions
usbmgmt/usbmgr/host/fdf/production/server/group/fdf.mmp
usbmgmt/usbmgr/host/fdf/production/server/group/fdf_base.mmp
usbmgmt/usbmgr/host/fdf/production/server/inc/fdf.h
usbmgmt/usbmgr/host/fdf/production/server/inc/fdfsession.h
usbmgmt/usbmgr/host/fdf/production/server/public/fdfapi.h
usbmgmt/usbmgr/host/fdf/production/server/src/fdf.cpp
usbmgmt/usbmgr/host/fdf/production/server/traces/fixed_id.definitions
usbmgmt/usbmgr/host/functiondrivers/ms/msmm/client/traces/fixed_id.definitions
usbmgmt/usbmgr/host/functiondrivers/ms/msmm/server/inc/msmmengine.h
usbmgmt/usbmgr/host/functiondrivers/ms/msmm/server/inc/subcommands.h
usbmgmt/usbmgr/host/functiondrivers/ms/msmm/server/src/eventhandler.cpp
usbmgmt/usbmgr/host/functiondrivers/ms/msmm/server/src/msmmengine.cpp
usbmgmt/usbmgr/host/functiondrivers/ms/msmm/server/src/subcommands.cpp
usbmgmt/usbmgr/usbman/chargingplugin/group/10208DD7.txt
usbmgmt/usbmgr/usbman/chargingplugin/group/UsbBatteryChargingPlugin.mmp
usbmgmt/usbmgr/usbman/chargingplugin/group/UsbBatteryChargingPluginBase.mmp
usbmgmt/usbmgr/usbman/chargingplugin/group/UsbBatteryChargingPluginotg.mmp
usbmgmt/usbmgr/usbman/chargingplugin/group/bld.inf
usbmgmt/usbmgr/usbman/chargingplugin/inc/default/cusbbatterycharginglicenseehooks.h
usbmgmt/usbmgr/usbman/chargingplugin/inc/reenumerator.h
usbmgmt/usbmgr/usbman/chargingplugin/public/CUsbBatteryChargingPlugin.h
usbmgmt/usbmgr/usbman/chargingplugin/public/chargingstates.h
usbmgmt/usbmgr/usbman/chargingplugin/public/repositorynotifier.h
usbmgmt/usbmgr/usbman/chargingplugin/public/usbbatterycharging.h
usbmgmt/usbmgr/usbman/chargingplugin/src/CUsbBatteryChargingPlugin.cpp
usbmgmt/usbmgr/usbman/chargingplugin/src/chargingstates.cpp
usbmgmt/usbmgr/usbman/chargingplugin/src/repositorynotifier.cpp
usbmgmt/usbmgr/usbman/chargingplugin/traces/fixed_id.definitions
usbmgmt/usbmgr/usbman/extensionplugin/BWINS/usbmanextensionpluginshaiu.def
usbmgmt/usbmgr/usbman/extensionplugin/EABI/usbmanextensionpluginshaiu.def
usbmgmt/usbmgr/usbman/extensionplugin/EABI/usbmanextensionpluginu.def
usbmgmt/usbmgr/usbman/extensionplugin/group/UsbManExtensionPlugin.mmp
usbmgmt/usbmgr/usbman/extensionplugin/inc/MUsbManExtensionPluginObserverDummy.h
usbmgmt/usbmgr/usbman/extensionplugin/public/CUsbManExtensionPlugin.h
usbmgmt/usbmgr/usbman/extensionplugin/public/MUsbManExtensionPluginObserver.h
usbmgmt/usbmgr/usbman/extensionplugin/src/MUsbManExtensionPluginObserver.cpp
usbmgmt/usbmgr/usbman/server/INC/CUsbDevice.h
usbmgmt/usbmgr/usbman/server/INC/cusbchargingporttypewatcher.h
usbmgmt/usbmgr/usbman/server/INC/cusbchargingporttypewatcher.inl
usbmgmt/usbmgr/usbman/server/INC/cusbhost.h
usbmgmt/usbmgr/usbman/server/SRC/CUsbDevice.cpp
usbmgmt/usbmgr/usbman/server/SRC/CUsbServer.cpp
usbmgmt/usbmgr/usbman/server/SRC/cusbchargingporttypewatcher.cpp
usbmgmt/usbmgr/usbman/server/SRC/cusbhost.cpp
usbmgmt/usbmgr/usbman/server/group/bld.inf
usbmgmt/usbmgr/usbman/server/group/t_Usbman_dummyCC.mmp
usbmgmt/usbmgr/usbman/server/group/usbsvr_dummyldd.mmp
usbmgmt/usbmgr/usbman/server/group/usbsvrbase.mmp
usbmgmt/usbmgr/usbman/server/public/musbchargingnotify.h
usbmgmt/usbmgr/usbman/server/public/usbhostdefs.h
usbmgmt/usbmgr/usbman/server/traces/fixed_id.definitions
usbmgmt/usbmgrtest/t_charging_emu/group/TestPlugin.mmp
usbmgmt/usbmgrtest/t_charging_emu/group/TestPluginotg.mmp
usbmgmt/usbmgrtest/t_charging_emu/group/TestPluginotgtest.mmp
usbmgmt/usbmgrtest/t_charging_emu/group/bld.inf
usbmgmt/usbmgrtest/t_charging_emu/group/t_usbcharging.iby
usbmgmt/usbmgrtest/t_charging_emu/inc/CUsbBatteryChargingTestPlugin.h
usbmgmt/usbmgrtest/t_charging_emu/inc/dummyldd.h
usbmgmt/usbmgrtest/t_charging_emu/inc/tbatterycharging.h
usbmgmt/usbmgrtest/t_charging_emu/src/CUsbBatteryChargingTestPlugin.cpp
usbmgmt/usbmgrtest/t_usb_charging/group/bld.inf
usbmgmt/usbmgrtest/t_usb_charging/group/t_usbcharging.iby
usbmgmt/usbmgrtest/t_usb_charging/group/t_usbcharging.mmp
usbmgmt/usbmgrtest/t_usb_charging/group/t_usbcharging_cmdparam.mmp
usbmgmt/usbmgrtest/t_usb_charging/inc/Tests.h
usbmgmt/usbmgrtest/t_usb_charging/inc/activeconsole.h
usbmgmt/usbmgrtest/t_usb_charging/inc/testbase.h
usbmgmt/usbmgrtest/t_usb_charging/inc/testmanager.h
usbmgmt/usbmgrtest/t_usb_charging/inc/usbchargingarmtest.h
usbmgmt/usbmgrtest/t_usb_charging/inc/usbchargingcurrentwatcher.h
usbmgmt/usbmgrtest/t_usb_charging/inc/usbstatewatcher.h
usbmgmt/usbmgrtest/t_usb_charging/src/activeconsole.cpp
usbmgmt/usbmgrtest/t_usb_charging/src/activetest.cpp
usbmgmt/usbmgrtest/t_usb_charging/src/testbase.cpp
usbmgmt/usbmgrtest/t_usb_charging/src/usbchargingarmtest.cpp
usbmgmt/usbmgrtest/t_usb_charging/src/usbchargingcurrentwatcher.cpp
usbmgmt/usbmgrtest/t_usb_charging/src/usbstatewatcher.cpp
usbmgmt/usbmgrtest/t_usbmanager_suite/Stub1CC/src/Stub1CC.cpp
usbmgmt/usbmgrtest/t_usbmanager_suite/Stub2CC/src/Stub2CC.cpp
usbmgmt/usbmgrtest/t_usbmanager_suite/Stub3CC/src/Stub3CC.cpp
Binary file usbmgmt/usbmgr/conf/usbmanager.confml has changed
--- a/usbmgmt/usbmgr/device/classdrivers/ncm/classcontroller/inc/ncmclientmanager.h	Mon Sep 06 11:27:08 2010 +0800
+++ b/usbmgmt/usbmgr/device/classdrivers/ncm/classcontroller/inc/ncmclientmanager.h	Thu Sep 16 12:03:29 2010 +0800
@@ -77,18 +77,23 @@
      * Setup NCM class specific descriptors
      * @param   aDataInterfaceNumber, NCM data interface number
      */
-    TInt SetupClassSpecificDescriptor(TUint8 aDataInterfaceNumber);
+    TInt SetupClassSpecificDescriptor(TUint8 aControlInterfaceNumber, TUint8 aDataInterfaceNumber);
     /**
      * Set NCM interface MAC address into NCM class specific descriptor
-     * @param[out]   aStrIndex, the index of string which contains NCM 
+     * @param [out]   aStrIndex, the index of string which contains NCM 
      *               interface MAC address 
      */
     TInt SetMacAddressString(TUint8& aStrIndex);
+    
     /**
-     * Get NCM data interface number
-     * @param[out]  aInterfaceNumber, NCM data interface number
+     * Get interface number
+     * @param aLdd The logic device driver which can be used to query for.
+     * @param aSettingsNumber The alter settings for the interface
+     * @param [out] aInterfaceNumber Carry out the interface bumber back to caller.
+     * @return KErrNone If interface number is return via aInterfaceNumber.
+     *                  Other system wide error code if anything went wrong.
      */
-    TInt DataInterfaceNumber(TUint8& aInterfaceNumber);
+    TInt InterfaceNumber(RDevUsbcScClient& aLdd,TInt aSettingsNumber,TUint8& aInterfaceNumber);
     
 private:
     const TNcmMacAddress&   iHostMacAddress;
--- a/usbmgmt/usbmgr/device/classdrivers/ncm/classcontroller/src/ncmclientmanager.cpp	Mon Sep 06 11:27:08 2010 +0800
+++ b/usbmgmt/usbmgr/device/classdrivers/ncm/classcontroller/src/ncmclientmanager.cpp	Thu Sep 16 12:03:29 2010 +0800
@@ -120,12 +120,16 @@
     // Setup NCM data interface
     SetDataInterfaceL(aDataEpBufferSize);
     
-    // Retrieve data interface number
-    TUint8 dataInterfaceNumber = 1;
-    User::LeaveIfError(DataInterfaceNumber(dataInterfaceNumber));
+    // Retrieve Control interface number(alter 0)
+    TUint8 controlInterfaceNumber = 0;
+    User::LeaveIfError(InterfaceNumber(iCommLdd,0,controlInterfaceNumber));
+    
+    // Retrieve data interface number(alter 0)
+    TUint8 dataInterfaceNumber = 0;
+    User::LeaveIfError(InterfaceNumber(iDataLdd,0,dataInterfaceNumber));
     
     // Setup NCM class descriptor with correct interface number
-    User::LeaveIfError(SetupClassSpecificDescriptor(dataInterfaceNumber));
+    User::LeaveIfError(SetupClassSpecificDescriptor(controlInterfaceNumber,dataInterfaceNumber));
     OstTraceFunctionExit1( CNCMCLIENTMANAGER_SETNCMINTERFACESL_EXIT, this );
     }
 
@@ -403,7 +407,7 @@
  * @param aDataInterfaceNumber The interface number of the data class
  * @return Error.
  */
-TInt CNcmClientManager::SetupClassSpecificDescriptor(TUint8 aDataInterfaceNumber)
+TInt CNcmClientManager::SetupClassSpecificDescriptor(TUint8 aControlInterfaceNumber,TUint8 aDataInterfaceNumber)
     {
     OstTraceFunctionEntryExt( CNCMCLIENTMANAGER_SETUPCLASSSPECIFICDESCRIPTOR_ENTRY, this );
     
@@ -447,7 +451,7 @@
     descriptor.iUnSize = 0x05;
     descriptor.iUnType = 0x24;
     descriptor.iUnSubType = 0x06;
-    descriptor.iUnMasterInterface = 0;
+    descriptor.iUnMasterInterface = aControlInterfaceNumber;
     descriptor.iUnSlaveInterface = aDataInterfaceNumber;
 
     OstTrace0( TRACE_NORMAL, CNCMCLIENTMANAGER_SETUPCLASSSPECIFICDESCRIPTOR_PRE_SET_BLOCK, "About to call SetCSInterfaceDescriptorBlock" );
@@ -500,57 +504,64 @@
     }
 
 /**
- * Get NCM data interface number
- * @param aInterfaceNumber NCM data interface number
- * @return Error.
+ * Get interface number
+ * @param aLdd The logic device driver which can be used to query for.
+ * @param aSettingsNumber The alter settings for the interface
+ * @param [out] aInterfaceNumber Carry out the interface bumber back to caller.
+ * @return KErrNone If interface number is return via aInterfaceNumber.
+ *                  Other system wide error code if anything went wrong.
  */
-TInt CNcmClientManager::DataInterfaceNumber(TUint8& aInterfaceNumber)
+TInt CNcmClientManager::InterfaceNumber(RDevUsbcScClient& aLdd,TInt aSettingsNumber,TUint8& aInterfaceNumber)
     {
-    OstTraceFunctionEntryExt( CNCMCLIENTMANAGER_DATAINTERFACENUMBER_ENTRY, this );
+    OstTraceFunctionEntryExt( CNCMCLIENTMANAGER_INTERFACENUMBER_ENTRY, this );
     
+    // Get descriptor size first
     TInt interfaceSize = 0;
-
-    // 0 means the main interface in the LDD API
-    TInt res = iDataLdd.GetInterfaceDescriptorSize(0, interfaceSize);
-
+    TInt res = aLdd.GetInterfaceDescriptorSize(aSettingsNumber, interfaceSize);
     if ( KErrNone == res )
         {
-        OstTraceFunctionExitExt( CNCMCLIENTMANAGER_DATAINTERFACENUMBER_EXIT, this, res );
+        OstTraceFunctionExitExt( CNCMCLIENTMANAGER_INTERFACENUMBER_EXIT, this, res );
         return res;
         }
 
+    // Allocate enough buffer
     HBufC8* interfaceBuf = HBufC8::New(interfaceSize);
     if ( !interfaceBuf )
         {
-        OstTraceFunctionExitExt( CNCMCLIENTMANAGER_DATAINTERFACENUMBER_EXIT_DUP1, this, KErrNoMemory);
+        OstTraceFunctionExitExt( CNCMCLIENTMANAGER_INTERFACENUMBER_EXIT_DUP1, this, KErrNoMemory);
         return KErrNoMemory;
         }
 
+    // Get the buffer back
     TPtr8 interfacePtr = interfaceBuf->Des();
     interfacePtr.SetLength(0);
-    // 0 means the main interface in the LDD API
-    res = iDataLdd.GetInterfaceDescriptor(0, interfacePtr); 
-
+    res = aLdd.GetInterfaceDescriptor(aSettingsNumber, interfacePtr); 
     if ( KErrNone == res )
         {
         delete interfaceBuf;
-        OstTraceFunctionExitExt( CNCMCLIENTMANAGER_DATAINTERFACENUMBER_EXIT_DUP2, this, res );
+        OstTraceFunctionExitExt( CNCMCLIENTMANAGER_INTERFACENUMBER_EXIT_DUP2, this, res );
         return res;
         }
 
-    OstTrace1(TRACE_NORMAL, CNCMCLIENTMANAGER_DATAINTERFACENUMBER_INTERFACE_INFO, "***Interface length =% d", interfacePtr.Length());
+    OstTrace1(TRACE_NORMAL, CNCMCLIENTMANAGER_INTERFACENUMBER_INTERFACE_INFO, "***Interface length =% d", interfacePtr.Length());
+    
+#ifdef OST_TRACE_COMPILER_IN_USE  // to depress a build warning incase no ost trace is used
     for ( TInt i = 0 ; i < interfacePtr.Length() ; i++ )
         {
-        OstTrace1(TRACE_NORMAL, CNCMCLIENTMANAGER_DATAINTERFACENUMBER_INTERFACE_INFO2, "***** %x", interfacePtr[i]);
+        OstTrace1(TRACE_NORMAL, CNCMCLIENTMANAGER_INTERFACENUMBER_INTERFACE_INFO2, "***** %x", interfacePtr[i]);
         }
-
+#endif
+    
     const TUint8* buffer = reinterpret_cast<const TUint8*>(interfacePtr.Ptr());
+    
     // 2 is where the interface number is, according to the LDD API
     aInterfaceNumber = buffer[2];
-    OstTraceExt1(TRACE_NORMAL, CNCMCLIENTMANAGER_DATAINTERFACENUMBER, "Interface number = %hhu", aInterfaceNumber);
-
+    
+    OstTraceExt1(TRACE_NORMAL, CNCMCLIENTMANAGER_INTERFACENUMBER, "Interface number = %hhu", aInterfaceNumber);
+    
+    // Now it is safe to delete the buffer we allocated.
     delete interfaceBuf;
 
-    OstTraceFunctionExitExt( CNCMCLIENTMANAGER_DATAINTERFACENUMBER_EXIT_DUP3, this, KErrNone );
+    OstTraceFunctionExitExt( CNCMCLIENTMANAGER_INTERFACENUMBER_EXIT_DUP3, this, KErrNone );
     return KErrNone;
     }
--- a/usbmgmt/usbmgr/device/classdrivers/ncm/classcontroller/traces/fixed_id.definitions	Mon Sep 06 11:27:08 2010 +0800
+++ b/usbmgmt/usbmgr/device/classdrivers/ncm/classcontroller/traces/fixed_id.definitions	Thu Sep 16 12:03:29 2010 +0800
@@ -1,3 +1,20 @@
+##
+# This is Default Licence added by TraceCompiler
+# 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: 
+#
+##
 #Fixed group and trace id definitions. If this file is removed, the identifiers are rebuilt.
 [GROUP]TRACE_ERROR=0x82
 [GROUP]TRACE_FATAL=0x81
@@ -48,17 +65,11 @@
 [TRACE]TRACE_FLOW[0x8A]_CNCMCLIENTMANAGER_CNCMCLIENTMANAGER_ENTRY_DESTRUCTOR=0xfc
 [TRACE]TRACE_FLOW[0x8A]_CNCMCLIENTMANAGER_CNCMCLIENTMANAGER_ENTRY_DESTRUCTOR_EXIT=0xfd
 [TRACE]TRACE_FLOW[0x8A]_CNCMCLIENTMANAGER_CNCMCLIENTMANAGER_EXIT=0x103
-[TRACE]TRACE_FLOW[0x8A]_CNCMCLIENTMANAGER_CONSTRUCTL_ENTRY=0x104
-[TRACE]TRACE_FLOW[0x8A]_CNCMCLIENTMANAGER_CONSTRUCTL_EXIT=0x105
-[TRACE]TRACE_FLOW[0x8A]_CNCMCLIENTMANAGER_DATAINTERFACENUMBER_ENTRY=0x110
-[TRACE]TRACE_FLOW[0x8A]_CNCMCLIENTMANAGER_DATAINTERFACENUMBER_EXIT=0x111
-[TRACE]TRACE_FLOW[0x8A]_CNCMCLIENTMANAGER_DATAINTERFACENUMBER_EXIT_DUP1=0x112
-[TRACE]TRACE_FLOW[0x8A]_CNCMCLIENTMANAGER_DATAINTERFACENUMBER_EXIT_DUP2=0x113
-[TRACE]TRACE_FLOW[0x8A]_CNCMCLIENTMANAGER_DATAINTERFACENUMBER_EXIT_DUP3=0x114
-[TRACE]TRACE_FLOW[0x8A]_CNCMCLIENTMANAGER_NEWLC_ENTRY=0xf8
-[TRACE]TRACE_FLOW[0x8A]_CNCMCLIENTMANAGER_NEWLC_EXIT=0xf9
-[TRACE]TRACE_FLOW[0x8A]_CNCMCLIENTMANAGER_NEWL_ENTRY=0xfa
-[TRACE]TRACE_FLOW[0x8A]_CNCMCLIENTMANAGER_NEWL_EXIT=0xfb
+[TRACE]TRACE_FLOW[0x8A]_CNCMCLIENTMANAGER_INTERFACENUMBER_ENTRY=0x16b
+[TRACE]TRACE_FLOW[0x8A]_CNCMCLIENTMANAGER_INTERFACENUMBER_EXIT=0x16c
+[TRACE]TRACE_FLOW[0x8A]_CNCMCLIENTMANAGER_INTERFACENUMBER_EXIT_DUP1=0x16d
+[TRACE]TRACE_FLOW[0x8A]_CNCMCLIENTMANAGER_INTERFACENUMBER_EXIT_DUP2=0x16e
+[TRACE]TRACE_FLOW[0x8A]_CNCMCLIENTMANAGER_INTERFACENUMBER_EXIT_DUP3=0x16f
 [TRACE]TRACE_FLOW[0x8A]_CNCMCLIENTMANAGER_SETCOMMUNICATIONINTERFACEL_ENTRY=0x106
 [TRACE]TRACE_FLOW[0x8A]_CNCMCLIENTMANAGER_SETCOMMUNICATIONINTERFACEL_EXIT=0x107
 [TRACE]TRACE_FLOW[0x8A]_CNCMCLIENTMANAGER_SETDATAINTERFACEL_ENTRY=0x108
@@ -106,12 +117,8 @@
 [TRACE]TRACE_FLOW[0x8A]_CNCMCONNECTIONMANHELPER_CNCMCONNECTIONMANHELPER_ENTRY_DESTRUCTOR=0x136
 [TRACE]TRACE_FLOW[0x8A]_CNCMCONNECTIONMANHELPER_CNCMCONNECTIONMANHELPER_ENTRY_DESTRUCTOR_EXIT=0x137
 [TRACE]TRACE_FLOW[0x8A]_CNCMCONNECTIONMANHELPER_CNCMCONNECTIONMANHELPER_EXIT=0x135
-[TRACE]TRACE_FLOW[0x8A]_CNCMCONNECTIONMANHELPER_CONSTRUCTL_ENTRY=0x138
-[TRACE]TRACE_FLOW[0x8A]_CNCMCONNECTIONMANHELPER_CONSTRUCTL_EXIT=0x139
 [TRACE]TRACE_FLOW[0x8A]_CNCMCONNECTIONMANHELPER_DOCANCEL_ENTRY=0x13e
 [TRACE]TRACE_FLOW[0x8A]_CNCMCONNECTIONMANHELPER_DOCANCEL_EXIT=0x13f
-[TRACE]TRACE_FLOW[0x8A]_CNCMCONNECTIONMANHELPER_NEWL_ENTRY=0x132
-[TRACE]TRACE_FLOW[0x8A]_CNCMCONNECTIONMANHELPER_NEWL_EXIT=0x133
 [TRACE]TRACE_FLOW[0x8A]_CNCMCONNECTIONMANHELPER_RUNL_ENTRY=0x140
 [TRACE]TRACE_FLOW[0x8A]_CNCMCONNECTIONMANHELPER_RUNL_EXIT=0x141
 [TRACE]TRACE_FLOW[0x8A]_CNCMCONNECTIONMANHELPER_START_ENTRY=0x13a
@@ -132,12 +139,8 @@
 [TRACE]TRACE_FLOW[0x8A]_CNCMIAPPROGRESSWATCHER_CNCMIAPPROGRESSWATCHER_ENTRY_DESTRUCTOR=0x150
 [TRACE]TRACE_FLOW[0x8A]_CNCMIAPPROGRESSWATCHER_CNCMIAPPROGRESSWATCHER_ENTRY_DESTRUCTOR_EXIT=0x151
 [TRACE]TRACE_FLOW[0x8A]_CNCMIAPPROGRESSWATCHER_CNCMIAPPROGRESSWATCHER_EXIT=0x14f
-[TRACE]TRACE_FLOW[0x8A]_CNCMIAPPROGRESSWATCHER_CONSTRUCTL_ENTRY=0x152
-[TRACE]TRACE_FLOW[0x8A]_CNCMIAPPROGRESSWATCHER_CONSTRUCTL_EXIT=0x153
 [TRACE]TRACE_FLOW[0x8A]_CNCMIAPPROGRESSWATCHER_DOCANCEL_ENTRY=0x156
 [TRACE]TRACE_FLOW[0x8A]_CNCMIAPPROGRESSWATCHER_DOCANCEL_EXIT=0x157
-[TRACE]TRACE_FLOW[0x8A]_CNCMIAPPROGRESSWATCHER_NEWL_ENTRY=0x14c
-[TRACE]TRACE_FLOW[0x8A]_CNCMIAPPROGRESSWATCHER_NEWL_EXIT=0x14d
 [TRACE]TRACE_FLOW[0x8A]_CNCMIAPPROGRESSWATCHER_RUNL_ENTRY=0x158
 [TRACE]TRACE_FLOW[0x8A]_CNCMIAPPROGRESSWATCHER_RUNL_EXIT=0x159
 [TRACE]TRACE_FLOW[0x8A]_CNCMIAPPROGRESSWATCHER_START_ENTRY=0x154
@@ -174,9 +177,9 @@
 [TRACE]TRACE_NORMAL[0x86]_CNCMCLIENTMANAGER_CNCMCLIENTMANAGER_CLOSE_DATA_INTERFACE=0x61
 [TRACE]TRACE_NORMAL[0x86]_CNCMCLIENTMANAGER_CNCMCLIENTMANAGER_PRE_CLOSE_COMM_INTERFACE=0x5c
 [TRACE]TRACE_NORMAL[0x86]_CNCMCLIENTMANAGER_CNCMCLIENTMANAGER_PRE_CLOSE_DATA_INTERFACE=0x5f
-[TRACE]TRACE_NORMAL[0x86]_CNCMCLIENTMANAGER_DATAINTERFACENUMBER=0x69
-[TRACE]TRACE_NORMAL[0x86]_CNCMCLIENTMANAGER_DATAINTERFACENUMBER_INTERFACE_INFO=0x67
-[TRACE]TRACE_NORMAL[0x86]_CNCMCLIENTMANAGER_DATAINTERFACENUMBER_INTERFACE_INFO2=0x68
+[TRACE]TRACE_NORMAL[0x86]_CNCMCLIENTMANAGER_INTERFACENUMBER=0x85
+[TRACE]TRACE_NORMAL[0x86]_CNCMCLIENTMANAGER_INTERFACENUMBER_INTERFACE_INFO=0x83
+[TRACE]TRACE_NORMAL[0x86]_CNCMCLIENTMANAGER_INTERFACENUMBER_INTERFACE_INFO2=0x84
 [TRACE]TRACE_NORMAL[0x86]_CNCMCLIENTMANAGER_SETDATAINTERFACEL_TRY_NEW_BUF_SIZE=0x64
 [TRACE]TRACE_NORMAL[0x86]_CNCMCLIENTMANAGER_SETMACADDRESSSTRING=0x66
 [TRACE]TRACE_NORMAL[0x86]_CNCMCLIENTMANAGER_SETUPCLASSSPECIFICDESCRIPTOR_PRE_SET_BLOCK=0x65
@@ -184,8 +187,6 @@
 [TRACE]TRACE_NORMAL[0x86]_CNCMCLIENTMANAGER_TRANSFERINTERFACESL_PRE_TRANSFER_INTERFACES=0x62
 [TRACE]TRACE_NORMAL[0x86]_CNCMCONNECTIONMANAGER_HANDLECONNECTIONCOMPLETEL_CHANGE_MTU=0x6a
 [TRACE]TRACE_NORMAL[0x86]_CNCMCONNECTIONMANAGER_HANDLECONNECTIONCOMPLETEL_CONN_NCM_INTERNAL_SVR=0x6b
-[TRACE]TRACE_NORMAL[0x86]_CNCMCONNECTIONMANAGER_MDNOHANDLEDHCPNOTIFICATION_CALL_IOCTL=0x73
-[TRACE]TRACE_NORMAL[0x86]_CNCMCONNECTIONMANAGER_MDNOHANDLEDHCPNOTIFICATION_RETURN_IOCTL=0x74
 [TRACE]TRACE_NORMAL[0x86]_CNCMCONNECTIONMANAGER_SETCUSTOMMTUL=0x6c
 [TRACE]TRACE_NORMAL[0x86]_CNCMCONNECTIONMANAGER_SETCUSTOMMTUL_INTER_INFO=0x6d
 [TRACE]TRACE_NORMAL[0x86]_CNCMCONNECTIONMANAGER_SETCUSTOMMTUL_INTER_MTU=0x71
@@ -345,6 +346,30 @@
 [[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CNCMCLASSCONTROLLER_START_EXIT=0xb3
 [[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CNCMCLASSCONTROLLER_STOP_ENTRY=0xb4
 [[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CNCMCLASSCONTROLLER_STOP_EXIT=0xb5
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CNCMCLIENTMANAGER_CONSTRUCTL_ENTRY=0x104
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CNCMCLIENTMANAGER_CONSTRUCTL_EXIT=0x105
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CNCMCLIENTMANAGER_CONTROLINTERFACENUMBER_ENTRY=0x166
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CNCMCLIENTMANAGER_CONTROLINTERFACENUMBER_ERR0=0x167
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CNCMCLIENTMANAGER_CONTROLINTERFACENUMBER_ERR1=0x168
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CNCMCLIENTMANAGER_CONTROLINTERFACENUMBER_ERR2=0x169
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CNCMCLIENTMANAGER_CONTROLINTERFACENUMBER_EXIT=0x16a
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CNCMCLIENTMANAGER_DATAINTERFACENUMBER_ENTRY=0x110
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CNCMCLIENTMANAGER_DATAINTERFACENUMBER_EXIT=0x111
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CNCMCLIENTMANAGER_DATAINTERFACENUMBER_EXIT_DUP1=0x112
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CNCMCLIENTMANAGER_DATAINTERFACENUMBER_EXIT_DUP2=0x113
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CNCMCLIENTMANAGER_DATAINTERFACENUMBER_EXIT_DUP3=0x114
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CNCMCLIENTMANAGER_NEWLC_ENTRY=0xf8
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CNCMCLIENTMANAGER_NEWLC_EXIT=0xf9
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CNCMCLIENTMANAGER_NEWL_ENTRY=0xfa
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CNCMCLIENTMANAGER_NEWL_EXIT=0xfb
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CNCMCONNECTIONMANHELPER_CONSTRUCTL_ENTRY=0x138
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CNCMCONNECTIONMANHELPER_CONSTRUCTL_EXIT=0x139
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CNCMCONNECTIONMANHELPER_NEWL_ENTRY=0x132
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CNCMCONNECTIONMANHELPER_NEWL_EXIT=0x133
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CNCMIAPPROGRESSWATCHER_CONSTRUCTL_ENTRY=0x152
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CNCMIAPPROGRESSWATCHER_CONSTRUCTL_EXIT=0x153
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CNCMIAPPROGRESSWATCHER_NEWL_ENTRY=0x14c
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CNCMIAPPROGRESSWATCHER_NEWL_EXIT=0x14d
 [[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBCLIENTMANAGER_CONSTRUCTL_ENTRY=0x6c
 [[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBCLIENTMANAGER_CONSTRUCTL_EXIT=0x6d
 [[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBCLIENTMANAGER_CUSBCLIENTMANAGER_ENTRY=0x6a
@@ -451,6 +476,14 @@
 [[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CNCMCLASSCONTROLLER_RUNL_STARTED=0x3f
 [[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CNCMCLASSCONTROLLER_START_PRINT_STATE=0x3c
 [[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CNCMCLASSCONTROLLER_STOP_PRINT_STATE=0x3d
+[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CNCMCLIENTMANAGER_CONTROLINTERFACENUMBER_INFO0=0x80
+[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CNCMCLIENTMANAGER_CONTROLINTERFACENUMBER_INFO1=0x81
+[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CNCMCLIENTMANAGER_CONTROLINTERFACENUMBER_INFO2=0x82
+[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CNCMCLIENTMANAGER_DATAINTERFACENUMBER=0x69
+[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CNCMCLIENTMANAGER_DATAINTERFACENUMBER_INTERFACE_INFO=0x67
+[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CNCMCLIENTMANAGER_DATAINTERFACENUMBER_INTERFACE_INFO2=0x68
+[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CNCMCONNECTIONMANAGER_MDNOHANDLEDHCPNOTIFICATION_CALL_IOCTL=0x73
+[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CNCMCONNECTIONMANAGER_MDNOHANDLEDHCPNOTIFICATION_RETURN_IOCTL=0x74
 [[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CNCMIAPREADER_SEARCHNCMIAPL_ENSURE_ONLY_ONE_NCM_IAP=0x36
 [[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBCLIENTMANAGER_CUSBCLIENTMANAGER_CLOSE_COMM_CHUNK=0x19
 [[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBCLIENTMANAGER_CUSBCLIENTMANAGER_CLOSE_COMM_INTERFACE=0x1a
--- a/usbmgmt/usbmgr/group/Usbman.iby	Mon Sep 06 11:27:08 2010 +0800
+++ b/usbmgmt/usbmgr/group/Usbman.iby	Thu Sep 16 12:03:29 2010 +0800
@@ -117,13 +117,12 @@
 file=ABI_DIR\USB_DIR\usbclasscontroller.dll		usbclasscontroller.dll
 file=ABI_DIR\USB_DIR\usbmanextensionplugin.dll		usbmanextensionplugin.dll
 
-#ifdef WITH_REFERENCE_USB_CHARGING_PLUGIN
-// *** Reference battery charging plug-in
-#if defined(SYMBIAN_ENABLE_USB_OTG_HOST) && defined (SYMBIAN_INCLUDE_USB_OTG_HOST)
-USB_PLUGIN(usbbatterychargingpluginotg.dll,usbbatterychargingpluginotg.rsc)
-#else
-USB_PLUGIN(usbbatterychargingplugin.dll,usbbatterychargingplugin.rsc)
-#endif
+#if defined(SYMBIAN_USB_BATTERYCHARGING_V1_1) || defined (WITH_REFERENCE_USB_CHARGING_PLUGIN)
+	#if defined(SYMBIAN_ENABLE_USB_OTG_HOST) && defined (SYMBIAN_INCLUDE_USB_OTG_HOST)
+		USB_PLUGIN(usbbatterychargingpluginotg.dll,usbbatterychargingpluginotg.rsc)
+	#else
+		USB_PLUGIN(usbbatterychargingplugin.dll,usbbatterychargingplugin.rsc)
+	#endif
 #endif
 
 // *** WHCM Class Controller - used for OBEX over USB.
--- a/usbmgmt/usbmgr/host/fdf/production/client/EABI/usbhoststacku.def	Mon Sep 06 11:27:08 2010 +0800
+++ b/usbmgmt/usbmgr/host/fdf/production/client/EABI/usbhoststacku.def	Thu Sep 16 12:03:29 2010 +0800
@@ -15,4 +15,5 @@
 	_ZN13RUsbHostStackC2Ev @ 14 NONAME
 	_ZNK13RUsbHostStack7VersionEv @ 15 NONAME
 	_ZN13RUsbHostStack16GetOtgDescriptorEjR14TOtgDescriptor @ 16 NONAME
+	_ZN13RUsbHostStack26GetConfigurationDescriptorEjR24TConfigurationDescriptor @ 17 NONAME
 
--- a/usbmgmt/usbmgr/host/fdf/production/client/public/usbhoststack.h	Mon Sep 06 11:27:08 2010 +0800
+++ b/usbmgmt/usbmgr/host/fdf/production/client/public/usbhoststack.h	Thu Sep 16 12:03:29 2010 +0800
@@ -70,6 +70,7 @@
 	IMPORT_C TInt GetProductStringDescriptor(TUint aDeviceId, TUint aLangId, TName& aString);
 	
 	IMPORT_C TInt GetOtgDescriptor(TUint aDeviceId, TOtgDescriptor& aDescriptor);
+	IMPORT_C TInt GetConfigurationDescriptor(TUint aDeviceId, TConfigurationDescriptor& aDescriptor);
 
 	// Support for server-side out-of-memory testing. In release, these just
 	// return KErrNone.
--- a/usbmgmt/usbmgr/host/fdf/production/client/src/session.cpp	Mon Sep 06 11:27:08 2010 +0800
+++ b/usbmgmt/usbmgr/host/fdf/production/client/src/session.cpp	Thu Sep 16 12:03:29 2010 +0800
@@ -370,6 +370,26 @@
 	return ret;
 	}
 
+
+EXPORT_C TInt RUsbHostStack::GetConfigurationDescriptor(TUint aDeviceId, TConfigurationDescriptor& aDescriptor)
+	{
+    OstTraceFunctionEntry0( RUSBHOSTSTACK_GETCONFIGRATIONDESCRIPTOR_ENTRY );
+    
+
+	TPckg<TConfigurationDescriptor> configDescriptorPckg(aDescriptor);
+	
+	TIpcArgs args;
+	args.Set(0, aDeviceId);
+	args.Set(1, &configDescriptorPckg);
+
+	TInt ret = SendReceive(EUsbFdfSrvGetConfigurationDescriptor, args);
+	OstTrace1( TRACE_NORMAL, RUSBHOSTSTACK_GETCONFIGRATIONDESCRIPTOR_DUP2, "\tret = %d", ret );
+	        
+	OstTraceFunctionExit0( RUSBHOSTSTACK_GETCONFIGRATIONDESCRIPTOR_EXIT );
+	return ret;
+	}
+
+
 EXPORT_C TInt RUsbHostStack::__DbgFailNext(TInt aCount)
 	{
 #ifdef _DEBUG
--- a/usbmgmt/usbmgr/host/fdf/production/client/traces/fixed_id.definitions	Mon Sep 06 11:27:08 2010 +0800
+++ b/usbmgmt/usbmgr/host/fdf/production/client/traces/fixed_id.definitions	Thu Sep 16 12:03:29 2010 +0800
@@ -12,6 +12,8 @@
 [TRACE]TRACE_FLOW[0x8A]_RUSBHOSTSTACK_DOCONNECT_EXIT_DUP2=0x25
 [TRACE]TRACE_FLOW[0x8A]_RUSBHOSTSTACK_ENABLEDRIVERLOADING_ENTRY=0xb
 [TRACE]TRACE_FLOW[0x8A]_RUSBHOSTSTACK_ENABLEDRIVERLOADING_EXIT=0xc
+[TRACE]TRACE_FLOW[0x8A]_RUSBHOSTSTACK_GETCONFIGRATIONDESCRIPTOR_ENTRY=0x26
+[TRACE]TRACE_FLOW[0x8A]_RUSBHOSTSTACK_GETCONFIGRATIONDESCRIPTOR_EXIT=0x27
 [TRACE]TRACE_FLOW[0x8A]_RUSBHOSTSTACK_GETMANUFACTURERSTRINGDESCRIPTOR_ENTRY=0x1b
 [TRACE]TRACE_FLOW[0x8A]_RUSBHOSTSTACK_GETMANUFACTURERSTRINGDESCRIPTOR_EXIT=0x1c
 [TRACE]TRACE_FLOW[0x8A]_RUSBHOSTSTACK_GETOTGDESCRIPTOR_ENTRY=0x1f
@@ -43,6 +45,7 @@
 [TRACE]TRACE_NORMAL[0x86]_RUSBHOSTSTACK_DOCONNECT_DUP4=0xc
 [TRACE]TRACE_NORMAL[0x86]_RUSBHOSTSTACK_DOCONNECT_DUT3=0xb
 [TRACE]TRACE_NORMAL[0x86]_RUSBHOSTSTACK_ENABLEDRIVERLOADING=0xd
+[TRACE]TRACE_NORMAL[0x86]_RUSBHOSTSTACK_GETCONFIGRATIONDESCRIPTOR_DUP2=0x25
 [TRACE]TRACE_NORMAL[0x86]_RUSBHOSTSTACK_GETMANUFACTURERSTRINGDESCRIPTOR=0x19
 [TRACE]TRACE_NORMAL[0x86]_RUSBHOSTSTACK_GETMANUFACTURERSTRINGDESCRIPTOR_DUP1=0x1a
 [TRACE]TRACE_NORMAL[0x86]_RUSBHOSTSTACK_GETOTGDESCRIPTOR=0x18
@@ -66,6 +69,8 @@
 [[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_DUP2_RUSBHOSTSTACK_DOCONNECT_EXIT=0xa
 [[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]__STARTSERVER_ENTRY=0x1
 [[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]__STARTSERVER_EXIT=0x2
+[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_RUSBHOSTSTACK_GETCONFIGRATIONDESCRIPTOR=0x23
+[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_RUSBHOSTSTACK_GETCONFIGRATIONDESCRIPTOR_DUP1=0x24
 [[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]__STARTSERVER=0x1
 [[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]__STARTSERVER_DUP1=0x2
 [[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]__STARTSERVER_DUP2=0x3
--- a/usbmgmt/usbmgr/host/fdf/production/server/group/fdf.mmp	Mon Sep 06 11:27:08 2010 +0800
+++ b/usbmgmt/usbmgr/host/fdf/production/server/group/fdf.mmp	Thu Sep 16 12:03:29 2010 +0800
@@ -28,4 +28,3 @@
 // UID3 = unique for FDF system
 UID 			0x1000008c 0x10282B48
 
-LIBRARY			usbdescriptors.lib
--- a/usbmgmt/usbmgr/host/fdf/production/server/group/fdf_base.mmp	Mon Sep 06 11:27:08 2010 +0800
+++ b/usbmgmt/usbmgr/host/fdf/production/server/group/fdf_base.mmp	Thu Sep 16 12:03:29 2010 +0800
@@ -52,3 +52,4 @@
 LIBRARY			ecom.lib
 LIBRARY			fdcbase.lib
 LIBRARY			efsrv.lib
+LIBRARY			usbdescriptors.lib
--- a/usbmgmt/usbmgr/host/fdf/production/server/inc/fdf.h	Mon Sep 06 11:27:08 2010 +0800
+++ b/usbmgmt/usbmgr/host/fdf/production/server/inc/fdf.h	Thu Sep 16 12:03:29 2010 +0800
@@ -101,6 +101,7 @@
 	void GetProductStringDescriptorL(TUint aDeviceId, TUint32 aLangId, TName& aString) const;
 	const RArray<TUint>& GetSupportedLanguagesL(TUint aDeviceId) const;
 	void GetOtgDeviceDescriptorL(TInt aDeviceId, TOtgDescriptor& aDescriptor) const;
+	void GetConfigurationDescriptorL(TInt aDeviceId, TUsbConfigurationDescriptor& aDescriptor) const;	
 	
 private:
 	CFdf();
--- a/usbmgmt/usbmgr/host/fdf/production/server/inc/fdfsession.h	Mon Sep 06 11:27:08 2010 +0800
+++ b/usbmgmt/usbmgr/host/fdf/production/server/inc/fdfsession.h	Thu Sep 16 12:03:29 2010 +0800
@@ -63,6 +63,7 @@
 	void GetProductStringDescriptor(const RMessage2& aMessage);
 	
 	void GetOtgDeviceDescriptor(const RMessage2& aMessage);
+	void GetConfigurationDescriptor(const RMessage2& aMessage);
 
 private:
 	enum TStringType
--- a/usbmgmt/usbmgr/host/fdf/production/server/public/fdfapi.h	Mon Sep 06 11:27:08 2010 +0800
+++ b/usbmgmt/usbmgr/host/fdf/production/server/public/fdfapi.h	Thu Sep 16 12:03:29 2010 +0800
@@ -56,8 +56,9 @@
 	EUsbFdfSrvGetManufacturerStringDescriptor							= 8,
 	EUsbFdfSrvGetProductStringDescriptor								= 9,
 	EUsbFdfSrvGetOtgDescriptor                                          = 10,
-	EUsbFdfSrvDbgFailNext												= 11,
-	EUsbFdfSrvDbgAlloc													= 12,
+	EUsbFdfSrvGetConfigurationDescriptor								= 11,
+	EUsbFdfSrvDbgFailNext												= 12,
+	EUsbFdfSrvDbgAlloc													= 13,
 	};
 
 /** Panic codes which which the server panics an offending client. */
--- a/usbmgmt/usbmgr/host/fdf/production/server/src/fdf.cpp	Mon Sep 06 11:27:08 2010 +0800
+++ b/usbmgmt/usbmgr/host/fdf/production/server/src/fdf.cpp	Thu Sep 16 12:03:29 2010 +0800
@@ -1270,6 +1270,15 @@
 	OstTraceFunctionExit0( CFDF_GETOTGDEVICEDESCRIPTORL_EXIT );
 	}
 
+void CFdf::GetConfigurationDescriptorL(TInt aDeviceId, TUsbConfigurationDescriptor& aDescriptor) const
+	{
+	OstTraceFunctionEntry0( CFDF_GETCONFIGRATIONDESCRIPTORL_ENTRY );
+	
+	DeviceProxyL(aDeviceId)->GetConfigurationDescriptor(aDescriptor);
+	OstTraceFunctionExit0( CFDF_GETCONFIGRATIONDESCRIPTORL_EXIT );
+	}
+
+
 void CFdf::GetSerialNumberStringDescriptorL(TUint aDeviceId, TUint32 aLangId, TName& aString) const
 	{
 	OstTraceFunctionEntry0( CFDF_GETSERIALNUMBERSTRINGDESCRIPTORL_ENTRY );
--- a/usbmgmt/usbmgr/host/fdf/production/server/traces/fixed_id.definitions	Mon Sep 06 11:27:08 2010 +0800
+++ b/usbmgmt/usbmgr/host/fdf/production/server/traces/fixed_id.definitions	Thu Sep 16 12:03:29 2010 +0800
@@ -74,8 +74,8 @@
 [TRACE]TRACE_DUMP[0x89]_TDEVICEEVENT_LOG_DUP5=0xc
 [TRACE]TRACE_DUMP[0x89]_TDEVICEEVENT_LOG_DUP6=0xd
 [TRACE]TRACE_DUMP[0x89]_TDEVICEEVENT_LOG_DUP7=0xe
-[TRACE]TRACE_ERROR[0x82]_CDEVICEPROXY_READSTRINGDESCRIPTORSL_DUP6=0x6
-[TRACE]TRACE_ERROR[0x82]_CDEVICEPROXY_READSTRINGDESCRIPTORSL_DUP7=0x7
+[TRACE]TRACE_ERROR[0x82]_CDEVICEPROXY_READSTRINGDESCRIPTORSL_DUP6=0x8
+[TRACE]TRACE_ERROR[0x82]_CDEVICEPROXY_READSTRINGDESCRIPTORSL_DUP7=0x9
 [TRACE]TRACE_ERROR[0x82]_CFDFSESSION_GETSINGLESUPPORTEDLANGUAGEORNUMBEROFSUPPORTEDLANGUAGESL_DUP3=0x1
 [TRACE]TRACE_ERROR[0x82]_CFDFSESSION_GETSINGLESUPPORTEDLANGUAGEORNUMBEROFSUPPORTEDLANGUAGESL_DUP4=0x2
 [TRACE]TRACE_ERROR[0x82]_CFDFSESSION_GETSINGLESUPPORTEDLANGUAGEORNUMBEROFSUPPORTEDLANGUAGESL_DUP5=0x3
@@ -123,7 +123,7 @@
 [TRACE]TRACE_FATAL[0x81]_CFDFSESSION_NOTIFYDEVICEEVENT=0x41
 [TRACE]TRACE_FATAL[0x81]_CFDFSESSION_NOTIFYDEVMONEVENT=0x45
 [TRACE]TRACE_FATAL[0x81]_CFDFSESSION_SERVICEL_DUP1=0x50
-[TRACE]TRACE_FATAL[0x81]_CFDFSESSION_SERVICEL_DUP12=0x40
+[TRACE]TRACE_FATAL[0x81]_CFDFSESSION_SERVICEL_DUP12=0x5b
 [TRACE]TRACE_FATAL[0x81]_CFDFSESSION_SERVICEL_DUP2=0x51
 [TRACE]TRACE_FATAL[0x81]_CFDFSESSION_SERVICEL_DUP3=0x52
 [TRACE]TRACE_FATAL[0x81]_CFDFSESSION_SERVICEL_DUP4=0x53
@@ -353,6 +353,8 @@
 [TRACE]TRACE_FLOW[0x8A]_CFDF_FORMATDEVICESEARCHKEY_EXIT=0xc0
 [TRACE]TRACE_FLOW[0x8A]_CFDF_FORMATINTERFACESEARCHKEY_ENTRY=0xc1
 [TRACE]TRACE_FLOW[0x8A]_CFDF_FORMATINTERFACESEARCHKEY_EXIT=0xc2
+[TRACE]TRACE_FLOW[0x8A]_CFDF_GETCONFIGRATIONDESCRIPTORL_ENTRY=0x112
+[TRACE]TRACE_FLOW[0x8A]_CFDF_GETCONFIGRATIONDESCRIPTORL_EXIT=0x113
 [TRACE]TRACE_FLOW[0x8A]_CFDF_GETDEVICEEVENT_ENTRY=0x82
 [TRACE]TRACE_FLOW[0x8A]_CFDF_GETDEVMONEVENT_ENTRY=0x83
 [TRACE]TRACE_FLOW[0x8A]_CFDF_GETMANUFACTURERSTRINGDESCRIPTORL_ENTRY=0xb7
@@ -458,7 +460,7 @@
 [TRACE]TRACE_NORMAL[0x86]_CFDFSESSION_NOTIFYDEVICEEVENTOUTSTANDING=0x9f
 [TRACE]TRACE_NORMAL[0x86]_CFDFSESSION_NOTIFYDEVMONEVENTOUTSTANDING=0xa2
 [TRACE]TRACE_NORMAL[0x86]_CFDFSESSION_SERVICEL=0x92
-[TRACE]TRACE_NORMAL[0x86]_CFDFSESSION_SERVICEL_DUP10=0x9c
+[TRACE]TRACE_NORMAL[0x86]_CFDFSESSION_SERVICEL_DUP10=0xaf
 [TRACE]TRACE_NORMAL[0x86]_CFDFSESSION_SERVICEL_DUP11=0x9d
 [TRACE]TRACE_NORMAL[0x86]_CFDF_APPENDINTERFACENUMBERTOARRAYL=0x84
 [TRACE]TRACE_NORMAL[0x86]_CFDF_CFDF=0x44
@@ -531,13 +533,25 @@
 [TRACE]TRACE_NORMAL[0x86]_FDF_SERVER_SRC_E32MAIN_DUP1=0xa1
 [TRACE]TRACE_NORMAL[0x86]_FDF_UTILS_REMOVE=0xa9
 [[OBSOLETE]][GROUP]a=0xdf
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_CFDF_GETCONFIGRATIONDESCRIPTORL_DUP1=0x49
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_CFDF_GETCONFIGRATIONDESCRIPTORL_DUP11=0x48
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_CFDF_GETCONFIGRATIONDESCRIPTORL_DUP2=0x4a
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_CFDF_GETCONFIGRATIONDESCRIPTORL_DUP3=0x4b
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_CFDF_GETCONFIGRATIONDESCRIPTORL_DUP4=0x4c
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_CFDF_GETCONFIGRATIONDESCRIPTORL_DUP5=0x4d
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_CFDF_GETCONFIGRATIONDESCRIPTORL_DUP6=0x4e
 [[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_CFDF_HANDLEDEVICEATTACHMENTL_DUP13=0x2c
+[[OBSOLETE]][TRACE]TRACE_ERROR[0x82]_CDEVICEPROXY_READSTRINGDESCRIPTORSL_DUP6=0x6
+[[OBSOLETE]][TRACE]TRACE_ERROR[0x82]_CDEVICEPROXY_READSTRINGDESCRIPTORSL_DUP7=0x7
 [[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_CDEVICEPROXY_GETCONFIGURATIONDESCRIPTOR_DUP1=0x8
 [[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_CDEVICEPROXY_NEWL=0x2
 [[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_CFDCPROXY_NEWFUNCTIONL_DUP3=0x13
 [[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_CFDCPROXY_NEWFUNCTIONL_DUP4=0x16
 [[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_CFDCPROXY_NEWFUNCTIONL_DUP6=0x14
 [[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_CFDCPROXY_NEWFUNCTIONL_DUP7=0x15
+[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_CFDFSESSION_SERVICEL_DUP10=0x59
+[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_CFDFSESSION_SERVICEL_DUP12=0x40
+[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_CFDFSESSION_SERVICEL_DUP13=0x5a
 [[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_CFDF_FORMATDEVICESEARCHKEY=0x3a
 [[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_CFDF_TOKENFORINTERFACE_DUP6=0x39
 [[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CACTIVEWAITFORBUSEVENT_CACTIVEWAITFORBUSEVENT_ENTRY=0x1
@@ -562,6 +576,8 @@
 [[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CFDFSESSION_COMPLETEDEVMONEVENTNOTIFICATION=0xe4
 [[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CFDFSESSION_COMPLETEDEVMONEVENTNOTIFICATIONL=0xe5
 [[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CFDFSESSION_DEVMONEVENT=0xe3
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CFDFSESSION_GETCONFIGURATIONDESCRIPTOR_ENTRY=0x114
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CFDFSESSION_GETCONFIGURATIONDESCRIPTOR_EXIT=0x115
 [[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CFDFSESSION_GETMANUFACTURERSTRINGDESCRIPTOR=0xea
 [[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CFDFSESSION_GETOTGDEVICEDESCRIPTOR=0xee
 [[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CFDFSESSION_GETPRODUCTSTRINGDESCRIPTOR=0xeb
@@ -598,6 +614,8 @@
 [[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CFDCPROXY_NEWFUNCTIONL_DUT1=0x22
 [[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CFDCPROXY_NEWFUNCTIONL_DUT2=0x27
 [[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CFDFSESSION_SERVICEL_DUP1=0x93
+[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CFDFSESSION_SERVICEL_DUP10=0x9c
+[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CFDFSESSION_SERVICEL_DUP12=0xae
 [[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CFDFSESSION_SERVICEL_DUP2=0x94
 [[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CFDFSESSION_SERVICEL_DUP3=0x95
 [[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CFDFSESSION_SERVICEL_DUP4=0x96
--- a/usbmgmt/usbmgr/host/functiondrivers/ms/msmm/client/traces/fixed_id.definitions	Mon Sep 06 11:27:08 2010 +0800
+++ b/usbmgmt/usbmgr/host/functiondrivers/ms/msmm/client/traces/fixed_id.definitions	Thu Sep 16 12:03:29 2010 +0800
@@ -1,28 +1,42 @@
 #Fixed group and trace id definitions. If this file is removed, the identifiers are rebuilt.
 [GROUP]TRACE_FLOW=0x8a
-[GROUP]TRACE_NORMAL=0x86
-[TRACE]TRACE_FLOW[0x8A]_RHOSTMASSSTORAGE_CONNECT_ENTRY=0x11
-[TRACE]TRACE_FLOW[0x8A]_RHOSTMASSSTORAGE_CONNECT_EXIT=0x12
-[TRACE]TRACE_FLOW[0x8A]_RHOSTMASSSTORAGE_DISCONNECT_ENTRY=0x13
-[TRACE]TRACE_FLOW[0x8A]_RHOSTMASSSTORAGE_DISCONNECT_EXIT=0x14
-[TRACE]TRACE_FLOW[0x8A]_RHOSTMASSSTORAGE_EJECTUSBDRIVES_ENTRY=0x16
-[TRACE]TRACE_FLOW[0x8A]_RHOSTMASSSTORAGE_EJECTUSBDRIVES_EXIT=0x17
-[TRACE]TRACE_FLOW[0x8A]_RHOSTMASSSTORAGE_VERSION_ENTRY=0x15
-[TRACE]TRACE_NORMAL[0x86]_RHOSTMASSSTORAGE_CONNECT=0x1
+[GROUP]TRACE_NORMAL=0x3
+[TRACE]TRACE_FLOW[0x8A]_RHOSTMASSSTORAGE_CONNECT_ENTRY=0x56
+[TRACE]TRACE_FLOW[0x8A]_RHOSTMASSSTORAGE_CONNECT_EXIT=0x57
+[TRACE]TRACE_FLOW[0x8A]_RHOSTMASSSTORAGE_DISCONNECT_ENTRY=0x58
+[TRACE]TRACE_FLOW[0x8A]_RHOSTMASSSTORAGE_DISCONNECT_EXIT=0x59
+[TRACE]TRACE_FLOW[0x8A]_RHOSTMASSSTORAGE_EJECTUSBDRIVES_ENTRY=0x5b
+[TRACE]TRACE_FLOW[0x8A]_RHOSTMASSSTORAGE_EJECTUSBDRIVES_EXIT=0x5c
+[TRACE]TRACE_FLOW[0x8A]_RHOSTMASSSTORAGE_VERSION_ENTRY=0x5a
+[TRACE]TRACE_NORMAL[0x3]_RHOSTMASSSTORAGE_CONNECT=0x3
+[[OBSOLETE]][GROUP]TRACE_ERROR=0x8d
+[[OBSOLETE]][GROUP]TRACE_NORMAL=0x86
 [[OBSOLETE]][TRACE]TRACE_ERROR[0x82]_RMSMMSESSION_CONNECT=0x1
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_MSMMCLIENT_SRC_STARTSERVER_ENTRY=0x1
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_MSMMCLIENT_SRC_STARTSERVER_EXIT=0x2
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_MSMMCLIENT_SRC_STARTSERVER_EXIT_DUP1=0x3
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_RMSMMSESSION_ADDFUNCTION_ENTRY=0x9
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_RMSMMSESSION_ADDFUNCTION_EXIT=0xa
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_RMSMMSESSION_CONNECT_ENTRY=0x4
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_RMSMMSESSION_CONNECT_EXIT=0x5
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_RMSMMSESSION_DBGALLOC_ENTRY=0xf
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_RMSMMSESSION_DBGALLOC_EXIT=0x10
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_RMSMMSESSION_DBGFAILNEXT_ENTRY=0xd
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_RMSMMSESSION_DBGFAILNEXT_EXIT=0xe
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_RMSMMSESSION_DISCONNECT_ENTRY=0x6
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_RMSMMSESSION_DISCONNECT_EXIT=0x7
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_RMSMMSESSION_REMOVEDEVICE_ENTRY=0xb
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_RMSMMSESSION_REMOVEDEVICE_EXIT=0xc
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_RMSMMSESSION_VERSION_ENTRY=0x8
+[[OBSOLETE]][TRACE]TRACE_ERROR[0x8B]_RMSMMSESSION_CONNECT=0x1
+[[OBSOLETE]][TRACE]TRACE_ERROR[0x8C]_RMSMMSESSION_CONNECT=0x1
+[[OBSOLETE]][TRACE]TRACE_ERROR[0x8D]_RMSMMSESSION_CONNECT=0x1
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_MSMMCLIENT_SRC_STARTSERVER_ENTRY=0x46
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_MSMMCLIENT_SRC_STARTSERVER_EXIT=0x47
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_MSMMCLIENT_SRC_STARTSERVER_EXIT_DUP1=0x48
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_RHOSTMASSSTORAGE_CONNECT_ENTRY=0x3f
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_RHOSTMASSSTORAGE_CONNECT_EXIT=0x40
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_RHOSTMASSSTORAGE_DISCONNECT_ENTRY=0x41
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_RHOSTMASSSTORAGE_DISCONNECT_EXIT=0x42
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_RHOSTMASSSTORAGE_EJECTUSBDRIVES_ENTRY=0x44
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_RHOSTMASSSTORAGE_EJECTUSBDRIVES_EXIT=0x45
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_RHOSTMASSSTORAGE_VERSION_ENTRY=0x43
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_RMSMMSESSION_ADDFUNCTION_ENTRY=0x4e
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_RMSMMSESSION_ADDFUNCTION_EXIT=0x4f
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_RMSMMSESSION_CONNECT_ENTRY=0x49
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_RMSMMSESSION_CONNECT_EXIT=0x4a
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_RMSMMSESSION_DBGALLOC_ENTRY=0x54
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_RMSMMSESSION_DBGALLOC_EXIT=0x55
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_RMSMMSESSION_DBGFAILNEXT_ENTRY=0x52
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_RMSMMSESSION_DBGFAILNEXT_EXIT=0x53
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_RMSMMSESSION_DISCONNECT_ENTRY=0x4b
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_RMSMMSESSION_DISCONNECT_EXIT=0x4c
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_RMSMMSESSION_REMOVEDEVICE_ENTRY=0x50
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_RMSMMSESSION_REMOVEDEVICE_EXIT=0x51
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_RMSMMSESSION_VERSION_ENTRY=0x4d
+[[OBSOLETE]][TRACE]TRACE_NORMAL[0x3]_RHOSTMASSSTORAGE_CONNECT=0x2
+[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_RHOSTMASSSTORAGE_CONNECT=0x1
--- a/usbmgmt/usbmgr/host/functiondrivers/ms/msmm/server/inc/msmmengine.h	Mon Sep 06 11:27:08 2010 +0800
+++ b/usbmgmt/usbmgr/host/functiondrivers/ms/msmm/server/inc/msmmengine.h	Thu Sep 16 12:03:29 2010 +0800
@@ -62,7 +62,7 @@
     @param aLogicalUnitNumber Current LU number value
     @param aDrive The drive on which current LU mounted
     */
-    void AddUsbMsLogicalUnitL(TInt aDeviceId, TInt aInterfaceNumber, 
+    TUsbMsLogicalUnit* AddUsbMsLogicalUnitL(TInt aDeviceId, TInt aInterfaceNumber, 
             TInt aLogicalUnitNumber, TText aDrive);
     
     /**
--- a/usbmgmt/usbmgr/host/functiondrivers/ms/msmm/server/inc/subcommands.h	Mon Sep 06 11:27:08 2010 +0800
+++ b/usbmgmt/usbmgr/host/functiondrivers/ms/msmm/server/inc/subcommands.h	Thu Sep 16 12:03:29 2010 +0800
@@ -95,7 +95,8 @@
     // From TSubCommandBase
     void DoExecuteL();
     void DoAsyncCmdCompleteL();
-
+	
+    TBool IsDriveMountedL(TInt aDriveNum);
 private:
     TText iDrive;
     TInt iLuNumber;
@@ -125,13 +126,12 @@
     };
 
 
-// TDeregisterInterface class
-// Sub-command to deregister a USB MS function from RUsbHostMsDevice
-NONSHARABLE_CLASS(TDeregisterInterface) : public TSubCommandBase
+// TRemoveUsbMsDevice class
+// Sub-command to remove a USB MS Device
+NONSHARABLE_CLASS(TRemoveUsbMsDevice) : public TSubCommandBase
     {
 public:
-    TDeregisterInterface(THostMsSubCommandParam& aParameter,
-            TUint8 aInterfaceNumber, TUint32 aInterfaceToken);
+    TRemoveUsbMsDevice(THostMsSubCommandParam& aParameter);
 
     // From TSubCommandBase
     void HandleError(THostMsErrData& aData, TInt aError);
@@ -140,52 +140,12 @@
     // From TSubCommandBase
     void DoExecuteL();
     
-private:
-    TUint8 iInterfaceNumber;
-    TUint32 iInterfaceToken;
-    THostMassStorageConfig iMsConfig;
-    TUsbMsDevice* iDeviceNode; // Not owned
-    TUsbMsInterface* iInterfaceNode; // Not owned
-    };
-
-
-// TDismountLogicalUnit class
-// Sub-command to dismount a logical unit
-class TUsbMsLogicalUnit;
-NONSHARABLE_CLASS (TDismountLogicalUnit) : public TSubCommandBase
-    {
-public:
-    TDismountLogicalUnit(THostMsSubCommandParam& aParameter,
+    void DismountLogicalUnitL(TUsbMsInterface& aInterfaceNode,
             const TUsbMsLogicalUnit& aLogicalUnit);
-
-    // From TSubCommandBase
-    void HandleError(THostMsErrData& aData, TInt aError);
     
 private:
-    // From TSubCommandBase
-    void DoExecuteL();
-
-private:
-    const TUsbMsLogicalUnit& iLogicalUnit;
-    };
-
-
-// TRemoveUsbMsDeviceNode class
-// Sub-command to dismount a logical unit
-class TMsmmNodeBase;
-NONSHARABLE_CLASS(TRemoveUsbMsDeviceNode) : public TSubCommandBase
-    {
-public:
-    TRemoveUsbMsDeviceNode(THostMsSubCommandParam& aParameter,
-            TMsmmNodeBase* aNodeToBeRemoved);
-
-    // From TSubCommandBase
-    void HandleError(THostMsErrData& aData, TInt aError);
-    
-private:
-    // From TSubCommandBase
-    void DoExecuteL();
-    TMsmmNodeBase* iNodeToBeRemoved; // No ownership
+    TText iDismountingDrive;
+    TUsbMsDevice* iDeviceNode; // Not owned
     };
 
 #endif /*SUBCOMMANDS_H*/
--- a/usbmgmt/usbmgr/host/functiondrivers/ms/msmm/server/src/eventhandler.cpp	Mon Sep 06 11:27:08 2010 +0800
+++ b/usbmgmt/usbmgr/host/functiondrivers/ms/msmm/server/src/eventhandler.cpp	Thu Sep 16 12:03:29 2010 +0800
@@ -376,27 +376,12 @@
         {
         User::Leave(KErrNotFound);
         }
-    TUsbMsInterface* interface = device->FirstChild();
+
     THostMsSubCommandParam parameter(iServer, *this, *this, iIncomingEvent);
-    while (interface)
-        {
-        TUsbMsLogicalUnit* logicalUnit = interface->FirstChild();
-        while (logicalUnit)
-            {
-            TDismountLogicalUnit* dismount = 
-                new (ELeave) TDismountLogicalUnit(parameter, *logicalUnit);
-            iSubCommandQueue.PushL(dismount);
-            logicalUnit = logicalUnit->NextPeer();
-            }
-        TDeregisterInterface* deregister = new (ELeave) TDeregisterInterface(
-                parameter, 
-                interface->iInterfaceNumber, interface->iInterfaceToken);
-        iSubCommandQueue.PushL(deregister);
-        interface = interface->NextPeer();
-        };
-    TRemoveUsbMsDeviceNode* removeNode = 
-        new (ELeave) TRemoveUsbMsDeviceNode(parameter, device);
-    iSubCommandQueue.PushL(removeNode);
+    TRemoveUsbMsDevice* removeMsDevice = new (ELeave) TRemoveUsbMsDevice(
+            parameter);
+    iSubCommandQueue.PushL(removeMsDevice);
+    
     OstTraceFunctionExit0( CDEVICEEVENTHANDLER_CREATESUBCMDFORREMOVINGUSBMSDEVICEL_EXIT );
     }
 
--- a/usbmgmt/usbmgr/host/functiondrivers/ms/msmm/server/src/msmmengine.cpp	Mon Sep 06 11:27:08 2010 +0800
+++ b/usbmgmt/usbmgr/host/functiondrivers/ms/msmm/server/src/msmmengine.cpp	Thu Sep 16 12:03:29 2010 +0800
@@ -101,7 +101,7 @@
     return interface;
     }
 
-void CMsmmEngine::AddUsbMsLogicalUnitL(TInt aDeviceId,
+TUsbMsLogicalUnit* CMsmmEngine::AddUsbMsLogicalUnitL(TInt aDeviceId,
         TInt aInterfaceNumber, TInt aLogicalUnitNumber, TText aDrive)
     {
     OstTraceFunctionEntry0( CMSMMENGINE_ADDUSBMSLOGICALUNITL_ENTRY );
@@ -113,15 +113,17 @@
         }
     
     TUsbMsInterface* interface = SearchInterface(device, aInterfaceNumber);
+    TUsbMsLogicalUnit* logicalUnit = NULL;
     if (interface)
         {
-        AddUsbMsLogicalUnitNodeL(interface, aLogicalUnitNumber, aDrive);
+        logicalUnit = AddUsbMsLogicalUnitNodeL(interface, aLogicalUnitNumber, aDrive);
         }
     else
         {
         User::Leave(KErrArgument); // A proper interface node can't be found
         }
     OstTraceFunctionExit0( CMSMMENGINE_ADDUSBMSLOGICALUNITL_EXIT );
+    return logicalUnit;
     }
 
 void CMsmmEngine::RemoveUsbMsNode(TMsmmNodeBase* aNodeToBeRemoved)
--- a/usbmgmt/usbmgr/host/functiondrivers/ms/msmm/server/src/subcommands.cpp	Mon Sep 06 11:27:08 2010 +0800
+++ b/usbmgmt/usbmgr/host/functiondrivers/ms/msmm/server/src/subcommands.cpp	Thu Sep 16 12:03:29 2010 +0800
@@ -293,12 +293,36 @@
         User::Leave(KErrArgument);
         }
     
+    TUsbMsLogicalUnit* logicalUnit = iServer.Engine().AddUsbMsLogicalUnitL(
+            iEvent.iDeviceId, iEvent.iInterfaceNumber, iLuNumber, iDrive);
+    
     ret = interface->iUsbMsDevice.MountLun(iLuNumber, driveNum);
-    if ((KErrNone != ret) && (KErrAlreadyExists != ret)
-            && (KErrNotReady != ret))
+    
+    if ( KErrNone != ret && KErrAlreadyExists != ret && KErrNotReady
+            != ret && KErrAbort != ret )
         {
-        if (KErrAbort != ret)
-            User::Leave (ret);
+        if ( KErrCorrupt == ret && IsDriveMountedL(driveNum) )
+            {
+            // Current implementation of USB Mass Storage extension will mount
+            // a logical unit successfully even the logical unit is in an 
+            // unsupported format like NTFS or CDFS. So we have to record this 
+            // Logical unit down in the our data engine in order to dismount it
+            // in future when the interface which presents this logical unit is
+            // dettached.
+            THostMsErrData errData;
+            errData.iError = EHostMsErrUnknownFileSystem;
+            errData.iE32Error = KErrCorrupt;
+            errData.iManufacturerString.Copy(
+                    device->iDevice.iManufacturerString);
+            errData.iProductString.Copy(device->iDevice.iProductString);
+            errData.iDriveName = iDrive;
+            iServer.PolicyPlugin()->SendErrorNotificationL(errData);
+            }
+        else
+            {
+            iServer.Engine().RemoveUsbMsNode(logicalUnit);
+            User::Leave(ret);
+            }
         }
 
     iHandler.Start();
@@ -306,6 +330,26 @@
     OstTraceFunctionExit0( TMOUNTLOGICALUNIT_DOEXECUTEL_EXIT );
     }
 
+TBool TMountLogicalUnit::IsDriveMountedL(TInt aDriveNum)
+    {
+    OstTraceFunctionEntry0( TMOUNTLOGICALUNIT_ISDRIVEMOUNTEDL_ENTRY );
+    // Check if the new drive mounted successfully.
+    RFs& fs = iServer.FileServerSession();
+
+    TDriveList drives;
+    User::LeaveIfError(fs.DriveList(drives));
+    
+    TBool ret = EFalse;
+    
+    if (aDriveNum >= 0 && aDriveNum < drives.MaxLength())
+        {
+        ret = drives[aDriveNum];
+        }
+    
+    OstTraceFunctionExit0( TMOUNTLOGICALUNIT_ISDRIVEMOUNTEDL_EXIT );
+    return ret;
+    }
+
 void TMountLogicalUnit::HandleError(THostMsErrData& aData, TInt aError)
     {
     OstTraceFunctionEntry0( TMOUNTLOGICALUNIT_HANDLEERROR_ENTRY );
@@ -321,30 +365,6 @@
     case KErrCorrupt:
         {
         aData.iError = EHostMsErrUnknownFileSystem;
-
-        // Current implementation of USB Mass Storage extension will mount
-        // a logical unit successfully even the logical unit is in an 
-        // unsupported format like NTFS or CDFS. So we have to recode this 
-        // Logical unit down in the our data engine in order to dismount it
-        // in future when the interface which presents this logical unit is
-        // dettached. Reuse DoAsyncCmdCompleteL to do this.
-
-        // Check if the new drive mounted successfully.
-        RFs& fs = iServer.FileServerSession();
-        TInt driveNum;
-        User::LeaveIfError(fs.CharToDrive(iDrive, driveNum));
-        
-        TDriveList drives;
-        User::LeaveIfError(fs.DriveList(drives));
-        
-        if (drives[driveNum])
-            {
-            // Drive name mounted
-            DoAsyncCmdCompleteL();
-            
-            // Restart the handler
-            iHandler.Start();
-            }
         }
         break;
     default:
@@ -365,9 +385,6 @@
     {
     OstTraceFunctionEntry0( TMOUNTLOGICALUNIT_DOASYNCCMDCOMPLETEL_ENTRY );
     
-    iServer.Engine().AddUsbMsLogicalUnitL(
-            iEvent.iDeviceId, iEvent.iInterfaceNumber, 
-            iLuNumber, iDrive);
     iCreator.CreateSubCmdForSaveLatestMountInfoL(iDrive, iLuNumber);
     OstTraceFunctionExit0( TMOUNTLOGICALUNIT_DOASYNCCMDCOMPLETEL_EXIT );
     }
@@ -466,59 +483,71 @@
 
 
 /**
- *  TDeregisterInterface member functions
+ *  TRemoveUsbMsDevice member functions
  */
 
-TDeregisterInterface::TDeregisterInterface(
-        THostMsSubCommandParam& aParameter, 
-        TUint8 aInterfaceNumber, TUint32 aInterfaceToken):
+TRemoveUsbMsDevice::TRemoveUsbMsDevice(
+        THostMsSubCommandParam& aParameter):
 TSubCommandBase(aParameter),
-iInterfaceNumber(aInterfaceNumber),
-iInterfaceToken(aInterfaceToken),
-iDeviceNode(NULL),
-iInterfaceNode(NULL)
+iDismountingDrive(0),
+iDeviceNode(NULL)
     {
-    OstTraceFunctionEntry0( TDEREGISTERINTERFACE_TDEREGISTERINTERFACE_CONS_ENTRY );
+    OstTraceFunctionEntry0( TREMOVEUSBMSDEVICE_TREMOVEUSBMSDEVICE_CONS_ENTRY );
     }
 
-void TDeregisterInterface::DoExecuteL()
+void TRemoveUsbMsDevice::DoExecuteL()
     {
-    OstTraceFunctionEntry0( TDEREGISTERINTERFACE_DOEXECUTEL_ENTRY );
+    OstTraceFunctionEntry0( TREMOVEUSBMSDEVICE_DOEXECUTEL_ENTRY );
     
     iDeviceNode = iServer.Engine().SearchDevice(iEvent.iDeviceId);
     if (!iDeviceNode)
         {
-        User::Leave(KErrArgument);
-        }
-
-    iInterfaceNode = iServer.Engine().SearchInterface(iDeviceNode, 
-            iInterfaceNumber);
-    if (!iInterfaceNode)
-        {
-        User::Leave(KErrArgument);
+        User::Leave(KErrNotFound);
         }
- 
-    TUSBMSDeviceDescription& device = iDeviceNode->iDevice;
-
-    iMsConfig.iInterfaceToken = iInterfaceToken;
-    iMsConfig.iVendorId = device.iVendorId;
-    iMsConfig.iProductId = device.iVendorId;
-    iMsConfig.iBcdDevice = device.iBcdDevice;
-    iMsConfig.iConfigurationNumber = device.iConfigurationNumber;
-    iMsConfig.iInterfaceNumber = iInterfaceNumber;
-    iMsConfig.iSerialNumber.Copy(device.iSerialNumber);
-    iInterfaceNode->iUsbMsDevice.Remove();
+    
+    TUsbMsInterface* interfaceNode = iDeviceNode->FirstChild();
+    while (interfaceNode)
+        {
+        TUsbMsLogicalUnit* logicalUnit = interfaceNode->FirstChild();
+        while (logicalUnit)
+            {
+            DismountLogicalUnitL(*interfaceNode, *logicalUnit);
+            logicalUnit = logicalUnit->NextPeer();
+            }
+        
+        interfaceNode->iUsbMsDevice.Remove();
+        interfaceNode = interfaceNode->NextPeer();
+        }
+    
+    iServer.Engine().RemoveUsbMsNode(iDeviceNode);
+    iDeviceNode = NULL;
 
     // Activate the handler.
     iHandler.Start();
     // Simulate a async request be completed.
     iHandler.Complete();
-    OstTraceFunctionExit0( TDEREGISTERINTERFACE_DOEXECUTEL_EXIT );
+    
+    OstTraceFunctionExit0( TREMOVEUSBMSDEVICE_DOEXECUTEL_EXIT );
     }
 
-void TDeregisterInterface::HandleError(THostMsErrData& aData, TInt aError)
+void TRemoveUsbMsDevice::DismountLogicalUnitL(
+        TUsbMsInterface& aInterfaceNode,
+        const TUsbMsLogicalUnit& aLogicalUnit)
     {
-    OstTraceFunctionEntry0( TDEREGISTERINTERFACE_HANDLEERROR_ENTRY );
+    OstTraceFunctionEntry0( TREMOVEUSBMSDEVICE_DISMOUNTLOGICALUNITL_ENTRY );
+    RFs& fs = iServer.FileServerSession();
+    TInt driveNum;
+    fs.CharToDrive(aLogicalUnit.iDrive, driveNum);
+    
+    iDismountingDrive = aLogicalUnit.iDrive;
+    User::LeaveIfError(aInterfaceNode.iUsbMsDevice.DismountLun(driveNum));    
+    iDismountingDrive = 0;
+    OstTraceFunctionExit0( TREMOVEUSBMSDEVICE_DISMOUNTLOGICALUNITL_EXIT );
+    }
+    
+void TRemoveUsbMsDevice::HandleError(THostMsErrData& aData, TInt aError)
+    {
+    OstTraceFunctionEntry0( TREMOVEUSBMSDEVICE_HANDLEERROR_ENTRY );
     
     switch (aError)
         {
@@ -537,127 +566,8 @@
         aData.iManufacturerString.Copy(iDeviceNode->iDevice.iManufacturerString);
         aData.iProductString.Copy(iDeviceNode->iDevice.iProductString);
         }
-    aData.iDriveName = 0;
-    OstTraceFunctionExit0( TDEREGISTERINTERFACE_HANDLEERROR_EXIT );
-    }
-
-/**
- *  TDismountLogicalUnit member functions
- */
-
-TDismountLogicalUnit::TDismountLogicalUnit(
-        THostMsSubCommandParam& aParameter,
-        const TUsbMsLogicalUnit& aLogicalUnit):
-TSubCommandBase(aParameter),
-iLogicalUnit(aLogicalUnit)
-    {
-    OstTraceFunctionEntry0( TDISMOUNTLOGICALUNIT_TDISMOUNTLOGICALUNIT_CONS_ENTRY );
-    }
-
-void TDismountLogicalUnit::DoExecuteL()
-    {
-    OstTraceFunctionEntry0( TDISMOUNTLOGICALUNIT_DOEXECUTEL_ENTRY );
-    
-    RFs& fs = iServer.FileServerSession();
-    TInt driveNum;
-    fs.CharToDrive(iLogicalUnit.iDrive, driveNum);
-
-    TUsbMsInterface* interface(NULL);
-    interface = iLogicalUnit.Parent();
-    if (!interface)
-        {
-        User::Leave(KErrArgument);
-        }
-    User::LeaveIfError(interface->iUsbMsDevice.DismountLun(driveNum));
-    
-    // Activate the handler.
-    iHandler.Start();
-    // Simulate a async request be completed.
-    iHandler.Complete();
-    OstTraceFunctionExit0( TDISMOUNTLOGICALUNIT_DOEXECUTEL_EXIT );
-    }
-
-void TDismountLogicalUnit::HandleError(THostMsErrData& aData, TInt aError)
-    {
-    OstTraceFunctionEntry0( TDISMOUNTLOGICALUNIT_HANDLEERROR_ENTRY );
-    
-    switch (aError)
-        {
-    case KErrNoMemory:
-        aData.iError = EHostMsErrOutOfMemory;
-        break;
-    case KErrArgument:
-        aData.iError = EHostMsErrInvalidParameter;
-        break;
-    default:
-        aData.iError = EHostMsErrGeneral;
-        }
-    aData.iE32Error = aError;
-    TUsbMsDevice* deviceNode = iServer.Engine().SearchDevice(iEvent.iDeviceId);
-    if (deviceNode)
-        {
-        aData.iManufacturerString.Copy(deviceNode->iDevice.iManufacturerString);
-        aData.iProductString.Copy(deviceNode->iDevice.iProductString);
-        }
-    aData.iDriveName = iLogicalUnit.iDrive;
-    OstTraceFunctionExit0( TDISMOUNTLOGICALUNIT_HANDLEERROR_EXIT );
-    }
-
-/**
- *  TRemoveUsbMsDeviceNode member functions
- */
-
-TRemoveUsbMsDeviceNode::TRemoveUsbMsDeviceNode(
-        THostMsSubCommandParam& aParameter,
-        TMsmmNodeBase* aNodeToBeRemoved):
-TSubCommandBase(aParameter),
-iNodeToBeRemoved(aNodeToBeRemoved)
-    {
-    OstTraceFunctionEntry0( TREMOVEUSBMSDEVICENODE_TREMOVEUSBMSDEVICENODE_CONS_ENTRY );
-    }
-
-void TRemoveUsbMsDeviceNode::DoExecuteL()
-    {
-    OstTraceFunctionEntry0( TREMOVEUSBMSDEVICENODE_DOEXECUTEL_ENTRY );
-    
-    if(iNodeToBeRemoved)
-        {
-        iServer.Engine().RemoveUsbMsNode(iNodeToBeRemoved);
-        iNodeToBeRemoved = NULL;
-        }
-    else
-        {
-        User::Leave(KErrArgument);
-        }
-    
-    // Activate the handler.
-    iHandler.Start();
-    // Simulate a async request be completed.
-    iHandler.Complete();
-    OstTraceFunctionExit0( TREMOVEUSBMSDEVICENODE_DOEXECUTEL_EXIT );
-    }
-
-void TRemoveUsbMsDeviceNode::HandleError(THostMsErrData& aData, TInt aError)
-    {
-      OstTraceFunctionEntry0( TREMOVEUSBMSDEVICENODE_HANDLEERROR_ENTRY );
-      
-    switch (aError)
-        {
-    case KErrArgument:
-        aData.iError = EHostMsErrInvalidParameter;
-        break;
-    default:
-        aData.iError = EHostMsErrGeneral;
-        }
-    aData.iE32Error = aError;
-    TUsbMsDevice* deviceNode = iServer.Engine().SearchDevice(iEvent.iDeviceId);
-    if (deviceNode)
-        {
-        aData.iManufacturerString.Copy(deviceNode->iDevice.iManufacturerString);
-        aData.iProductString.Copy(deviceNode->iDevice.iProductString);
-        }
-    aData.iDriveName = 0;
-    OstTraceFunctionExit0( TREMOVEUSBMSDEVICENODE_HANDLEERROR_EXIT );
+    aData.iDriveName = iDismountingDrive;
+    OstTraceFunctionExit0( TREMOVEUSBMSDEVICE_HANDLEERROR_EXIT );
     }
 
 // End of file
Binary file usbmgmt/usbmgr/usbman/chargingplugin/group/10208DD7.txt has changed
--- a/usbmgmt/usbmgr/usbman/chargingplugin/group/UsbBatteryChargingPlugin.mmp	Mon Sep 06 11:27:08 2010 +0800
+++ b/usbmgmt/usbmgr/usbman/chargingplugin/group/UsbBatteryChargingPlugin.mmp	Thu Sep 16 12:03:29 2010 +0800
@@ -24,7 +24,6 @@
 */
 
 TARGET			usbbatterychargingplugin.dll
-
 #include "UsbBatteryChargingPluginBase.mmp"
 
 SOURCEPATH      ../src
--- a/usbmgmt/usbmgr/usbman/chargingplugin/group/UsbBatteryChargingPluginBase.mmp	Mon Sep 06 11:27:08 2010 +0800
+++ b/usbmgmt/usbmgr/usbman/chargingplugin/group/UsbBatteryChargingPluginBase.mmp	Thu Sep 16 12:03:29 2010 +0800
@@ -22,7 +22,6 @@
 @SYMPurpose base mmp of UsbMan extension plugin for battery charging.
 @SYMPurpose Resource file for charging plugin.
 */
-
 TARGETTYPE		PLUGIN
 // UID2 = 0x10009d8d for ECOM plugins.
 // UID3 = the 'DLL UID' (see resource file)
@@ -36,15 +35,12 @@
 SOURCE          chargingstates.cpp
 SOURCE          devicestatetimer.cpp
 SOURCE          reenumerator.cpp
-SOURCE          repositorynotifier.cpp
 
 
 USERINCLUDE		../inc
 USERINCLUDE		../public
 OS_LAYER_SYSTEMINCLUDE_SYMBIAN
 
-// use this line for default implementation
-USERINCLUDE	../inc/default 
 USERINCLUDE	../traces	
 
 LIBRARY 		euser.lib 
--- a/usbmgmt/usbmgr/usbman/chargingplugin/group/UsbBatteryChargingPluginotg.mmp	Mon Sep 06 11:27:08 2010 +0800
+++ b/usbmgmt/usbmgr/usbman/chargingplugin/group/UsbBatteryChargingPluginotg.mmp	Thu Sep 16 12:03:29 2010 +0800
@@ -24,7 +24,6 @@
 */
 
 TARGET			usbbatterychargingpluginotg.dll
-
 #include "UsbBatteryChargingPluginBase.mmp"
 
 SOURCEPATH      ../src
--- a/usbmgmt/usbmgr/usbman/chargingplugin/group/bld.inf	Mon Sep 06 11:27:08 2010 +0800
+++ b/usbmgmt/usbmgr/usbman/chargingplugin/group/bld.inf	Thu Sep 16 12:03:29 2010 +0800
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2007-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"
@@ -37,7 +37,6 @@
 ../public/CUsbBatteryChargingPlugin.h   SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(usb/charging/cusbbatterychargingplugin.h)
 ../public/chargingstates.h              SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(usb/charging/chargingstates.h)
 ../public/devicestatetimer.h			SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(devicestatetimer.h)
-../public/repositorynotifier.h			SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(repositorynotifier.h)
 ../public/motgobserver.h				SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(motgobserver.h)
 ../public/usbbatterycharging.h			SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(usbbatterycharging.h)
 
--- a/usbmgmt/usbmgr/usbman/chargingplugin/inc/default/cusbbatterycharginglicenseehooks.h	Mon Sep 06 11:27:08 2010 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,68 +0,0 @@
-/*
-* Copyright (c) 2005-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
-*/
-
-#include <e32base.h>
-
-
-class CUsbBatteryChargingLicenseeHooks : public CBase
-	{
-public:
-	inline static CUsbBatteryChargingLicenseeHooks* NewL();
-	inline ~CUsbBatteryChargingLicenseeHooks();
-
-	inline void StartCharging(TUint aMilliAmps);
-	inline void StopCharging();
-private:
-	inline CUsbBatteryChargingLicenseeHooks();
-	inline void ConstructL();
-	};
-
-
-inline CUsbBatteryChargingLicenseeHooks* CUsbBatteryChargingLicenseeHooks::NewL()
-	{
-	CUsbBatteryChargingLicenseeHooks* self = new(ELeave) CUsbBatteryChargingLicenseeHooks;
-	CleanupStack::PushL(self);
-	self->ConstructL();
-	CleanupStack::Pop();
-	return self;
-	}
-
-inline CUsbBatteryChargingLicenseeHooks::~CUsbBatteryChargingLicenseeHooks()
-	{
-	}
-
-inline void CUsbBatteryChargingLicenseeHooks::StartCharging(TUint /*aMilliAmps*/)
-	{
-	}
-
-inline void CUsbBatteryChargingLicenseeHooks::StopCharging()
-	{
-	}
-
-inline CUsbBatteryChargingLicenseeHooks::CUsbBatteryChargingLicenseeHooks()
-	{
-	}
-
-inline void CUsbBatteryChargingLicenseeHooks::ConstructL()
-	{
-	}
-
--- a/usbmgmt/usbmgr/usbman/chargingplugin/inc/reenumerator.h	Mon Sep 06 11:27:08 2010 +0800
+++ b/usbmgmt/usbmgr/usbman/chargingplugin/inc/reenumerator.h	Thu Sep 16 12:03:29 2010 +0800
@@ -29,8 +29,12 @@
 #include <dummyldd.h>
 #define __D32USBC_H__ // ensure that d32usbc is ignored
 #else
+#ifdef SYMBIAN_USB_BATTERYCHARGING_V1_1
+#include <usb/d32usbc.h>
+#else
 #include <d32usbc.h>
 #endif
+#endif
 
 class CUsbChargingReEnumerator : public CActive
 	{
--- a/usbmgmt/usbmgr/usbman/chargingplugin/public/CUsbBatteryChargingPlugin.h	Mon Sep 06 11:27:08 2010 +0800
+++ b/usbmgmt/usbmgr/usbman/chargingplugin/public/CUsbBatteryChargingPlugin.h	Thu Sep 16 12:03:29 2010 +0800
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2008-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"
@@ -29,18 +29,28 @@
 #define __D32USBC_H__ // ensure that d32usbc is ignored
 #define private protected
 #else
+#ifdef SYMBIAN_USB_BATTERYCHARGING_V1_1
+#include <usb/d32usbc.h>
+#else
 #include <d32usbc.h>
 #endif
+#endif
 
 #include <cusbmanextensionplugin.h>
+#include <musbdevicenotify.h>
+#ifdef SYMBIAN_USB_BATTERYCHARGING_V1_1
+#include <musbchargingnotify.h>
+#endif
+
 #include "usbbatterycharging.h"
-#include <musbdevicenotify.h>
 #include "devicestatetimer.h"
-#include "repositorynotifier.h"
 #include "motgobserver.h"
+#include "usbchargingpublishedinfo.h"
+
+
+
 
 class CUsbChargingReEnumerator;
-class CUsbBatteryChargingLicenseeHooks;
 
 // For host OTG enabled charging plug-in
 #ifdef SYMBIAN_ENABLE_USB_OTG_HOST_PRIV
@@ -52,7 +62,6 @@
 
 enum TUsbBatteryChargingPanic
     {
-    EUsbBatteryChargingPanicBadUserSetting = 0,
     EUsbBatteryChargingPanicBadPluginState = 1,
     EUsbBatteryChargingPanicUnexpectedPluginState = 2,
     EUsbBatteryChargingPanicBadDeviceState = 3,
@@ -61,9 +70,17 @@
     EUsbBatteryChargingPanicBadCharingCurrentNegotiation = 6
     };
 
+enum TUsbSpeedType
+    {
+    EUsbFullSpeed = 1,
+    EUsbHighSpeed = 2   
+    };
+
 // For host OTG enabled charging plug-in
 class MUsbBatteryChargingPluginInterface : public MUsbDeviceNotify,
-    public MUsbChargingRepositoryObserver,
+#ifdef SYMBIAN_USB_BATTERYCHARGING_V1_1
+    public MUsbChargingNotify,
+#endif
     public MUsbChargingDeviceStateTimerObserver, public MOtgPropertiesObserver
     {
 public:  // from MUsbDeviceNotify
@@ -71,10 +88,7 @@
         TUsbServiceState aOldState, TUsbServiceState aNewState) = 0;
     virtual void UsbDeviceStateChange (TInt aLastError,
         TUsbDeviceState aOldState, TUsbDeviceState aNewState) = 0;
-
-public: // from MUsbChargingRepositoryObserver
-    virtual void HandleRepositoryValueChangedL(const TUid& aRepository, TUint aId, TInt aVal) = 0;
-    
+  
 public: // from MUsbChargingDeviceStateTimerObserver
     virtual void DeviceStateTimeout() = 0;
 
@@ -85,17 +99,21 @@
     virtual void MpsoOtgStateChangedL(TUsbOtgState aNewState) = 0;
 #endif    
     virtual void MpsoVBusStateChanged(TInt aNewState) = 0;
+// From MUsbChargingNotify
+#ifdef SYMBIAN_USB_BATTERYCHARGING_V1_1
+    virtual void UsbChargingPortType(TUint aChargingPortType) = 0;
+	virtual void PeerDeviceMaxPower(TUint aCurrent) = 0;
+#endif
     };
 
 class TUsbBatteryChargingPluginStateBase;
 class TUsbBatteryChargingPluginStateIdle;
-class TUsbBatteryChargingPluginStateIdleUserDisabled;
-class TUsbBatteryChargingPluginStateNoValidcurrent;
+class TUsbBatteryChargingPluginStateNoValidCurrent;
 class TUsbBatteryChargingPluginStateCurrentNegotiating;
-class TUsbBatteryChargingPluginStateCharging;
-class TUsbBatteryChargingPluginStateIdelNegotiated;
+class TUsbBatteryChargingPluginStateIdleNegotiated;
 class TUsbBatteryChargingPluginStateBEndedCableNotPresent;
 
+
 enum TUsbChargingPluginState
     {
     // The default first state of this plugin
@@ -107,16 +125,10 @@
     
     // Negotiation failed
     EPluginStateNoValidCurrent,
-    
-    // The only that indicate charging is going on 
-    EPluginStateCharging,
-    
+      
     // charging is stopped for some reason, but negotiation is done already
     EPluginStateIdleNegotiated,
     
-    // User Disabled "charging from usb" functionality
-    EPluginStateUserDisabled,
-
     // Deivce is connect with A end cable, so, no way to do a charging to itself 
     EPluginStateBEndedCableNotPresent,
         
@@ -130,10 +142,8 @@
     {
     friend class TUsbBatteryChargingPluginStateBase;
     friend class TUsbBatteryChargingPluginStateIdle;
-    friend class TUsbBatteryChargingPluginStateUserDisabled;
     friend class TUsbBatteryChargingPluginStateNoValidCurrent;
     friend class TUsbBatteryChargingPluginStateCurrentNegotiating;
-    friend class TUsbBatteryChargingPluginStateCharging;
     friend class TUsbBatteryChargingPluginStateIdleNegotiated;
     friend class TUsbBatteryChargingPluginStateBEndedCableNotPresent;
     
@@ -150,10 +160,7 @@
         TUsbServiceState aOldState, TUsbServiceState aNewState);
     void UsbDeviceStateChange (TInt aLastError,
         TUsbDeviceState aOldState, TUsbDeviceState aNewState);
-
-    // from MUsbChargingRepositoryObserver
-    void HandleRepositoryValueChangedL(const TUid& aRepository, TUint aId, TInt aVal);
-    
+  
     // from MUsbChargingDeviceStateTimerObserver
     void DeviceStateTimeout();
 
@@ -165,18 +172,23 @@
 #endif
     
     void MpsoVBusStateChanged(TInt aNewState);
+
+    // from MUsbChargingNotify
+#ifdef SYMBIAN_USB_BATTERYCHARGING_V1_1    
+    void UsbChargingPortType(TUint aChargingPortType);
+	void PeerDeviceMaxPower(TUint aCurrent);
+#endif
+
+    void ResetFromChargingPossible();
+    const TDesC8* ChargingTypeToString(TUint aChargingType);
 private:
     CUsbBatteryChargingPlugin(MUsbmanExtensionPluginObserver& aObserver);
     void ConstructL();
     void Panic(TUsbBatteryChargingPanic aPanic);
 
 private:
-    void StartCharging(TUint aMilliAmps);
-    void StopCharging();
-    
-    void SetNegotiatedCurrent(TUint aMilliAmps);
+   
     void ReadCurrentRequestValuesL();
-    
     void NegotiateChargingCurrent();
     void NegotiateNextCurrentValueL();
     void RequestCurrentL(TUint aMilliAmps);
@@ -188,17 +200,15 @@
     TBool IsUsbChargingPossible();
     
     void LogStateText(TUsbDeviceState aState);
-    void PushRecoverState(TUsbChargingPluginState aRecoverState);
-    TUsbChargingPluginState PopRecoverState();
-    
+   
     TUsbChargingPluginState SetState(TUsbChargingPluginState aState);
+	void PublishChargingInfo();
+	void UpdateChargingInfo();
+	void QueryCurrentSpeed();
     
 private: // owned
     RDevUsbcClient& iLdd;
-       
-    // user allow usb charging function already?
-    TUsbBatteryChargingUserSetting iUserSetting;
-    
+         
     // More than one value will be tried by the negotiation process to 
     // aquire a as larger current value as possible for charging
     RArray<TInt> iCurrentValues;
@@ -210,14 +220,14 @@
     TInt iCurrentIndexRequested;
     
     //value of negotiated current
-    TInt iAvailableMilliAmps;   
+    TInt iAvailableMilliAmps; 
+
+	//when ACARIDA, max power in B device's configuration
+	TInt iBDevMaxPower;
 
     CUsbChargingDeviceStateTimer*   iDeviceStateTimer;
-    CUsbChargingRepositoryNotifier* iRepositoryNotifier;
     CUsbChargingReEnumerator*       iDeviceReEnumerator;
 
-    CUsbBatteryChargingLicenseeHooks* iLicenseeHooks;
-
 // For host OTG enabled charging plug-in
 #ifdef SYMBIAN_ENABLE_USB_OTG_HOST_PRIV     
     //Outer state watchers
@@ -234,9 +244,15 @@
     
     // Plug-in States
     TUsbChargingPluginState iPluginState; // Current state machine status
-    TUsbChargingPluginState iPluginStateToRecovery; // The recover state when user enable USB Charging
     TUsbBatteryChargingPluginStateBase* iCurrentState; // Owned
     TUsbBatteryChargingPluginStateBase* iPluginStates[EPluginStateCount]; // State implementations
+
+    TUsbSpeedType iUsbSpeedType;
+#ifdef SYMBIAN_USB_BATTERYCHARGING_V1_1		
+    TUsbcChargerDetectorProperties iChargerDetectotCaps;
+#endif
+    TPckgBuf<TPublishedUsbChargingInfo> iChargingInfo;
+    TPublishedUsbChargingInfo iLastPublishedInfo;
     };
 
 #endif // USBBATTERYCHARGINGPLUGIN_H
--- a/usbmgmt/usbmgr/usbman/chargingplugin/public/chargingstates.h	Mon Sep 06 11:27:08 2010 +0800
+++ b/usbmgmt/usbmgr/usbman/chargingplugin/public/chargingstates.h	Thu Sep 16 12:03:29 2010 +0800
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* 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"
@@ -28,19 +28,20 @@
     {
     friend class CUsbBatteryChargingPlugin;
     
-protected:  // from MUsbBatteryChargingPluginInterface
+protected:  
+	// from MUsbBatteryChargingPluginInterface
     // from MUsbDeviceNotify
     virtual void UsbServiceStateChange (TInt aLastError,
         TUsbServiceState aOldState, TUsbServiceState aNewState);
     virtual void UsbDeviceStateChange (TInt aLastError,
         TUsbDeviceState aOldState, TUsbDeviceState aNewState);
 
-    // from MUsbChargingRepositoryObserver
-    virtual void HandleRepositoryValueChangedL (const TUid& aRepository,
-        TUint aId, TInt aVal);
-    
     // from MUsbChargingDeviceStateTimerObserver
     virtual void DeviceStateTimeout();
+#ifdef SYMBIAN_USB_BATTERYCHARGING_V1_1	
+    virtual void UsbChargingPortType(TUint aPortType);
+	virtual void PeerDeviceMaxPower(TUint aCurrent);
+#endif
 
 #ifdef SYMBIAN_ENABLE_USB_OTG_HOST_PRIV          // For host OTG enabled charging plug-in    
     // from MOtgPropertiesObserver
@@ -56,6 +57,8 @@
     CUsbBatteryChargingPlugin& iParent; // Charging state machine. Not Owned
     };
 
+
+
 class TUsbBatteryChargingPluginStateIdle : public TUsbBatteryChargingPluginStateBase
     {
 public:
@@ -67,6 +70,8 @@
         TInt aLastError, TUsbDeviceState aOldState, TUsbDeviceState aNewState);
     };
 
+
+
 class TUsbBatteryChargingPluginStateNoValidCurrent : public TUsbBatteryChargingPluginStateBase
     {
 public:
@@ -74,6 +79,8 @@
             CUsbBatteryChargingPlugin& aParentStateMachine);
     };
 
+
+
 class TUsbBatteryChargingPluginStateCurrentNegotiating : public TUsbBatteryChargingPluginStateBase
     {
 public:
@@ -86,16 +93,8 @@
     void DeviceStateTimeout();
     };
 
-class TUsbBatteryChargingPluginStateCharging : public TUsbBatteryChargingPluginStateBase
-    {
-public:
-    TUsbBatteryChargingPluginStateCharging(
-            CUsbBatteryChargingPlugin& aParentStateMachine);
-    
-private:
-    void UsbDeviceStateChange(TInt aLastError, TUsbDeviceState aOldState, 
-            TUsbDeviceState aNewState);
-    };
+
+
 
 class TUsbBatteryChargingPluginStateIdleNegotiated : public TUsbBatteryChargingPluginStateBase
     {
@@ -108,31 +107,16 @@
             TUsbDeviceState aNewState);
     };
 
-class TUsbBatteryChargingPluginStateUserDisabled : public TUsbBatteryChargingPluginStateBase
-    {
-public:
-    TUsbBatteryChargingPluginStateUserDisabled(
-            CUsbBatteryChargingPlugin& aParentStateMachine);
-    
-private:
-    void UsbDeviceStateChange(TInt aLastError, TUsbDeviceState aOldState, 
-            TUsbDeviceState aNewState);
-    
-    // from MUsbChargingRepositoryObserver
-    void HandleRepositoryValueChangedL (const TUid& aRepository, 
-            TUint aId, TInt aVal);
-    
-#ifdef SYMBIAN_ENABLE_USB_OTG_HOST_PRIV          // For host OTG enabled charging plug-in     
-    void MpsoIdPinStateChanged(TInt aValue);
-#endif
-    void MpsoVBusStateChanged(TInt aNewState);
-    };
 
 class TUsbBatteryChargingPluginStateBEndedCableNotPresent : public TUsbBatteryChargingPluginStateBase
     {
 public:
     TUsbBatteryChargingPluginStateBEndedCableNotPresent(
             CUsbBatteryChargingPlugin& aParentStateMachine);
+#ifdef SYMBIAN_ENABLE_USB_OTG_HOST_PRIV   	
+private:
+	void MpsoIdPinStateChanged(TInt aValue);
+#endif	
     };
 
 #endif // CHARGINGSTATES_H
--- a/usbmgmt/usbmgr/usbman/chargingplugin/public/repositorynotifier.h	Mon Sep 06 11:27:08 2010 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,57 +0,0 @@
-/*
-* Copyright (c) 2005-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 REPOSITORYNOTIFIER_H
-#define REPOSITORYNOTIFIER_H
-
-#include <e32base.h>
-
-class CRepository;
-
-class MUsbChargingRepositoryObserver
-	{
-public:
-	virtual void HandleRepositoryValueChangedL(const TUid& aRepository, TUint aId, TInt aVal) = 0;
-	};
-
-class CUsbChargingRepositoryNotifier : public CActive
-	{
-public:
-	~CUsbChargingRepositoryNotifier();
-	static CUsbChargingRepositoryNotifier* NewL(MUsbChargingRepositoryObserver& aObserver,const TUid& aRepository, TUint aId);
-	void Notify();
-protected:
-	CUsbChargingRepositoryNotifier(MUsbChargingRepositoryObserver& aObserver,const TUid& aRepository, TUint aId);
-	void RunL();
-	void ConstructL();
-private:
-	void DoCancel();
-	TInt RunError(TInt aError);
-
-protected:
-	MUsbChargingRepositoryObserver& iObserver;
-	CRepository*	iRepository;
-	TUid			iRepositoryUid;
-	TUint			iId;
-	};
-
-#endif // REPOSITORYNOTIFIER_H
--- a/usbmgmt/usbmgr/usbman/chargingplugin/public/usbbatterycharging.h	Mon Sep 06 11:27:08 2010 +0800
+++ b/usbmgmt/usbmgr/usbman/chargingplugin/public/usbbatterycharging.h	Thu Sep 16 12:03:29 2010 +0800
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2005-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"
@@ -27,21 +27,10 @@
 // UID used for central respository
 const TUid KUsbBatteryChargingCentralRepositoryUid = {0x10208DD7};	// UID3 for usbbatterychargingplugin
 
-const TUid KPropertyUidUsbBatteryChargingCategory = {0x101fe1db};
-const TUint KPropertyUidUsbBatteryChargingAvailableCurrent = 1; // current negotiated
-const TUint KPropertyUidUsbBatteryChargingChargingCurrent = 2; // current for charging (i.e. depends on user setting)
-
-const TUint KUsbBatteryChargingKeyEnabledUserSetting = 1;
-const TUint KUsbBatteryChargingKeyNumberOfCurrentValues = 2;
+const TUint KUsbBatteryChargingKeyNumberOfCurrentValues = 1;
 
 const TUint KUsbBatteryChargingCurrentValuesOffset = 0x1000;
 
-enum TUsbBatteryChargingUserSetting
-	{
-	EUsbBatteryChargingUserSettingDisabled = 0,
-	EUsbBatteryChargingUserSettingEnabled,
-	};
-
 enum TUsbIdPinState
     {
     EUsbBatteryChargingIdPinBRole = 0,
--- a/usbmgmt/usbmgr/usbman/chargingplugin/src/CUsbBatteryChargingPlugin.cpp	Mon Sep 06 11:27:08 2010 +0800
+++ b/usbmgmt/usbmgr/usbman/chargingplugin/src/CUsbBatteryChargingPlugin.cpp	Thu Sep 16 12:03:29 2010 +0800
@@ -18,18 +18,15 @@
 /** @file
 @internalComponent
 */
-#include "CUsbBatteryChargingPlugin.h"
 #include <e32debug.h> 
 #include <e32def.h>
-#include <usb/usblogger.h>
 #include <e32property.h>
-#include <centralrepository.h>
 #include <usbotgdefs.h>
 #include <musbmanextensionpluginobserver.h>
-
+#include <centralrepository.h>
 
+#include "CUsbBatteryChargingPlugin.h"
 #include "chargingstates.h"
-#include "cusbbatterycharginglicenseehooks.h"
 #include "reenumerator.h"
 
 #ifdef SYMBIAN_ENABLE_USB_OTG_HOST_PRIV          // For host OTG enabled charging plug-in 
@@ -46,6 +43,11 @@
 
 static const TInt KUsbBatteryChargingConfigurationDescriptorCurrentOffset = 8; // see bMaxPower in section 9.6.3 of USB Spec 2.0
 static const TInt KUsbBatteryChargingCurrentRequestTimeout = 3000000; // 3 seconds
+static const TUint8 KMinCurrent     = 8;    // See USB OTG specification , min current
+static const TUint8 KbmAttributes   = 7;    // see bmAttributes in section 9.6.3 of USB Spec 2.0
+static const TUint8 KSelfPowered    = 0x40; // Bitmask to bmAttributes (01000000)
+
+
 
 
 /**
@@ -71,8 +73,6 @@
     iCurrentValues.Close();
     delete iDeviceReEnumerator;
     delete iDeviceStateTimer;
-    delete iRepositoryNotifier;
-    delete iLicenseeHooks;
     
 // For host OTG enabled charging plug-in
 #ifdef SYMBIAN_ENABLE_USB_OTG_HOST_PRIV
@@ -101,21 +101,29 @@
 */
 void CUsbBatteryChargingPlugin::ConstructL()
     {
-   OstTraceFunctionEntry0( REF_CUSBBATTERYCHARGINGPLUGIN_CONSTRUCTL_ENTRY );
+    OstTraceFunctionEntry0( REF_CUSBBATTERYCHARGINGPLUGIN_CONSTRUCTL_ENTRY );
    
+    iUsbSpeedType = EUsbFullSpeed;
+	iChargingInfo().iChargingPortType = EUsbChargingPortTypeStandardDownstreamPort;
+	iChargingInfo().iUsbConnStatus = EUsbConnectionStatusNone;
+	iChargingInfo().iMinAvailableVbusCurrent = 0;
+	iChargingInfo().iMaxVbusCurrent = 0;
+	iChargingInfo().iMinVbusVoltage = 0;	
+#ifdef SYMBIAN_USB_BATTERYCHARGING_V1_1		
+	iChargingInfo().iChargingPortType = EUsbChargingPortTypeNone;
+	iChargerDetectotCaps.iCapabilities = 0;
+#endif
+	iLastPublishedInfo = iChargingInfo();
+
     // Create state objects
     iPluginStates[EPluginStateIdle] = 
         new (ELeave) TUsbBatteryChargingPluginStateIdle(*this);
     iPluginStates[EPluginStateCurrentNegotiating] = 
         new (ELeave) TUsbBatteryChargingPluginStateCurrentNegotiating(*this);
-    iPluginStates[EPluginStateCharging] = 
-        new (ELeave) TUsbBatteryChargingPluginStateCharging(*this);
     iPluginStates[EPluginStateNoValidCurrent] = 
         new (ELeave) TUsbBatteryChargingPluginStateNoValidCurrent(*this);
     iPluginStates[EPluginStateIdleNegotiated] = 
         new (ELeave) TUsbBatteryChargingPluginStateIdleNegotiated(*this);
-    iPluginStates[EPluginStateUserDisabled] = 
-        new (ELeave) TUsbBatteryChargingPluginStateUserDisabled(*this);
     iPluginStates[EPluginStateBEndedCableNotPresent] = 
         new (ELeave) TUsbBatteryChargingPluginStateBEndedCableNotPresent(*this);
 
@@ -123,66 +131,34 @@
     SetState(EPluginStateIdle);
     
     TInt err = RProperty::Define(KPropertyUidUsbBatteryChargingCategory,
-                      KPropertyUidUsbBatteryChargingAvailableCurrent,
-                      RProperty::EInt,
-                      ECapabilityReadDeviceData,
-                      ECapabilityCommDD);
-
-    if(err == KErrNone || err == KErrAlreadyExists)
-        {
-
-        err = RProperty::Define(KPropertyUidUsbBatteryChargingCategory,
-                          KPropertyUidUsbBatteryChargingChargingCurrent,
-                          RProperty::EInt,
-                          ECapabilityReadDeviceData,
-                          ECapabilityCommDD);
-        }
-    else
-        {
-        OstTrace1( TRACE_NORMAL, REF_CUSBBATTERYCHARGINGPLUGIN_CONSTRUCTL, "CUsbBatteryChargingPlugin::ConstructL;leave with error=%d", err );
-        User::Leave(err );
-        }
+                      KPropertyUidUsbBatteryChargingInfo,
+                      RProperty::EByteArray,
+                      sizeof(TPublishedUsbChargingInfo));
 
     if(err == KErrNone || err == KErrAlreadyExists)
         {
         err = RProperty::Set(KPropertyUidUsbBatteryChargingCategory,
-                                        KPropertyUidUsbBatteryChargingAvailableCurrent,
-                                        0);
+                      KPropertyUidUsbBatteryChargingInfo,
+                      iChargingInfo);
         }
-    else
-        {
-        static_cast<void> (RProperty::Delete (
-                KPropertyUidUsbBatteryChargingCategory,
-                KPropertyUidUsbBatteryChargingAvailableCurrent ));
-        OstTrace1( TRACE_NORMAL, REF_CUSBBATTERYCHARGINGPLUGIN_CONSTRUCTL_DUP1, "CUsbBatteryChargingPlugin::ConstructL;leave with error=%d", err );
+	else
+		{		
         User::Leave(err);
-        }
-    
-    err = RProperty::Set(KPropertyUidUsbBatteryChargingCategory,
-                                        KPropertyUidUsbBatteryChargingChargingCurrent,
-                                        0);
+		}
 
     if(err != KErrNone)
         {
         static_cast<void> (RProperty::Delete (
                 KPropertyUidUsbBatteryChargingCategory,
-                KPropertyUidUsbBatteryChargingAvailableCurrent ));
-        static_cast<void> (RProperty::Delete (
-                KPropertyUidUsbBatteryChargingCategory,
-                KPropertyUidUsbBatteryChargingChargingCurrent ));
-        OstTrace1( TRACE_NORMAL, REF_CUSBBATTERYCHARGINGPLUGIN_CONSTRUCTL_DUP2, "CUsbBatteryChargingPlugin::ConstructL;leave with error=%d", err );
-        User::Leave(err );
+                KPropertyUidUsbBatteryChargingInfo ));
+        User::Leave(err);
         }
         
-    iRepositoryNotifier = CUsbChargingRepositoryNotifier::NewL (*this,
-            KUsbBatteryChargingCentralRepositoryUid,
-            KUsbBatteryChargingKeyEnabledUserSetting );
     iDeviceStateTimer = CUsbChargingDeviceStateTimer::NewL(*this);
 
     iDeviceReEnumerator = CUsbChargingReEnumerator::NewL(iLdd);
 
     iPluginState = EPluginStateIdle;
-    iPluginStateToRecovery = EPluginStateIdle;
     ReadCurrentRequestValuesL();
     iVBusWatcher = CVBusWatcher::NewL(this);
     iVBusState = iVBusWatcher->VBusState();
@@ -209,14 +185,11 @@
         OstTrace1( TRACE_NORMAL, REF_CUSBBATTERYCHARGINGPLUGIN_CONSTRUCTL_DUP3, "CUsbBatteryChargingPlugin::ConstructL;PluginState => EPluginStateADevice(%d)", iPluginState );
         }
 
-    Observer().RegisterStateObserverL(*this);
-
-    iLicenseeHooks = CUsbBatteryChargingLicenseeHooks::NewL();
-    OstTrace0( TRACE_NORMAL, REF_CUSBBATTERYCHARGINGPLUGIN_CONSTRUCTL_DUP4, "CUsbBatteryChargingPlugin::ConstructL;Created licensee specific hooks" );
-    
-    // Set initial recovery state to idle
-    PushRecoverState(EPluginStateIdle);
-    
+    Observer().RegisterStateObserverL(*this);  
+#ifdef SYMBIAN_USB_BATTERYCHARGING_V1_1		
+	MUsbChargingNotify* charging = static_cast<MUsbChargingNotify*>(this);
+    Observer().RegisterChargingObserverL(*charging);  
+#endif	
     OstTraceFunctionExit0( REF_CUSBBATTERYCHARGINGPLUGIN_CONSTRUCTL_EXIT );
     }
 
@@ -224,12 +197,6 @@
 TBool CUsbBatteryChargingPlugin::IsUsbChargingPossible()
     {
 #ifdef SYMBIAN_ENABLE_USB_OTG_HOST_PRIV
-    // VBus is off, so there is no way to do charging
-    if (0 == iVBusState)
-        {
-        return EFalse;
-        }
-    
     // 'A' end cable connected. I'm the power supplier, with no way to charge myself :-) 
     if (EUsbBatteryChargingIdPinARole == iIdPinState)
         {
@@ -323,7 +290,6 @@
     (void)aUid;
 
     TAny* ret = NULL;
-
     OstTrace1( TRACE_NORMAL, REF_CUSBBATTERYCHARGINGPLUGIN_GETINTERFACE_DUP2, "CUsbBatteryChargingPlugin::GetInterface;ret = [0x%08x]", ret );
     return ret;
     }
@@ -340,32 +306,6 @@
     // not used
     }
 
-void CUsbBatteryChargingPlugin::PushRecoverState(TUsbChargingPluginState aRecoverState)
-    {
-    OstTraceFunctionEntry0( REF_CUSBBATTERYCHARGINGPLUGIN_PUSHRECOVERSTATE_ENTRY );
-
-    if((aRecoverState == EPluginStateIdle)||
-       (aRecoverState == EPluginStateIdleNegotiated) ||
-       (aRecoverState == EPluginStateBEndedCableNotPresent) ||
-       (aRecoverState == EPluginStateNoValidCurrent))
-        {
-        iPluginStateToRecovery = aRecoverState;
-        }
-    OstTraceFunctionExit0( REF_CUSBBATTERYCHARGINGPLUGIN_PUSHRECOVERSTATE_EXIT );
-    }
-
-TUsbChargingPluginState CUsbBatteryChargingPlugin::PopRecoverState()
-    {
-    OstTraceFunctionEntry0( REF_CUSBBATTERYCHARGINGPLUGIN_POPRECOVERSTATE_ENTRY );
-    
-    SetState(iPluginStateToRecovery);
-    
-    iPluginStateToRecovery = EPluginStateIdle;
-    
-    OstTraceFunctionExit0( REF_CUSBBATTERYCHARGINGPLUGIN_POPRECOVERSTATE_EXIT );
-    return iPluginStateToRecovery;
-    }
-
 TUsbChargingPluginState CUsbBatteryChargingPlugin::SetState(TUsbChargingPluginState aState)
     {
     OstTraceFunctionEntry0( REF_CUSBBATTERYCHARGINGPLUGIN_SETSTATE_ENTRY );
@@ -379,16 +319,11 @@
             }
             break;
         case EPluginStateCurrentNegotiating:
-        case EPluginStateCharging:
         case EPluginStateNoValidCurrent:
         case EPluginStateIdleNegotiated:
-        case EPluginStateUserDisabled:
         case EPluginStateBEndedCableNotPresent:
-            {
-            iPluginState = aState;
             iCurrentState = iPluginStates[aState];
-            }
-            break;
+			break;			
         default:
             // Should never happen ...
             iPluginState = EPluginStateIdle;
@@ -429,22 +364,16 @@
     OstTraceFunctionEntry0( REF_CUSBBATTERYCHARGINGPLUGIN_USBDEVICESTATECHANGE_ENTRY );
     
     iCurrentState->UsbDeviceStateChange(aLastError, aOldState, aNewState);
+	UpdateChargingInfo();
     OstTraceFunctionExit0( REF_CUSBBATTERYCHARGINGPLUGIN_USBDEVICESTATECHANGE_EXIT );
     }
 
-void CUsbBatteryChargingPlugin::HandleRepositoryValueChangedL(const TUid& aRepository, TUint aId, TInt aVal)
-    {
-    OstTraceFunctionEntry0( REF_CUSBBATTERYCHARGINGPLUGIN_HANDLEREPOSITORYVALUECHANGEDL_ENTRY );
-
-    iCurrentState->HandleRepositoryValueChangedL(aRepository, aId, aVal);
-    OstTraceFunctionExit0( REF_CUSBBATTERYCHARGINGPLUGIN_HANDLEREPOSITORYVALUECHANGEDL_EXIT );
-    }
-
 void CUsbBatteryChargingPlugin::DeviceStateTimeout()
     {
     OstTraceFunctionEntry0( REF_CUSBBATTERYCHARGINGPLUGIN_DEVICESTATETIMEOUT_ENTRY );
         
-    iCurrentState->DeviceStateTimeout();
+    iCurrentState->DeviceStateTimeout();	
+	UpdateChargingInfo();
     OstTraceFunctionExit0( REF_CUSBBATTERYCHARGINGPLUGIN_DEVICESTATETIMEOUT_EXIT );
     }
 
@@ -467,16 +396,14 @@
         iCurrentIndexRequested++;
         newCurrent = iCurrentValues[iCurrentIndexRequested];    
         }
-    else if(iRequestedCurrentValue != 0)
+    else if(iRequestedCurrentValue != 0 && iRequestedCurrentValue != KMinCurrent)
         {
-        // There isn't a 0ma round set from the Repository source -> 10208DD7.txt
-        // Just add it to make sure the device can be accepted by host    
-        newCurrent = 0;
+        newCurrent = KMinCurrent;
         }
     else
         {
-        // Warning 0001: If you go here, something wrong happend, check it.
-        __ASSERT_DEBUG(0,Panic(EUsbBatteryChargingPanicBadCharingCurrentNegotiation));
+        iPluginState = EPluginStateNoValidCurrent;
+        User::Leave(EUsbBatteryChargingPanicBadCharingCurrentNegotiation);
         }
     
     RequestCurrentL(newCurrent);
@@ -493,13 +420,13 @@
         {
         iDeviceStateTimer->Cancel(); // doesn't matter if not running
         iPluginState = EPluginStateIdle;
-        iPluginStateToRecovery = EPluginStateIdle;
         OstTrace1( TRACE_NORMAL, REF_CUSBBATTERYCHARGINGPLUGIN_RESETPLUGIN, "CUsbBatteryChargingPlugin::ResetPlugin;PluginState => EPluginStateIdle(%d)", iPluginState );
 
         iRequestedCurrentValue = 0;
         iCurrentIndexRequested = 0;
         iAvailableMilliAmps = 0;
-        SetNegotiatedCurrent(0);
+		iBDevMaxPower = 0;
+        UpdateChargingInfo();
         TRAP_IGNORE(SetInitialConfigurationL());
         }
     OstTraceFunctionExit0( REF_CUSBBATTERYCHARGINGPLUGIN_RESETPLUGIN_EXIT );
@@ -532,6 +459,11 @@
             User::Leave(err);
             }
 
+		// compliant to charging adaptation in modem adaptation
+        TUint8 bmAttributes = ptr[KbmAttributes];
+        bmAttributes &= ~(KSelfPowered);
+        ptr[KbmAttributes] = bmAttributes;
+
         // set bMaxPower field. One unit = 2mA, so need to halve aMilliAmps.
         OstTraceExt2( TRACE_NORMAL, REF_CUSBBATTERYCHARGINGPLUGIN_REQUESTCURRENTL_DUP4, "CUsbBatteryChargingPlugin::RequestCurrentL;Setting bMaxPower to %u mA ( = %u x 2mA units)", aMilliAmps, aMilliAmps >> 1 );
         TUint oldCurrentValue = ptr[KUsbBatteryChargingConfigurationDescriptorCurrentOffset] << 1;
@@ -585,71 +517,6 @@
     OstTraceFunctionExit0( REF_CUSBBATTERYCHARGINGPLUGIN_READCURRENTREQUESTVALUESL_EXIT );
     }
 
-void CUsbBatteryChargingPlugin::StartCharging(TUint aMilliAmps)
-    {
-    OstTraceFunctionEntry0( REF_CUSBBATTERYCHARGINGPLUGIN_STARTCHARGING_ENTRY );
-    
-    OstTrace1( TRACE_NORMAL, REF_CUSBBATTERYCHARGINGPLUGIN_STARTCHARGING, "CUsbBatteryChargingPlugin::StartCharging;aMilliAmps=%u", aMilliAmps );
-    
-    // do licensee specific functionality (if any)
-    iLicenseeHooks->StartCharging(aMilliAmps);
-
-#ifdef _DEBUG
-    TInt err = RProperty::Set(KPropertyUidUsbBatteryChargingCategory,
-                KPropertyUidUsbBatteryChargingChargingCurrent,
-                            aMilliAmps);
-    OstTraceExt2( TRACE_NORMAL, REF_CUSBBATTERYCHARGINGPLUGIN_STARTCHARGING_DUP1, "CUsbBatteryChargingPlugin::StartCharging;Set P&S current = %umA - err = %d", aMilliAmps, err );
-#else
-    (void)RProperty::Set(KPropertyUidUsbBatteryChargingCategory,
-                KPropertyUidUsbBatteryChargingChargingCurrent,
-                                aMilliAmps);
-#endif
-
-    SetState(EPluginStateCharging);
-    OstTraceFunctionExit0( REF_CUSBBATTERYCHARGINGPLUGIN_STARTCHARGING_EXIT );
-    }
-
-void CUsbBatteryChargingPlugin::StopCharging()
-    {
-    OstTraceFunctionEntry0( REF_CUSBBATTERYCHARGINGPLUGIN_STOPCHARGING_ENTRY );
-    
-    // do licensee specific functionality (if any)
-    iLicenseeHooks->StopCharging();
-
-#ifdef _DEBUG
-    TInt err = RProperty::Set(KPropertyUidUsbBatteryChargingCategory,
-                                    KPropertyUidUsbBatteryChargingChargingCurrent,
-                                    0);
-    OstTrace1( TRACE_NORMAL, REF_CUSBBATTERYCHARGINGPLUGIN_STOPCHARGING, "CUsbBatteryChargingPlugin::StopCharging;Set P&S current = 0mA - err = %d", err );
-#else
-    (void)RProperty::Set(KPropertyUidUsbBatteryChargingCategory,
-                                    KPropertyUidUsbBatteryChargingChargingCurrent,
-                                    0);
-#endif
-    OstTraceFunctionExit0( REF_CUSBBATTERYCHARGINGPLUGIN_STOPCHARGING_EXIT );
-    }
-
-void CUsbBatteryChargingPlugin::SetNegotiatedCurrent(TUint aMilliAmps)
-    {
-    OstTraceFunctionEntry0( REF_CUSBBATTERYCHARGINGPLUGIN_SETNEGOTIATEDCURRENT_ENTRY );
-    
-    OstTrace1( TRACE_NORMAL, REF_CUSBBATTERYCHARGINGPLUGIN_SETNEGOTIATEDCURRENT, "CUsbBatteryChargingPlugin::SetNegotiatedCurrent;aMilliAmps=%u", aMilliAmps );
-
-    // Ignore errors - not much we can do if it fails
-#ifdef _DEBUG
-    TInt err = RProperty::Set(KPropertyUidUsbBatteryChargingCategory,
-                                    KPropertyUidUsbBatteryChargingAvailableCurrent,
-                                    aMilliAmps);
-    OstTraceExt2( TRACE_NORMAL, REF_CUSBBATTERYCHARGINGPLUGIN_SETNEGOTIATEDCURRENT_DUP1, "CUsbBatteryChargingPlugin::SetNegotiatedCurrent;Set P&S current = %umA - err = %d", aMilliAmps, err );
-#else
-    (void)RProperty::Set(KPropertyUidUsbBatteryChargingCategory,
-                                    KPropertyUidUsbBatteryChargingAvailableCurrent,
-                                    aMilliAmps);
-#endif
-    OstTraceFunctionExit0( REF_CUSBBATTERYCHARGINGPLUGIN_SETNEGOTIATEDCURRENT_EXIT );
-    }
-
-
 #ifndef _DEBUG
 void CUsbBatteryChargingPlugin::LogStateText(TUsbDeviceState /*aState*/)
     {
@@ -692,8 +559,12 @@
 void CUsbBatteryChargingPlugin::MpsoVBusStateChanged(TInt aNewState)
     {
     OstTraceFunctionEntry0( REF_CUSBBATTERYCHARGINGPLUGIN_MPSOVBUSSTATECHANGED_ENTRY );
-    
-    iCurrentState->MpsoVBusStateChanged(aNewState);
+    if (iChargingInfo().iChargingPortType == EUsbChargingPortTypeStandardDownstreamPort)
+    	{
+    	iCurrentState->MpsoVBusStateChanged(aNewState);
+    	}
+	iVBusState = aNewState;
+	UpdateChargingInfo();
     OstTraceFunctionExit0( REF_CUSBBATTERYCHARGINGPLUGIN_MPSOVBUSSTATECHANGED_EXIT );
     }
 
@@ -705,6 +576,7 @@
     OstTraceFunctionEntry0( REF_CUSBBATTERYCHARGINGPLUGIN_MPSOIDPINSTATECHANGED_ENTRY );
     
     iCurrentState->MpsoIdPinStateChanged(aValue);
+	UpdateChargingInfo();
     OstTraceFunctionExit0( REF_CUSBBATTERYCHARGINGPLUGIN_MPSOIDPINSTATECHANGED_EXIT );
     }
 
@@ -713,6 +585,352 @@
     OstTraceFunctionEntry0( REF_CUSBBATTERYCHARGINGPLUGIN_MPSOOTGSTATECHANGEDL_ENTRY );
 
     iCurrentState->MpsoOtgStateChangedL(aNewState);
-    OstTraceFunctionExit0( REF_CUSBBATTERYCHARGINGPLUGIN_MPSOOTGSTATECHANGEDL_EXIT );
+	UpdateChargingInfo();
+	OstTraceFunctionExit0( REF_CUSBBATTERYCHARGINGPLUGIN_MPSOOTGSTATECHANGEDL_EXIT );
     }
 #endif
+
+
+#ifdef SYMBIAN_USB_BATTERYCHARGING_V1_1
+void CUsbBatteryChargingPlugin::UsbChargingPortType(TUint aChargingPortType)
+	{
+	OstTraceExt1( TRACE_NORMAL, CUSBBATTERYCHARGINGPLUGIN_USBCHARGINGPORTTYPE, "CUsbBatteryChargingPlugin::UsbChargingPortType;ChargingTypeToString(aChargingPortType)=%s", *ChargingTypeToString(aChargingPortType) );
+	ChargingTypeToString(aChargingPortType);
+	switch (aChargingPortType)
+		{
+		case KUsbChargingPortTypeNone:
+			iChargingInfo().iChargingPortType = EUsbChargingPortTypeNone;
+			break;
+		case KUsbChargingPortTypeUnsupported:
+			iChargingInfo().iChargingPortType = EUsbChargingPortTypeUnsupported;
+			break;
+		case KUsbChargingPortTypeDedicatedChargingPort:
+			iChargingInfo().iChargingPortType = EUsbChargingPortTypeDedicatedChargingPort;
+			break;				
+		case KUsbChargingPortTypeChargingDownstreamPort:
+			iChargingInfo().iChargingPortType = EUsbChargingPortTypeChargingDownstreamPort;
+			break;
+		case KUsbChargingPortTypeStandardDownstreamPort:
+			iChargingInfo().iChargingPortType = EUsbChargingPortTypeStandardDownstreamPort;
+			break;
+		case KUsbChargingPortTypeAcaRidA:
+			iChargingInfo().iChargingPortType = EUsbChargingPortTypeAcaRidA;
+			break;
+		case KUsbChargingPortTypeAcaRidB:
+			iChargingInfo().iChargingPortType = EUsbChargingPortTypeAcaRidB;
+			break;
+		case KUsbChargingPortTypeAcaRidC:
+			iChargingInfo().iChargingPortType = EUsbChargingPortTypeAcaRidC;
+			break;
+		case KUsbChargingPortTypeChargingPort:	
+			iChargingInfo().iChargingPortType = EUsbChargingPortTypeChargingPort;
+			break;
+		default:
+			break;
+		}
+	iLdd.ChargerDetectorCaps(iChargerDetectotCaps);
+	iCurrentState->UsbChargingPortType(aChargingPortType);
+	UpdateChargingInfo();
+	}
+#endif
+
+_LIT8(KPortTypeNone, "PortTypeNone");
+_LIT8(KPortTypeUnsupported, "PortTypeUnsupported");
+_LIT8(KPortTypeDedicatedChargingPort, "PortTypeDedicatedChargingPort");
+_LIT8(KPortTypeStandardDownstreamPort, "PortTypeStandardDownstreamPort");
+_LIT8(KPortTypeChargingDownstreamPort, "PortTypeChargingDownstreamPort");
+_LIT8(KPortTypeAcaRidA, "PortTypeAcaRidA");
+_LIT8(KPortTypeAcaRidB, "PortTypeAcaRidB");
+_LIT8(KPortTypeAcaRidC, "PortTypeAcaRidC");
+_LIT8(KPortTypeChargingPort, "PortTypeChargingPort");
+
+
+const TDesC8* CUsbBatteryChargingPlugin::ChargingTypeToString(TUint aChargingType)
+	{
+	const TDesC8* str = NULL;
+	switch (aChargingType)
+   		{
+		case EUsbChargingPortTypeNone:
+			str = &KPortTypeNone;
+			break;
+		case EUsbChargingPortTypeUnsupported:
+			str = &KPortTypeUnsupported;
+			break;
+		case EUsbChargingPortTypeDedicatedChargingPort:
+			str = &KPortTypeDedicatedChargingPort;
+			break;				
+		case EUsbChargingPortTypeChargingDownstreamPort:
+			str = &KPortTypeChargingDownstreamPort;
+			break;
+		case EUsbChargingPortTypeStandardDownstreamPort:
+			str = &KPortTypeStandardDownstreamPort;
+			break;
+		case EUsbChargingPortTypeAcaRidA:
+			str = &KPortTypeAcaRidA;
+			break;
+		case EUsbChargingPortTypeAcaRidB:
+			str = &KPortTypeAcaRidB;
+			break;
+		case EUsbChargingPortTypeAcaRidC:
+			str = &KPortTypeAcaRidC;
+			break;
+		case EUsbChargingPortTypeChargingPort:	
+			str = &KPortTypeChargingPort;
+			break;
+		default:
+			break;
+		}
+	return str;
+	}
+
+void CUsbBatteryChargingPlugin::QueryCurrentSpeed()
+    {
+	if (iChargingInfo().iChargingPortType == EUsbChargingPortTypeChargingDownstreamPort)
+		{
+		if (iLdd.CurrentlyUsingHighSpeed())
+			{
+		    OstTrace0( TRACE_NORMAL, CUSBBATTERYCHARGINGPLUGIN_QUERYCURRENTSPEED, "CUsbBatteryChargingPlugin::QueryCurrentSpeed is high speed" );
+			iUsbSpeedType = EUsbHighSpeed;
+			}
+		else
+			{
+			OstTrace0( TRACE_NORMAL, DUP1_CUSBBATTERYCHARGINGPLUGIN_QUERYCURRENTSPEED, "CUsbBatteryChargingPlugin::QueryCurrentSpeed is full speed" );
+			iUsbSpeedType = EUsbFullSpeed;
+			}
+		}
+    }
+
+#ifdef SYMBIAN_USB_BATTERYCHARGING_V1_1	
+void CUsbBatteryChargingPlugin::UpdateChargingInfo()
+	{
+	OstTraceFunctionEntry0( CUSBBATTERYCHARGINGPLUGIN_UPDATECHARGINGINFO_ENTRY );
+	const TUint16 KIDev_Dchg = 1800;
+	const TUint16 KIDev_Chg = 1500;	
+	const TUint16 KIDev_Hchg_Lfs = 1500;
+	const TUint16 KIDev_Hchg_Hs = 900;
+	const TUint16 KIDev_Hchg_Hs_Chirp = 560;
+	const TUint16 KIDev_Avaiable = 500;
+	const TUint16 KIDev_Suspend = 2;
+	const TUint16 KVBus_Chg = 4500;
+	const TUint16 KVBus_Dchg = 2000;
+
+		
+    QueryCurrentSpeed();
+//set iUsbConnStatus field 	
+	iChargingInfo().iUsbConnStatus = EUsbConnectionStatusNone;
+	if (EUsbChargingPortTypeStandardDownstreamPort == iChargingInfo().iChargingPortType 
+		&& IsUsbChargingPossible())
+		{
+		switch (iDeviceState)
+			{
+			case EUsbDeviceStateSuspended:
+				iChargingInfo().iUsbConnStatus = EUsbConnectionStatusSuspend;
+				break;
+			case EUsbDeviceStateConfigured:
+				iChargingInfo().iUsbConnStatus = EUsbConnectionStatusConfigured;
+				break;
+			default:
+				break;
+			}		
+		}
+//set current and voltage field	
+	switch (iChargingInfo().iChargingPortType)
+		{
+		case EUsbChargingPortTypeDedicatedChargingPort:
+			iChargingInfo().iMinAvailableVbusCurrent = KIDev_Avaiable;
+			iChargingInfo().iMaxVbusCurrent = KIDev_Dchg;
+			iChargingInfo().iMinVbusVoltage = KVBus_Dchg;						
+			break;
+		case EUsbChargingPortTypeChargingPort:
+		case EUsbChargingPortTypeChargingDownstreamPort:	
+			iChargingInfo().iMinAvailableVbusCurrent = KIDev_Avaiable;
+			iChargingInfo().iMinVbusVoltage = KVBus_Dchg;		
+			if (iChargerDetectotCaps.iCapabilities & KChargerDetectorCapChirpCurrentLimiting)
+				{			
+				if (iUsbSpeedType == EUsbFullSpeed)
+					{
+					iChargingInfo().iMaxVbusCurrent = KIDev_Hchg_Lfs;
+					}
+				else
+					{
+					iChargingInfo().iMaxVbusCurrent = KIDev_Hchg_Hs;					
+					}
+				}
+			else
+				{
+				if (iDeviceState == EUsbDeviceStateConfigured && iUsbSpeedType == EUsbFullSpeed)
+					{
+					iChargingInfo().iMaxVbusCurrent = KIDev_Hchg_Lfs;
+					}
+				else
+					{
+					iChargingInfo().iMaxVbusCurrent = KIDev_Hchg_Hs_Chirp;					
+					}
+				}
+			break;
+		case EUsbChargingPortTypeNone:
+		case EUsbChargingPortTypeUnsupported:	
+			iChargingInfo().iMinAvailableVbusCurrent = 0;
+			iChargingInfo().iMaxVbusCurrent = 0;
+			iChargingInfo().iMinVbusVoltage = 0; 					
+			break;
+		case EUsbChargingPortTypeStandardDownstreamPort:
+			if (IsUsbChargingPossible())
+				{
+				switch (iDeviceState)
+					{
+					case EUsbDeviceStateConfigured:
+						iChargingInfo().iMinAvailableVbusCurrent = iAvailableMilliAmps;
+						iChargingInfo().iMaxVbusCurrent = iAvailableMilliAmps;
+						iChargingInfo().iMinVbusVoltage = KVBus_Chg; 								
+						break;
+					case EUsbDeviceStateSuspended:
+						iChargingInfo().iMinAvailableVbusCurrent = KIDev_Suspend;
+						iChargingInfo().iMaxVbusCurrent = KIDev_Suspend;
+						iChargingInfo().iMinVbusVoltage = KVBus_Chg; 						
+						break;
+					default:
+						iChargingInfo().iMinAvailableVbusCurrent = 0;
+						iChargingInfo().iMaxVbusCurrent = 0;
+						iChargingInfo().iMinVbusVoltage = 0; 						
+						break;
+					}
+				}
+			else
+				{
+				iChargingInfo().iMinAvailableVbusCurrent = 0;
+				iChargingInfo().iMaxVbusCurrent = 0;
+				iChargingInfo().iMinVbusVoltage = 0;						
+				}
+			break;
+		case EUsbChargingPortTypeAcaRidA:
+			iChargingInfo().iMinAvailableVbusCurrent = KIDev_Avaiable - iBDevMaxPower;
+			iChargingInfo().iMaxVbusCurrent = KIDev_Chg;
+			iChargingInfo().iMinVbusVoltage = KVBus_Dchg; 					
+			break;
+		case EUsbChargingPortTypeAcaRidB:
+			iChargingInfo().iMinAvailableVbusCurrent = KIDev_Avaiable;
+			iChargingInfo().iMaxVbusCurrent = KIDev_Chg;
+			iChargingInfo().iMinVbusVoltage = KVBus_Dchg; 					
+			break;
+		case EUsbChargingPortTypeAcaRidC:
+			iChargingInfo().iMinAvailableVbusCurrent = KIDev_Avaiable;
+			iChargingInfo().iMaxVbusCurrent = KIDev_Chg;
+			iChargingInfo().iMinVbusVoltage = KVBus_Dchg; 					
+			break;
+		default:
+			break;
+		}
+	PublishChargingInfo();
+	OstTraceFunctionExit0( CUSBBATTERYCHARGINGPLUGIN_UPDATECHARGINGINFO_EXIT );
+	}
+
+#else
+void CUsbBatteryChargingPlugin::UpdateChargingInfo()
+	{
+	OstTraceFunctionEntry0( CUSBBATTERYCHARGINGPLUGIN_UPDATECHARGINGINF1_ENTRY );
+	const TUint16 KIDev_Suspend = 2;
+	const TUint16 KVBus_Chg = 4500;
+
+		
+    QueryCurrentSpeed();
+//set iUsbConnStatus field 	
+	iChargingInfo().iUsbConnStatus = EUsbConnectionStatusNone;
+	if (EUsbChargingPortTypeStandardDownstreamPort == iChargingInfo().iChargingPortType 
+		&& IsUsbChargingPossible())
+		{
+		switch (iDeviceState)
+			{
+			case EUsbDeviceStateSuspended:
+				iChargingInfo().iUsbConnStatus = EUsbConnectionStatusSuspend;
+				break;
+			case EUsbDeviceStateConfigured:
+				iChargingInfo().iUsbConnStatus = EUsbConnectionStatusConfigured;
+				break;
+			default:
+				break;
+			}		
+		}
+//set current and voltage field	
+	switch (iChargingInfo().iChargingPortType)
+		{
+		case EUsbChargingPortTypeStandardDownstreamPort:
+			if (IsUsbChargingPossible())
+				{
+				switch (iDeviceState)
+					{
+					case EUsbDeviceStateConfigured:
+						iChargingInfo().iMinAvailableVbusCurrent = iAvailableMilliAmps;
+						iChargingInfo().iMaxVbusCurrent = iAvailableMilliAmps;
+						iChargingInfo().iMinVbusVoltage = KVBus_Chg; 								
+						break;
+					case EUsbDeviceStateSuspended:
+						iChargingInfo().iMinAvailableVbusCurrent = KIDev_Suspend;
+						iChargingInfo().iMaxVbusCurrent = KIDev_Suspend;
+						iChargingInfo().iMinVbusVoltage = KVBus_Chg; 						
+						break;
+					default:
+						iChargingInfo().iMinAvailableVbusCurrent = 0;
+						iChargingInfo().iMaxVbusCurrent = 0;
+						iChargingInfo().iMinVbusVoltage = 0; 						
+						break;
+					}
+				}
+			else
+				{
+				iChargingInfo().iMinAvailableVbusCurrent = 0;
+				iChargingInfo().iMaxVbusCurrent = 0;
+				iChargingInfo().iMinVbusVoltage = 0;						
+				}
+			break;
+		default:
+			break;
+		}
+	PublishChargingInfo();
+	OstTraceFunctionExit0( CUSBBATTERYCHARGINGPLUGIN_UPDATECHARGINGINF1_EXIT );
+	}
+
+#endif
+
+
+void CUsbBatteryChargingPlugin::PublishChargingInfo()
+	{
+	OstTraceFunctionEntry0( CUSBBATTERYCHARGINGPLUGIN_PUBLISHCHARGINGINFO_ENTRY );
+	OstTraceExt1( TRACE_NORMAL, REF_CUSBBATTERYCHARGINGPLUGIN_PUBLISHCHARGINGINFO_DUP1, "charging type: %s", 
+		*ChargingTypeToString(iChargingInfo().iChargingPortType) );
+	OstTrace1( TRACE_NORMAL, REF_CUSBBATTERYCHARGINGPLUGIN_PUBLISHCHARGINGINFO_DUP2, "iUsbConnStatus %d", 
+		iChargingInfo().iUsbConnStatus );
+	OstTrace1( TRACE_NORMAL, REF_CUSBBATTERYCHARGINGPLUGIN_PUBLISHCHARGINGINFO_DUP3, "iMinAvailableVbusCurrent %d", 
+		iChargingInfo().iMinAvailableVbusCurrent );
+	OstTrace1( TRACE_NORMAL, REF_CUSBBATTERYCHARGINGPLUGIN_PUBLISHCHARGINGINFO_DUP4, "iMaxVbusCurrent %d", 
+		iChargingInfo().iMaxVbusCurrent );
+	OstTrace1( TRACE_NORMAL, REF_CUSBBATTERYCHARGINGPLUGIN_PUBLISHCHARGINGINFO_DUP5, "iMinVbusVoltage %d", 
+		iChargingInfo().iMinVbusVoltage );
+	
+	if (iLastPublishedInfo.iChargingPortType != iChargingInfo().iChargingPortType
+		|| iLastPublishedInfo.iUsbConnStatus != iChargingInfo().iUsbConnStatus
+		|| iLastPublishedInfo.iMinAvailableVbusCurrent != iChargingInfo().iMinAvailableVbusCurrent
+		|| iLastPublishedInfo.iMaxVbusCurrent != iChargingInfo().iMaxVbusCurrent
+		|| iLastPublishedInfo.iMinVbusVoltage != iChargingInfo().iMinVbusVoltage)
+		{
+		OstTrace0( TRACE_NORMAL, REF_CUSBBATTERYCHARGINGPLUGIN_PUBLISHCHARGINGINFO_DUP6, "info changed, publish it");
+		RProperty::Set(KPropertyUidUsbBatteryChargingCategory,
+                      KPropertyUidUsbBatteryChargingInfo,
+                      iChargingInfo);
+		}
+	iLastPublishedInfo = iChargingInfo();
+	OstTraceFunctionExit0( CUSBBATTERYCHARGINGPLUGIN_PUBLISHCHARGINGINFO_EXIT );
+	}
+
+#ifdef SYMBIAN_USB_BATTERYCHARGING_V1_1	
+
+void CUsbBatteryChargingPlugin::PeerDeviceMaxPower(TUint aCurrent)
+	{
+	OstTraceFunctionEntry0( CUSBBATTERYCHARGINGPLUGIN_PEERDEVICEMAXPOWER_ENTRY );
+	const TUint16 KIBDev_Drawn = 500;
+	iBDevMaxPower = (aCurrent < KIBDev_Drawn)?aCurrent:KIBDev_Drawn;	
+	UpdateChargingInfo();
+	OstTraceFunctionExit0( CUSBBATTERYCHARGINGPLUGIN_PEERDEVICEMAXPOWER_EXIT );
+	}
+#endif
+
--- a/usbmgmt/usbmgr/usbman/chargingplugin/src/chargingstates.cpp	Mon Sep 06 11:27:08 2010 +0800
+++ b/usbmgmt/usbmgr/usbman/chargingplugin/src/chargingstates.cpp	Thu Sep 16 12:03:29 2010 +0800
@@ -20,7 +20,6 @@
 @internalComponent
 */
 
-#include <usb/usblogger.h>
 #include "chargingstates.h"
 #include "reenumerator.h"
 #include "OstTraceDefinitions.h"
@@ -47,55 +46,44 @@
     OstTraceFunctionExit0( REF_TUSBBATTERYCHARGINGPLUGINSTATEBASE_USBSERVICESTATECHANGE_EXIT );
     }
 
+#ifdef SYMBIAN_USB_BATTERYCHARGING_V1_1	
+void TUsbBatteryChargingPluginStateBase::PeerDeviceMaxPower(TUint aCurrent)
+	{
+	(void)aCurrent;
+	}
+
+void TUsbBatteryChargingPluginStateBase::UsbChargingPortType(TUint aPortType)
+    {
+    switch (aPortType)
+    	{
+    	case EUsbChargingPortTypeDedicatedChargingPort:
+		case EUsbChargingPortTypeAcaRidA:
+		case EUsbChargingPortTypeAcaRidB:
+		case EUsbChargingPortTypeNone:
+		case EUsbChargingPortTypeUnsupported:
+		    iParent.SetState(EPluginStateIdle);
+			break;
+		case EUsbChargingPortTypeAcaRidC:
+		case EUsbChargingPortTypeStandardDownstreamPort:
+		case EUsbChargingPortTypeChargingDownstreamPort:
+		case EUsbChargingPortTypeChargingPort:
+		default:
+			break;
+    	}
+    }
+#endif
+
 void TUsbBatteryChargingPluginStateBase::UsbDeviceStateChange(TInt aLastError,
     TUsbDeviceState aOldState, TUsbDeviceState aNewState)
     {
     OstTraceFunctionEntry0( REF_TUSBBATTERYCHARGINGPLUGINSTATEBASE_USBDEVICESTATECHANGE_ENTRY );
-    
-    (void)aLastError;
-    (void)aOldState;
-    (void)aNewState;
+	(void)aLastError;
+	(void)aOldState;
+    iParent.iDeviceState = aNewState; 
     OstTraceFunctionExit0( REF_TUSBBATTERYCHARGINGPLUGINSTATEBASE_USBDEVICESTATECHANGE_EXIT );
     }
 
-void TUsbBatteryChargingPluginStateBase::HandleRepositoryValueChangedL(
-    const TUid& aRepository, TUint aId, TInt aVal)
-    {
-    OstTraceFunctionEntry0( REF_TUSBBATTERYCHARGINGPLUGINSTATEBASE_HANDLEREPOSITORYVALUECHANGEDL_ENTRY );
-    
-    OstTraceExt3( TRACE_NORMAL, REF_TUSBBATTERYCHARGINGPLUGINSTATEBASE_HANDLEREPOSITORYVALUECHANGEDL, 
-            "TUsbBatteryChargingPluginStateBase::HandleRepositoryValueChangedL;aRepository = 0x%08x;aId=%d;aVal=%d", 
-            aRepository.iUid, aId, (TInt32)aVal );
-    OstTraceExt2( TRACE_NORMAL, REF_TUSBBATTERYCHARGINGPLUGINSTATEBASE_HANDLEREPOSITORYVALUECHANGEDL_DUP1, 
-            "TUsbBatteryChargingPluginStateBase::HandleRepositoryValueChangedL;Plugin State = %d, Device State = %d",
-            iParent.iPluginState, iParent.iDeviceState );
-    
-    if ((aRepository == KUsbBatteryChargingCentralRepositoryUid) &&
-            (aId == KUsbBatteryChargingKeyEnabledUserSetting))
-        {
-        iParent.iUserSetting = (TUsbBatteryChargingUserSetting)aVal;
-
-        if (iParent.iUserSetting == EUsbBatteryChargingUserSettingDisabled)
-            {
-            if(iParent.iPluginState == EPluginStateCharging)
-                {
-                iParent.StopCharging();
-                
-                // Push EPluginStateIdleNegotiated state to recover state
-                iParent.PushRecoverState(EPluginStateIdleNegotiated);
-                }
-            else
-                {
-                // Push current state to recover state
-                iParent.PushRecoverState(iParent.iPluginState);
-                }
-            
-            iParent.SetState(EPluginStateUserDisabled);
-            }
-        }
-    OstTraceFunctionExit0( REF_TUSBBATTERYCHARGINGPLUGINSTATEBASE_HANDLEREPOSITORYVALUECHANGEDL_EXIT );
-    }
-    
+  
 void TUsbBatteryChargingPluginStateBase::DeviceStateTimeout()
     {
     OstTraceFunctionEntry0( REF_TUSBBATTERYCHARGINGPLUGINSTATEBASE_DEVICESTATETIMEOUT_ENTRY );
@@ -103,11 +91,7 @@
     
     iParent.iDeviceReEnumerator->Cancel(); // cancel re-enumeration AO
     
-    if(iParent.iUserSetting) // User allow charging already and not in negotiating process...
-        {
-        // Should not happen !!! Otherwise, something wrong!!!
-        iParent.SetState(EPluginStateIdle);
-        }
+    iParent.SetState(EPluginStateIdle);
     OstTraceFunctionExit0( REF_TUSBBATTERYCHARGINGPLUGINSTATEBASE_DEVICESTATETIMEOUT_EXIT );
     }
 
@@ -129,26 +113,16 @@
     switch(aValue)
         {
         case EUsbBatteryChargingIdPinARole:
-            if (iParent.iPluginState == EPluginStateCharging)
-                {
-                iParent.StopCharging();
-                }
-
             TRAP_IGNORE(iParent.SetInitialConfigurationL());
             iParent.SetState(EPluginStateBEndedCableNotPresent);
-            
-            OstTraceFunctionExit0( REF_TUSBBATTERYCHARGINGPLUGINSTATEBASE_MPSOIDPINSTATECHANGED_EXIT );
+			iParent.iAvailableMilliAmps = 0;
+			OstTraceFunctionExit0( REF_TUSBBATTERYCHARGINGPLUGINSTATEBASE_MPSOIDPINSTATECHANGED_EXIT );
             return;
 
         case EUsbBatteryChargingIdPinBRole:
-            iParent.SetState(EPluginStateIdle);
             break;
 
-        default:
-            if (iParent.iPluginState == EPluginStateCharging)
-                {
-                iParent.StopCharging();
-                }     
+        default:			
             iParent.SetState(EPluginStateIdle);
             break;
         }
@@ -182,13 +156,9 @@
     iParent.iVBusState = aNewState;
     if (aNewState == 0) // VBus drop down - we have disconnected from host
         {
-        if (iParent.iPluginState == EPluginStateCharging)
-            {
-            iParent.StopCharging();
-            }
+		iParent.iAvailableMilliAmps = 0;
         iParent.SetState(EPluginStateIdle);
         }
-    
     // The handling of VBus on will be down in DeviceStateChanged implicitly
     OstTraceFunctionExit0( REF_TUSBBATTERYCHARGINGPLUGINSTATEBASE_MPSOVBUSSTATECHANGED_EXIT_DUP1 );
     }
@@ -223,21 +193,14 @@
     (void)aOldState;
     iParent.iDeviceState = aNewState;
     iParent.LogStateText(aNewState);
-    
+
     switch (iParent.iDeviceState)
         {
         case EUsbDeviceStateAddress:
             {
-            if (iParent.iUserSetting)
+            if (iParent.IsUsbChargingPossible())
                 {
-                if (iParent.IsUsbChargingPossible())
-                    {
-                    iParent.NegotiateChargingCurrent();
-                    }
-                }
-            else
-                {
-                iParent.SetState(EPluginStateUserDisabled);
+                iParent.NegotiateChargingCurrent();
                 }
             }
             break;
@@ -272,18 +235,14 @@
         case EUsbDeviceStateConfigured:
             if (iParent.IsUsbChargingPossible())
                 {
-                iParent.iDeviceStateTimer->Cancel();
-                
+				iParent.iAvailableMilliAmps = iParent.iRequestedCurrentValue;			 
+                iParent.iDeviceStateTimer->Cancel();                
                 OstTrace1( TRACE_NORMAL, REF_TUSBBATTERYCHARGINGPLUGINSTATECURRENTNEGOTIATING_USBDEVICESTATECHANGE_DUP1, "TUsbBatteryChargingPluginStateCurrentNegotiating::UsbDeviceStateChange;iParent.iAvailableMilliAmps=%d", iParent.iAvailableMilliAmps );
-                iParent.iAvailableMilliAmps = iParent.iRequestedCurrentValue;
                 
                 if(0 != iParent.iRequestedCurrentValue)
                     {
-                    // A non-zero value was accepted by host, charging 
-                    // can be performed now.
-                    iParent.StartCharging(iParent.iAvailableMilliAmps);                     
+                    iParent.SetState(EPluginStateIdleNegotiated);
                     OstTrace1( TRACE_NORMAL, REF_TUSBBATTERYCHARGINGPLUGINSTATECURRENTNEGOTIATING_USBDEVICESTATECHANGE_DUP2, "TUsbBatteryChargingPluginStateCurrentNegotiating::UsbDeviceStateChange;PluginState => EPluginStateCharging(%d)", iParent.iPluginState );
-                    iParent.SetNegotiatedCurrent(iParent.iAvailableMilliAmps);
                     }
                 else
                     {
@@ -293,7 +252,6 @@
                     OstTrace1( TRACE_NORMAL, REF_TUSBBATTERYCHARGINGPLUGINSTATECURRENTNEGOTIATING_USBDEVICESTATECHANGE_DUP3, "TUsbBatteryChargingPluginStateCurrentNegotiating::UsbDeviceStateChange;No more current value to try, iPluginState turned to %d", iParent.iPluginState );
                     }
                 }
-            
             break;
         
         // If no configured received, there must be a timeout
@@ -329,51 +287,6 @@
     }
 
 
-// Charging plugin charing state
-
-    
-TUsbBatteryChargingPluginStateCharging::TUsbBatteryChargingPluginStateCharging (
-        CUsbBatteryChargingPlugin& aParentStateMachine ) :
-    TUsbBatteryChargingPluginStateBase(aParentStateMachine)
-    {
-    OstTraceFunctionEntry0( REF_TUSBBATTERYCHARGINGPLUGINSTATECHARGING_TUSBBATTERYCHARGINGPLUGINSTATECHARGING_CONS_ENTRY );
-    OstTraceFunctionExit0( REF_TUSBBATTERYCHARGINGPLUGINSTATECHARGING_TUSBBATTERYCHARGINGPLUGINSTATECHARGING_CONS_EXIT );
-    }
-
-void TUsbBatteryChargingPluginStateCharging::UsbDeviceStateChange(
-        TInt aLastError, TUsbDeviceState aOldState, TUsbDeviceState aNewState)
-    {
-    OstTraceFunctionEntry0( REF_TUSBBATTERYCHARGINGPLUGINSTATECHARGING_USBDEVICESTATECHANGE_ENTRY );
-
-    OstTraceExt3( TRACE_NORMAL, REF_TUSBBATTERYCHARGINGPLUGINSTATECHARGING_USBDEVICESTATECHANGE, "TUsbBatteryChargingPluginStateCharging::UsbDeviceStateChange;aLastError=%d;aOldState=%d;aNewState=%d", aLastError, aOldState, aNewState );
-    (void)aLastError;
-    (void)aOldState;
-    iParent.iDeviceState = aNewState;
-    iParent.LogStateText(aNewState);
-
-    switch(iParent.iDeviceState)
-        {
-        case EUsbDeviceStateConfigured:
-            break; // I think this can not happen at all but in case ...
-            
-        case EUsbDeviceStateAttached:
-        case EUsbDeviceStatePowered:
-        case EUsbDeviceStateDefault:
-        case EUsbDeviceStateAddress:
-        case EUsbDeviceStateSuspended:
-            {
-            // wait until configured
-            iParent.StopCharging();
-            iParent.SetState(EPluginStateIdleNegotiated);
-            }
-            break;
-                            
-        default:
-            break;
-        }
-    OstTraceFunctionExit0( REF_TUSBBATTERYCHARGINGPLUGINSTATECHARGING_USBDEVICESTATECHANGE_EXIT );
-    }
-
 // Charging plugin negotiated fail state
     
     
@@ -406,142 +319,14 @@
     (void)aOldState;
     iParent.iDeviceState = aNewState;
     iParent.LogStateText(aNewState);
-
-    switch(iParent.iDeviceState)
-        {
-        case EUsbDeviceStateConfigured:
-            {
-            // wait until configured
-            if (iParent.IsUsbChargingPossible())
-            	{
-                iParent.StartCharging(iParent.iAvailableMilliAmps);
-                }
-            }
-            break;
-
-        default:
-            break;
-        }
+	if (aNewState != EUsbDeviceStateConfigured && aNewState != EUsbDeviceStateSuspended)
+		{
+		iParent.iAvailableMilliAmps = 0;
+		iParent.SetState(EPluginStateIdle);
+		}
     OstTraceFunctionExit0( REF_TUSBBATTERYCHARGINGPLUGINSTATEIDLENEGOTIATED_USBDEVICESTATECHANGE_EXIT );
     }
  
-// Charging plugin user disabled state
-    
-TUsbBatteryChargingPluginStateUserDisabled::TUsbBatteryChargingPluginStateUserDisabled (
-        CUsbBatteryChargingPlugin& aParentStateMachine ) :
-    TUsbBatteryChargingPluginStateBase(aParentStateMachine)
-    {
-    OstTraceFunctionEntry0( REF_TUSBBATTERYCHARGINGPLUGINSTATEUSERDISABLED_TUSBBATTERYCHARGINGPLUGINSTATEUSERDISABLED_CONS_ENTRY );
-    OstTraceFunctionExit0( REF_TUSBBATTERYCHARGINGPLUGINSTATEUSERDISABLED_TUSBBATTERYCHARGINGPLUGINSTATEUSERDISABLED_CONS_EXIT );
-    };
-
-
-void TUsbBatteryChargingPluginStateUserDisabled::UsbDeviceStateChange(
-        TInt aLastError, TUsbDeviceState aOldState, TUsbDeviceState aNewState)
-    {
-    OstTraceFunctionEntry0( REF_TUSBBATTERYCHARGINGPLUGINSTATEUSERDISABLED_USBDEVICESTATECHANGE_ENTRY );
-
-    OstTraceExt3( TRACE_NORMAL, REF_TUSBBATTERYCHARGINGPLUGINSTATEUSERDISABLED_USBDEVICESTATECHANGE, "TUsbBatteryChargingPluginStateUserDisabled::UsbDeviceStateChange;aLastError=%d;aOldState=%d;aNewState=%d", aLastError, aOldState, aNewState );
-    (void)aLastError;
-    (void)aOldState;
-    iParent.iDeviceState = aNewState;
-    iParent.LogStateText(aNewState);
-    OstTraceFunctionExit0( REF_TUSBBATTERYCHARGINGPLUGINSTATEUSERDISABLED_USBDEVICESTATECHANGE_EXIT );
-    }
-
-void TUsbBatteryChargingPluginStateUserDisabled::HandleRepositoryValueChangedL(
-    const TUid& aRepository, TUint aId, TInt aVal)
-    {
-    OstTraceFunctionEntry0( REF_TUSBBATTERYCHARGINGPLUGINSTATEUSERDISABLED_HANDLEREPOSITORYVALUECHANGEDL_ENTRY );
-    
-    OstTrace1( TRACE_NORMAL, REF_TUSBBATTERYCHARGINGPLUGINSTATEUSERDISABLED_HANDLEREPOSITORYVALUECHANGEDL, "TUsbBatteryChargingPluginStateUserDisabled::HandleRepositoryValueChangedL;aRepository = 0x%08x", aRepository.iUid );
-    OstTraceExt2( TRACE_NORMAL, REF_TUSBBATTERYCHARGINGPLUGINSTATEUSERDISABLED_HANDLEREPOSITORYVALUECHANGEDL_DUP1, "TUsbBatteryChargingPluginStateUserDisabled::HandleRepositoryValueChangedL;aId=%d;aVal=%d", aId, aVal );
-    OstTraceExt2( TRACE_NORMAL, REF_TUSBBATTERYCHARGINGPLUGINSTATEUSERDISABLED_HANDLEREPOSITORYVALUECHANGEDL_DUP2, "TUsbBatteryChargingPluginStateUserDisabled::HandleRepositoryValueChangedL;iParent.iPluginState=%d;iParent.iDeviceState=%d", iParent.iPluginState, iParent.iDeviceState );
-    
-    if ((aRepository == KUsbBatteryChargingCentralRepositoryUid) &&
-            (aId == KUsbBatteryChargingKeyEnabledUserSetting))
-        {
-        iParent.iUserSetting = (TUsbBatteryChargingUserSetting)aVal;
-
-        if (iParent.iUserSetting == EUsbBatteryChargingUserSettingEnabled)
-            {
-            // EPluginStateUserDisabled must be the current state
-            iParent.PopRecoverState();
-            if ((iParent.iPluginState == EPluginStateIdleNegotiated)
-                    && (iParent.iDeviceState == EUsbDeviceStateConfigured))
-                {
-                iParent.StartCharging(iParent.iAvailableMilliAmps); // Go to charing state implicitly
-                }
-            OstTrace1( TRACE_NORMAL, REF_TUSBBATTERYCHARGINGPLUGINSTATEUSERDISABLED_HANDLEREPOSITORYVALUECHANGEDL_DUP3, "TUsbBatteryChargingPluginStateUserDisabled::HandleRepositoryValueChangedL;PluginState => %d", iParent.iPluginState );
-            }
-        }
-    OstTraceFunctionExit0( REF_TUSBBATTERYCHARGINGPLUGINSTATEUSERDISABLED_HANDLEREPOSITORYVALUECHANGEDL_EXIT );
-    }
-
-// For host OTG enabled charging plug-in
-#ifdef SYMBIAN_ENABLE_USB_OTG_HOST_PRIV
-void TUsbBatteryChargingPluginStateUserDisabled::MpsoIdPinStateChanged(TInt aValue)
-    {
-    OstTraceFunctionEntry0( REF_TUSBBATTERYCHARGINGPLUGINSTATEUSERDISABLED_MPSOIDPINSTATECHANGED_ENTRY );
-    
-    OstTrace1( TRACE_NORMAL, REF_TUSBBATTERYCHARGINGPLUGINSTATEUSERDISABLED_MPSOIDPINSTATECHANGED, "TUsbBatteryChargingPluginStateUserDisabled::MpsoIdPinStateChanged;IdPinState changed => %d", aValue );
-    
-    // Disable charging here when IdPin is present
-    // When IdPin disappears (i.e. the phone becomes B-Device), all necessary step are performed 
-    // in UsbDeviceStateChange() method
-
-    iParent.iIdPinState = aValue;
-    
-    switch(aValue)
-        {
-        case EUsbBatteryChargingIdPinARole:
-            TRAP_IGNORE(iParent.SetInitialConfigurationL());
-            iParent.PushRecoverState(EPluginStateBEndedCableNotPresent);
-            
-            OstTraceFunctionExit0( REF_TUSBBATTERYCHARGINGPLUGINSTATEUSERDISABLED_MPSOIDPINSTATECHANGED_EXIT );
-            return;
-
-        case EUsbBatteryChargingIdPinBRole:
-            iParent.PushRecoverState(EPluginStateIdle);
-            break;
-
-        default:     
-            iParent.SetState(EPluginStateIdle);
-            break;
-        }
-    OstTraceFunctionExit0( REF_TUSBBATTERYCHARGINGPLUGINSTATEUSERDISABLED_MPSOIDPINSTATECHANGED_EXIT_DUP1 );
-    }
-
-#endif     
- 
-void TUsbBatteryChargingPluginStateUserDisabled::MpsoVBusStateChanged(TInt aNewState)
-    {
-    OstTraceFunctionEntry0( REF_TUSBBATTERYCHARGINGPLUGINSTATEUSERDISABLED_MPSOVBUSSTATECHANGED_ENTRY );
-    
-    if (aNewState == iParent.iVBusState)
-        {
-        OstTrace1( TRACE_NORMAL, REF_TUSBBATTERYCHARGINGPLUGINSTATEUSERDISABLED_MPSOVBUSSTATECHANGED, "TUsbBatteryChargingPluginStateUserDisabled::MpsoVBusStateChanged;Receive VBus State Change notification without any state change: aNewState = %d", aNewState );
-        OstTraceFunctionExit0( REF_TUSBBATTERYCHARGINGPLUGINSTATEUSERDISABLED_MPSOVBUSSTATECHANGED_EXIT );
-        return;
-        }
-
-    OstTraceExt2( TRACE_NORMAL, REF_TUSBBATTERYCHARGINGPLUGINSTATEUSERDISABLED_MPSOVBUSSTATECHANGED_DUP1, "TUsbBatteryChargingPluginStateUserDisabled::MpsoVBusStateChanged;VBusState changed from %d to %d", iParent.iVBusState, aNewState );
-    
-    iParent.iVBusState = aNewState;
-    if (aNewState == 0) // VBus drop down - we have disconnected from host
-        {
-        iParent.iRequestedCurrentValue = 0;
-        iParent.iCurrentIndexRequested = 0;
-        iParent.iAvailableMilliAmps = 0;
-        
-        iParent.iPluginStateToRecovery = EPluginStateIdle;
-        }
-    
-    // The handling of VBus on will be down in DeviceStateChanged implicitly
-    OstTraceFunctionExit0( REF_TUSBBATTERYCHARGINGPLUGINSTATEUSERDISABLED_MPSOVBUSSTATECHANGED_EXIT_DUP1 );
-    }
-
-
 // Charging plugin A-role state
     
 TUsbBatteryChargingPluginStateBEndedCableNotPresent::TUsbBatteryChargingPluginStateBEndedCableNotPresent (
@@ -550,7 +335,26 @@
     {
     OstTraceFunctionEntry0( RES_TUSBBATTERYCHARGINGPLUGINSTATEBENDEDCABLENOTPRESENT_TUSBBATTERYCHARGINGPLUGINSTATEBENDEDCABLENOTPRESENT_CONS_ENTRY );
     OstTraceFunctionExit0( RES_TUSBBATTERYCHARGINGPLUGINSTATEBENDEDCABLENOTPRESENT_TUSBBATTERYCHARGINGPLUGINSTATEBENDEDCABLENOTPRESENT_CONS_EXIT );
-    };
+    }
+
+#ifdef SYMBIAN_ENABLE_USB_OTG_HOST_PRIV
+void TUsbBatteryChargingPluginStateBEndedCableNotPresent::MpsoIdPinStateChanged(TInt aValue)
+    {
+    iParent.iIdPinState = aValue;
     
+    switch(aValue)
+        {
+        case EUsbBatteryChargingIdPinARole:
+            break;
+        case EUsbBatteryChargingIdPinBRole:
+            iParent.SetState(EPluginStateIdle);
+            break;
+        default:			
+            iParent.SetState(EPluginStateIdle);
+            break;
+        }
+    }
+#endif
     
 
+
--- a/usbmgmt/usbmgr/usbman/chargingplugin/src/repositorynotifier.cpp	Mon Sep 06 11:27:08 2010 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,91 +0,0 @@
-/*
-* Copyright (c) 2005-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
-*/
-
-#include "repositorynotifier.h"
-#include <centralrepository.h>
-
-CUsbChargingRepositoryNotifier::CUsbChargingRepositoryNotifier(MUsbChargingRepositoryObserver& aObserver,const TUid& aRepository, TUint aId)
-: CActive(CActive::EPriorityStandard), iObserver(aObserver), iRepositoryUid(aRepository), iId(aId)
-	{
-	CActiveScheduler::Add(this);
-	}
-
-void CUsbChargingRepositoryNotifier::ConstructL()
-	{
-	iRepository = CRepository::NewL(iRepositoryUid);
-	TInt state = KErrUnknown;
-	User::LeaveIfError(iRepository->Get(iId, state));
-	// Update observers with current value if valid
-	if(state >= KErrNone)
-		{
-		iObserver.HandleRepositoryValueChangedL(iRepositoryUid, iId, state);
-		}
-	Notify();
-	}
-
-void CUsbChargingRepositoryNotifier::DoCancel()
-	{
-	// If the call returns an error value, there's nothing meaninful we can do
-	// (void) it to avoid messages from Lint
-	(void) iRepository->NotifyCancel(iId);
-	}
-
-CUsbChargingRepositoryNotifier::~CUsbChargingRepositoryNotifier()
-	{
-	Cancel();
-	delete iRepository;
-	}
-
-void CUsbChargingRepositoryNotifier::Notify()
-	{
-	iStatus = KRequestPending;
-	TInt err = iRepository->NotifyRequest(iId, iStatus);
-	if(err == KErrNone)
-		{
-		SetActive();
-		}
-	}
-
-void CUsbChargingRepositoryNotifier::RunL()
-	{
-	TInt state;
-	TInt err = iRepository->Get(iId, state);
-	if(err ==KErrNone)
-		{
-		iObserver.HandleRepositoryValueChangedL(iRepositoryUid, iId, state);
-		}
-	Notify();
-	}
-
-TInt CUsbChargingRepositoryNotifier::RunError(TInt /*aError*/)
-	{
-	return KErrNone;
-	}
-
-CUsbChargingRepositoryNotifier* CUsbChargingRepositoryNotifier::NewL(MUsbChargingRepositoryObserver& aObserver,const TUid& aRepository, TUint aId)
-	{
-	CUsbChargingRepositoryNotifier* self = new (ELeave) CUsbChargingRepositoryNotifier(aObserver,aRepository,aId);
-	CleanupStack::PushL(self);
-	self->ConstructL();
-	CleanupStack::Pop(self);
-	return self;
-	}
--- a/usbmgmt/usbmgr/usbman/chargingplugin/traces/fixed_id.definitions	Mon Sep 06 11:27:08 2010 +0800
+++ b/usbmgmt/usbmgr/usbman/chargingplugin/traces/fixed_id.definitions	Thu Sep 16 12:03:29 2010 +0800
@@ -3,14 +3,20 @@
 [GROUP]TRACE_FLOW=0x8a
 [GROUP]TRACE_NORMAL=0x86
 [TRACE]TRACE_FATAL[0x81]_REF_CUSBBATTERYCHARGINGPLUGIN_PANIC=0x1
+[TRACE]TRACE_FLOW[0x8A]_CUSBBATTERYCHARGINGPLUGIN_PEERDEVICEMAXPOWER_ENTRY=0x7b
+[TRACE]TRACE_FLOW[0x8A]_CUSBBATTERYCHARGINGPLUGIN_PEERDEVICEMAXPOWER_EXIT=0x7c
+[TRACE]TRACE_FLOW[0x8A]_CUSBBATTERYCHARGINGPLUGIN_PUBLISHCHARGINGINFO_ENTRY=0x79
+[TRACE]TRACE_FLOW[0x8A]_CUSBBATTERYCHARGINGPLUGIN_PUBLISHCHARGINGINFO_EXIT=0x7a
+[TRACE]TRACE_FLOW[0x8A]_CUSBBATTERYCHARGINGPLUGIN_UPDATECHARGINGINF1_ENTRY=0x77
+[TRACE]TRACE_FLOW[0x8A]_CUSBBATTERYCHARGINGPLUGIN_UPDATECHARGINGINF1_EXIT=0x78
+[TRACE]TRACE_FLOW[0x8A]_CUSBBATTERYCHARGINGPLUGIN_UPDATECHARGINGINFO_ENTRY=0x75
+[TRACE]TRACE_FLOW[0x8A]_CUSBBATTERYCHARGINGPLUGIN_UPDATECHARGINGINFO_EXIT=0x76
 [TRACE]TRACE_FLOW[0x8A]_REF_CUSBBATTERYCHARGINGPLUGIN_CONSTRUCTL_ENTRY=0x6a
 [TRACE]TRACE_FLOW[0x8A]_REF_CUSBBATTERYCHARGINGPLUGIN_CONSTRUCTL_EXIT=0x6b
 [TRACE]TRACE_FLOW[0x8A]_REF_CUSBBATTERYCHARGINGPLUGIN_CUSBBATTERYCHARGINGPLUGIN_DES_ENTRY=0x69
 [TRACE]TRACE_FLOW[0x8A]_REF_CUSBBATTERYCHARGINGPLUGIN_DEVICESTATETIMEOUT_ENTRY=0x41
 [TRACE]TRACE_FLOW[0x8A]_REF_CUSBBATTERYCHARGINGPLUGIN_DEVICESTATETIMEOUT_EXIT=0x42
 [TRACE]TRACE_FLOW[0x8A]_REF_CUSBBATTERYCHARGINGPLUGIN_GETINTERFACE=0x72
-[TRACE]TRACE_FLOW[0x8A]_REF_CUSBBATTERYCHARGINGPLUGIN_HANDLEREPOSITORYVALUECHANGEDL_ENTRY=0x3f
-[TRACE]TRACE_FLOW[0x8A]_REF_CUSBBATTERYCHARGINGPLUGIN_HANDLEREPOSITORYVALUECHANGEDL_EXIT=0x40
 [TRACE]TRACE_FLOW[0x8A]_REF_CUSBBATTERYCHARGINGPLUGIN_LOGSTATETEXT_ENTRY=0x51
 [TRACE]TRACE_FLOW[0x8A]_REF_CUSBBATTERYCHARGINGPLUGIN_LOGSTATETEXT_EXIT=0x52
 [TRACE]TRACE_FLOW[0x8A]_REF_CUSBBATTERYCHARGINGPLUGIN_MPSOIDPINSTATECHANGED_ENTRY=0x55
@@ -23,10 +29,6 @@
 [TRACE]TRACE_FLOW[0x8A]_REF_CUSBBATTERYCHARGINGPLUGIN_NEGOTIATECHARGINGCURRENT_EXIT=0x3c
 [TRACE]TRACE_FLOW[0x8A]_REF_CUSBBATTERYCHARGINGPLUGIN_NEGOTIATENEXTCURRENTVALUEL_ENTRY=0x43
 [TRACE]TRACE_FLOW[0x8A]_REF_CUSBBATTERYCHARGINGPLUGIN_NEGOTIATENEXTCURRENTVALUEL_EXIT=0x44
-[TRACE]TRACE_FLOW[0x8A]_REF_CUSBBATTERYCHARGINGPLUGIN_POPRECOVERSTATE_ENTRY=0x37
-[TRACE]TRACE_FLOW[0x8A]_REF_CUSBBATTERYCHARGINGPLUGIN_POPRECOVERSTATE_EXIT=0x38
-[TRACE]TRACE_FLOW[0x8A]_REF_CUSBBATTERYCHARGINGPLUGIN_PUSHRECOVERSTATE_ENTRY=0x35
-[TRACE]TRACE_FLOW[0x8A]_REF_CUSBBATTERYCHARGINGPLUGIN_PUSHRECOVERSTATE_EXIT=0x36
 [TRACE]TRACE_FLOW[0x8A]_REF_CUSBBATTERYCHARGINGPLUGIN_READCURRENTREQUESTVALUESL=0x6c
 [TRACE]TRACE_FLOW[0x8A]_REF_CUSBBATTERYCHARGINGPLUGIN_READCURRENTREQUESTVALUESL_ENTRY=0x49
 [TRACE]TRACE_FLOW[0x8A]_REF_CUSBBATTERYCHARGINGPLUGIN_READCURRENTREQUESTVALUESL_EXIT=0x4a
@@ -34,20 +36,12 @@
 [TRACE]TRACE_FLOW[0x8A]_REF_CUSBBATTERYCHARGINGPLUGIN_REQUESTCURRENTL_EXIT=0x48
 [TRACE]TRACE_FLOW[0x8A]_REF_CUSBBATTERYCHARGINGPLUGIN_RESETPLUGIN_ENTRY=0x45
 [TRACE]TRACE_FLOW[0x8A]_REF_CUSBBATTERYCHARGINGPLUGIN_RESETPLUGIN_EXIT=0x46
-[TRACE]TRACE_FLOW[0x8A]_REF_CUSBBATTERYCHARGINGPLUGIN_SETNEGOTIATEDCURRENT_ENTRY=0x4f
-[TRACE]TRACE_FLOW[0x8A]_REF_CUSBBATTERYCHARGINGPLUGIN_SETNEGOTIATEDCURRENT_EXIT=0x50
 [TRACE]TRACE_FLOW[0x8A]_REF_CUSBBATTERYCHARGINGPLUGIN_SETSTATE_ENTRY=0x39
 [TRACE]TRACE_FLOW[0x8A]_REF_CUSBBATTERYCHARGINGPLUGIN_SETSTATE_EXIT=0x3a
-[TRACE]TRACE_FLOW[0x8A]_REF_CUSBBATTERYCHARGINGPLUGIN_STARTCHARGING_ENTRY=0x4b
-[TRACE]TRACE_FLOW[0x8A]_REF_CUSBBATTERYCHARGINGPLUGIN_STARTCHARGING_EXIT=0x4c
-[TRACE]TRACE_FLOW[0x8A]_REF_CUSBBATTERYCHARGINGPLUGIN_STOPCHARGING_ENTRY=0x4d
-[TRACE]TRACE_FLOW[0x8A]_REF_CUSBBATTERYCHARGINGPLUGIN_STOPCHARGING_EXIT=0x4e
 [TRACE]TRACE_FLOW[0x8A]_REF_CUSBBATTERYCHARGINGPLUGIN_USBDEVICESTATECHANGE_ENTRY=0x3d
 [TRACE]TRACE_FLOW[0x8A]_REF_CUSBBATTERYCHARGINGPLUGIN_USBDEVICESTATECHANGE_EXIT=0x3e
 [TRACE]TRACE_FLOW[0x8A]_REF_TUSBBATTERYCHARGINGPLUGINSTATEBASE_DEVICESTATETIMEOUT_ENTRY=0x7
 [TRACE]TRACE_FLOW[0x8A]_REF_TUSBBATTERYCHARGINGPLUGINSTATEBASE_DEVICESTATETIMEOUT_EXIT=0x8
-[TRACE]TRACE_FLOW[0x8A]_REF_TUSBBATTERYCHARGINGPLUGINSTATEBASE_HANDLEREPOSITORYVALUECHANGEDL_ENTRY=0x5
-[TRACE]TRACE_FLOW[0x8A]_REF_TUSBBATTERYCHARGINGPLUGINSTATEBASE_HANDLEREPOSITORYVALUECHANGEDL_EXIT=0x6
 [TRACE]TRACE_FLOW[0x8A]_REF_TUSBBATTERYCHARGINGPLUGINSTATEBASE_MPSOIDPINSTATECHANGED_ENTRY=0x9
 [TRACE]TRACE_FLOW[0x8A]_REF_TUSBBATTERYCHARGINGPLUGINSTATEBASE_MPSOIDPINSTATECHANGED_EXIT=0xa
 [TRACE]TRACE_FLOW[0x8A]_REF_TUSBBATTERYCHARGINGPLUGINSTATEBASE_MPSOIDPINSTATECHANGED_EXIT_DUP1=0xb
@@ -62,10 +56,6 @@
 [TRACE]TRACE_FLOW[0x8A]_REF_TUSBBATTERYCHARGINGPLUGINSTATEBASE_USBDEVICESTATECHANGE_EXIT=0x4
 [TRACE]TRACE_FLOW[0x8A]_REF_TUSBBATTERYCHARGINGPLUGINSTATEBASE_USBSERVICESTATECHANGE_ENTRY=0x1
 [TRACE]TRACE_FLOW[0x8A]_REF_TUSBBATTERYCHARGINGPLUGINSTATEBASE_USBSERVICESTATECHANGE_EXIT=0x2
-[TRACE]TRACE_FLOW[0x8A]_REF_TUSBBATTERYCHARGINGPLUGINSTATECHARGING_TUSBBATTERYCHARGINGPLUGINSTATECHARGING_CONS_ENTRY=0x5f
-[TRACE]TRACE_FLOW[0x8A]_REF_TUSBBATTERYCHARGINGPLUGINSTATECHARGING_TUSBBATTERYCHARGINGPLUGINSTATECHARGING_CONS_EXIT=0x60
-[TRACE]TRACE_FLOW[0x8A]_REF_TUSBBATTERYCHARGINGPLUGINSTATECHARGING_USBDEVICESTATECHANGE_ENTRY=0x1f
-[TRACE]TRACE_FLOW[0x8A]_REF_TUSBBATTERYCHARGINGPLUGINSTATECHARGING_USBDEVICESTATECHANGE_EXIT=0x20
 [TRACE]TRACE_FLOW[0x8A]_REF_TUSBBATTERYCHARGINGPLUGINSTATECURRENTNEGOTIATING_DEVICESTATETIMEOUT_ENTRY=0x1b
 [TRACE]TRACE_FLOW[0x8A]_REF_TUSBBATTERYCHARGINGPLUGINSTATECURRENTNEGOTIATING_DEVICESTATETIMEOUT_EXIT=0x1c
 [TRACE]TRACE_FLOW[0x8A]_REF_TUSBBATTERYCHARGINGPLUGINSTATECURRENTNEGOTIATING_TUSBBATTERYCHARGINGPLUGINSTATECURRENTNEGOTIATING_CONS_ENTRY=0x5d
@@ -82,25 +72,12 @@
 [TRACE]TRACE_FLOW[0x8A]_REF_TUSBBATTERYCHARGINGPLUGINSTATEIDLE_USBDEVICESTATECHANGE_EXIT=0x16
 [TRACE]TRACE_FLOW[0x8A]_REF_TUSBBATTERYCHARGINGPLUGINSTATENOVALIDCURRENT_TUSBBATTERYCHARGINGPLUGINSTATENOVALIDCURRENT_CONS_ENTRY=0x61
 [TRACE]TRACE_FLOW[0x8A]_REF_TUSBBATTERYCHARGINGPLUGINSTATENOVALIDCURRENT_TUSBBATTERYCHARGINGPLUGINSTATENOVALIDCURRENT_CONS_EXIT=0x62
-[TRACE]TRACE_FLOW[0x8A]_REF_TUSBBATTERYCHARGINGPLUGINSTATEUSERDISABLED_HANDLEREPOSITORYVALUECHANGEDL_ENTRY=0x2b
-[TRACE]TRACE_FLOW[0x8A]_REF_TUSBBATTERYCHARGINGPLUGINSTATEUSERDISABLED_HANDLEREPOSITORYVALUECHANGEDL_EXIT=0x2c
-[TRACE]TRACE_FLOW[0x8A]_REF_TUSBBATTERYCHARGINGPLUGINSTATEUSERDISABLED_MPSOIDPINSTATECHANGED_ENTRY=0x2d
-[TRACE]TRACE_FLOW[0x8A]_REF_TUSBBATTERYCHARGINGPLUGINSTATEUSERDISABLED_MPSOIDPINSTATECHANGED_EXIT=0x2e
-[TRACE]TRACE_FLOW[0x8A]_REF_TUSBBATTERYCHARGINGPLUGINSTATEUSERDISABLED_MPSOIDPINSTATECHANGED_EXIT_DUP1=0x2f
-[TRACE]TRACE_FLOW[0x8A]_REF_TUSBBATTERYCHARGINGPLUGINSTATEUSERDISABLED_MPSOVBUSSTATECHANGED_ENTRY=0x30
-[TRACE]TRACE_FLOW[0x8A]_REF_TUSBBATTERYCHARGINGPLUGINSTATEUSERDISABLED_MPSOVBUSSTATECHANGED_EXIT=0x31
-[TRACE]TRACE_FLOW[0x8A]_REF_TUSBBATTERYCHARGINGPLUGINSTATEUSERDISABLED_MPSOVBUSSTATECHANGED_EXIT_DUP1=0x32
-[TRACE]TRACE_FLOW[0x8A]_REF_TUSBBATTERYCHARGINGPLUGINSTATEUSERDISABLED_TUSBBATTERYCHARGINGPLUGINSTATEUSERDISABLED_CONS_ENTRY=0x65
-[TRACE]TRACE_FLOW[0x8A]_REF_TUSBBATTERYCHARGINGPLUGINSTATEUSERDISABLED_TUSBBATTERYCHARGINGPLUGINSTATEUSERDISABLED_CONS_EXIT=0x66
-[TRACE]TRACE_FLOW[0x8A]_REF_TUSBBATTERYCHARGINGPLUGINSTATEUSERDISABLED_USBDEVICESTATECHANGE_ENTRY=0x29
-[TRACE]TRACE_FLOW[0x8A]_REF_TUSBBATTERYCHARGINGPLUGINSTATEUSERDISABLED_USBDEVICESTATECHANGE_EXIT=0x2a
 [TRACE]TRACE_FLOW[0x8A]_RES_TUSBBATTERYCHARGINGPLUGINSTATEBENDEDCABLENOTPRESENT_TUSBBATTERYCHARGINGPLUGINSTATEBENDEDCABLENOTPRESENT_CONS_ENTRY=0x67
 [TRACE]TRACE_FLOW[0x8A]_RES_TUSBBATTERYCHARGINGPLUGINSTATEBENDEDCABLENOTPRESENT_TUSBBATTERYCHARGINGPLUGINSTATEBENDEDCABLENOTPRESENT_CONS_EXIT=0x68
-[TRACE]TRACE_NORMAL[0x86]_REF_CUSBBATTERYCHARGINGPLUGIN_CONSTRUCTL=0x18
-[TRACE]TRACE_NORMAL[0x86]_REF_CUSBBATTERYCHARGINGPLUGIN_CONSTRUCTL_DUP1=0x19
-[TRACE]TRACE_NORMAL[0x86]_REF_CUSBBATTERYCHARGINGPLUGIN_CONSTRUCTL_DUP2=0x1a
+[TRACE]TRACE_NORMAL[0x86]_CUSBBATTERYCHARGINGPLUGIN_QUERYCURRENTSPEED=0x49
+[TRACE]TRACE_NORMAL[0x86]_CUSBBATTERYCHARGINGPLUGIN_USBCHARGINGPORTTYPE=0x48
+[TRACE]TRACE_NORMAL[0x86]_DUP1_CUSBBATTERYCHARGINGPLUGIN_QUERYCURRENTSPEED=0x4a
 [TRACE]TRACE_NORMAL[0x86]_REF_CUSBBATTERYCHARGINGPLUGIN_CONSTRUCTL_DUP3=0x1d
-[TRACE]TRACE_NORMAL[0x86]_REF_CUSBBATTERYCHARGINGPLUGIN_CONSTRUCTL_DUP4=0x1e
 [TRACE]TRACE_NORMAL[0x86]_REF_CUSBBATTERYCHARGINGPLUGIN_GETINTERFACE_DUP1=0x41
 [TRACE]TRACE_NORMAL[0x86]_REF_CUSBBATTERYCHARGINGPLUGIN_GETINTERFACE_DUP2=0x42
 [TRACE]TRACE_NORMAL[0x86]_REF_CUSBBATTERYCHARGINGPLUGIN_LOGSTATETEXT=0x29
@@ -112,6 +89,12 @@
 [TRACE]TRACE_NORMAL[0x86]_REF_CUSBBATTERYCHARGINGPLUGIN_LOGSTATETEXT_DUP6=0x2f
 [TRACE]TRACE_NORMAL[0x86]_REF_CUSBBATTERYCHARGINGPLUGIN_NEGOTIATECHARGINGCURRENT=0x33
 [TRACE]TRACE_NORMAL[0x86]_REF_CUSBBATTERYCHARGINGPLUGIN_NEGOTIATECHARGINGCURRENT_DUP1=0x34
+[TRACE]TRACE_NORMAL[0x86]_REF_CUSBBATTERYCHARGINGPLUGIN_PUBLISHCHARGINGINFO_DUP1=0x4b
+[TRACE]TRACE_NORMAL[0x86]_REF_CUSBBATTERYCHARGINGPLUGIN_PUBLISHCHARGINGINFO_DUP2=0x4c
+[TRACE]TRACE_NORMAL[0x86]_REF_CUSBBATTERYCHARGINGPLUGIN_PUBLISHCHARGINGINFO_DUP3=0x4d
+[TRACE]TRACE_NORMAL[0x86]_REF_CUSBBATTERYCHARGINGPLUGIN_PUBLISHCHARGINGINFO_DUP4=0x4e
+[TRACE]TRACE_NORMAL[0x86]_REF_CUSBBATTERYCHARGINGPLUGIN_PUBLISHCHARGINGINFO_DUP5=0x4f
+[TRACE]TRACE_NORMAL[0x86]_REF_CUSBBATTERYCHARGINGPLUGIN_PUBLISHCHARGINGINFO_DUP6=0x50
 [TRACE]TRACE_NORMAL[0x86]_REF_CUSBBATTERYCHARGINGPLUGIN_REQUESTCURRENTL=0x36
 [TRACE]TRACE_NORMAL[0x86]_REF_CUSBBATTERYCHARGINGPLUGIN_REQUESTCURRENTL_DUP1=0x37
 [TRACE]TRACE_NORMAL[0x86]_REF_CUSBBATTERYCHARGINGPLUGIN_REQUESTCURRENTL_DUP10=0x40
@@ -134,20 +117,12 @@
 [TRACE]TRACE_NORMAL[0x86]_REF_CUSBBATTERYCHARGINGPLUGIN_SETINITIALCONFIGURATIONL_DUP7=0x26
 [TRACE]TRACE_NORMAL[0x86]_REF_CUSBBATTERYCHARGINGPLUGIN_SETINITIALCONFIGURATIONL_DUP8=0x27
 [TRACE]TRACE_NORMAL[0x86]_REF_CUSBBATTERYCHARGINGPLUGIN_SETINITIALCONFIGURATIONL_DUP9=0x28
-[TRACE]TRACE_NORMAL[0x86]_REF_CUSBBATTERYCHARGINGPLUGIN_SETNEGOTIATEDCURRENT=0x43
-[TRACE]TRACE_NORMAL[0x86]_REF_CUSBBATTERYCHARGINGPLUGIN_SETNEGOTIATEDCURRENT_DUP1=0x44
 [TRACE]TRACE_NORMAL[0x86]_REF_CUSBBATTERYCHARGINGPLUGIN_SETSTATE=0x31
 [TRACE]TRACE_NORMAL[0x86]_REF_CUSBBATTERYCHARGINGPLUGIN_SETSTATE_DUP1=0x32
-[TRACE]TRACE_NORMAL[0x86]_REF_CUSBBATTERYCHARGINGPLUGIN_STARTCHARGING=0x45
-[TRACE]TRACE_NORMAL[0x86]_REF_CUSBBATTERYCHARGINGPLUGIN_STARTCHARGING_DUP1=0x46
-[TRACE]TRACE_NORMAL[0x86]_REF_CUSBBATTERYCHARGINGPLUGIN_STOPCHARGING=0x47
 [TRACE]TRACE_NORMAL[0x86]_REF_TUSBBATTERYCHARGINGPLUGINSTATEBASE_DEVICESTATETIMEOUT=0x3
-[TRACE]TRACE_NORMAL[0x86]_REF_TUSBBATTERYCHARGINGPLUGINSTATEBASE_HANDLEREPOSITORYVALUECHANGEDL=0x1
-[TRACE]TRACE_NORMAL[0x86]_REF_TUSBBATTERYCHARGINGPLUGINSTATEBASE_HANDLEREPOSITORYVALUECHANGEDL_DUP1=0x2
 [TRACE]TRACE_NORMAL[0x86]_REF_TUSBBATTERYCHARGINGPLUGINSTATEBASE_MPSOIDPINSTATECHANGED=0x4
 [TRACE]TRACE_NORMAL[0x86]_REF_TUSBBATTERYCHARGINGPLUGINSTATEBASE_MPSOVBUSSTATECHANGED=0x5
 [TRACE]TRACE_NORMAL[0x86]_REF_TUSBBATTERYCHARGINGPLUGINSTATEBASE_MPSOVBUSSTATECHANGED_DUP1=0x6
-[TRACE]TRACE_NORMAL[0x86]_REF_TUSBBATTERYCHARGINGPLUGINSTATECHARGING_USBDEVICESTATECHANGE=0xe
 [TRACE]TRACE_NORMAL[0x86]_REF_TUSBBATTERYCHARGINGPLUGINSTATECURRENTNEGOTIATING_DEVICESTATETIMEOUT=0xd
 [TRACE]TRACE_NORMAL[0x86]_REF_TUSBBATTERYCHARGINGPLUGINSTATECURRENTNEGOTIATING_USBDEVICESTATECHANGE=0x8
 [TRACE]TRACE_NORMAL[0x86]_REF_TUSBBATTERYCHARGINGPLUGINSTATECURRENTNEGOTIATING_USBDEVICESTATECHANGE_DUP1=0x9
@@ -155,25 +130,35 @@
 [TRACE]TRACE_NORMAL[0x86]_REF_TUSBBATTERYCHARGINGPLUGINSTATECURRENTNEGOTIATING_USBDEVICESTATECHANGE_DUP3=0xb
 [TRACE]TRACE_NORMAL[0x86]_REF_TUSBBATTERYCHARGINGPLUGINSTATEIDLENEGOTIATED_USBDEVICESTATECHANGE=0xf
 [TRACE]TRACE_NORMAL[0x86]_REF_TUSBBATTERYCHARGINGPLUGINSTATEIDLE_USBDEVICESTATECHANGE=0x7
-[TRACE]TRACE_NORMAL[0x86]_REF_TUSBBATTERYCHARGINGPLUGINSTATEUSERDISABLED_HANDLEREPOSITORYVALUECHANGEDL=0x11
-[TRACE]TRACE_NORMAL[0x86]_REF_TUSBBATTERYCHARGINGPLUGINSTATEUSERDISABLED_HANDLEREPOSITORYVALUECHANGEDL_DUP1=0x12
-[TRACE]TRACE_NORMAL[0x86]_REF_TUSBBATTERYCHARGINGPLUGINSTATEUSERDISABLED_HANDLEREPOSITORYVALUECHANGEDL_DUP2=0x13
-[TRACE]TRACE_NORMAL[0x86]_REF_TUSBBATTERYCHARGINGPLUGINSTATEUSERDISABLED_HANDLEREPOSITORYVALUECHANGEDL_DUP3=0x14
-[TRACE]TRACE_NORMAL[0x86]_REF_TUSBBATTERYCHARGINGPLUGINSTATEUSERDISABLED_MPSOIDPINSTATECHANGED=0x15
-[TRACE]TRACE_NORMAL[0x86]_REF_TUSBBATTERYCHARGINGPLUGINSTATEUSERDISABLED_MPSOVBUSSTATECHANGED=0x16
-[TRACE]TRACE_NORMAL[0x86]_REF_TUSBBATTERYCHARGINGPLUGINSTATEUSERDISABLED_MPSOVBUSSTATECHANGED_DUP1=0x17
-[TRACE]TRACE_NORMAL[0x86]_REF_TUSBBATTERYCHARGINGPLUGINSTATEUSERDISABLED_USBDEVICESTATECHANGE=0x10
 [[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_REF_CUSBBATTERYCHARGINGPLUGIN_GETINTERFACE_DUP1=0x73
 [[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_REF_CUSBBATTERYCHARGINGPLUGIN_GETINTERFACE_DUP2=0x74
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_REF_CUSBBATTERYCHARGINGPLUGIN_HANDLEREPOSITORYVALUECHANGEDL_ENTRY=0x3f
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_REF_CUSBBATTERYCHARGINGPLUGIN_HANDLEREPOSITORYVALUECHANGEDL_EXIT=0x40
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_REF_CUSBBATTERYCHARGINGPLUGIN_POPRECOVERSTATE_ENTRY=0x37
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_REF_CUSBBATTERYCHARGINGPLUGIN_POPRECOVERSTATE_EXIT=0x38
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_REF_CUSBBATTERYCHARGINGPLUGIN_PUSHRECOVERSTATE_ENTRY=0x35
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_REF_CUSBBATTERYCHARGINGPLUGIN_PUSHRECOVERSTATE_EXIT=0x36
 [[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_REF_CUSBBATTERYCHARGINGPLUGIN_SETNEGOTIATEDCURRENT=0x70
 [[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_REF_CUSBBATTERYCHARGINGPLUGIN_SETNEGOTIATEDCURRENT_DUP1=0x71
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_REF_CUSBBATTERYCHARGINGPLUGIN_SETNEGOTIATEDCURRENT_ENTRY=0x4f
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_REF_CUSBBATTERYCHARGINGPLUGIN_SETNEGOTIATEDCURRENT_EXIT=0x50
 [[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_REF_CUSBBATTERYCHARGINGPLUGIN_STARTCHARGING=0x6d
 [[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_REF_CUSBBATTERYCHARGINGPLUGIN_STARTCHARGING_DUP1=0x6e
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_REF_CUSBBATTERYCHARGINGPLUGIN_STARTCHARGING_ENTRY=0x4b
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_REF_CUSBBATTERYCHARGINGPLUGIN_STARTCHARGING_EXIT=0x4c
 [[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_REF_CUSBBATTERYCHARGINGPLUGIN_STOPCHARGING=0x6f
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_REF_CUSBBATTERYCHARGINGPLUGIN_STOPCHARGING_ENTRY=0x4d
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_REF_CUSBBATTERYCHARGINGPLUGIN_STOPCHARGING_EXIT=0x4e
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_REF_TUSBBATTERYCHARGINGPLUGINSTATEBASE_HANDLEREPOSITORYVALUECHANGEDL_ENTRY=0x5
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_REF_TUSBBATTERYCHARGINGPLUGINSTATEBASE_HANDLEREPOSITORYVALUECHANGEDL_EXIT=0x6
 [[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_REF_TUSBBATTERYCHARGINGPLUGINSTATEBASE_TUSBBATTERYCHARGINGPLUGINSTATEBASE_ENTRY=0x11
 [[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_REF_TUSBBATTERYCHARGINGPLUGINSTATEBASE_TUSBBATTERYCHARGINGPLUGINSTATEBASE_EXIT=0x12
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_REF_TUSBBATTERYCHARGINGPLUGINSTATECHARGING_TUSBBATTERYCHARGINGPLUGINSTATECHARGING_CONS_ENTRY=0x5f
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_REF_TUSBBATTERYCHARGINGPLUGINSTATECHARGING_TUSBBATTERYCHARGINGPLUGINSTATECHARGING_CONS_EXIT=0x60
 [[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_REF_TUSBBATTERYCHARGINGPLUGINSTATECHARGING_TUSBBATTERYCHARGINGPLUGINSTATECHARGING_ENTRY=0x1d
 [[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_REF_TUSBBATTERYCHARGINGPLUGINSTATECHARGING_TUSBBATTERYCHARGINGPLUGINSTATECHARGING_EXIT=0x1e
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_REF_TUSBBATTERYCHARGINGPLUGINSTATECHARGING_USBDEVICESTATECHANGE_ENTRY=0x1f
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_REF_TUSBBATTERYCHARGINGPLUGINSTATECHARGING_USBDEVICESTATECHANGE_EXIT=0x20
 [[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_REF_TUSBBATTERYCHARGINGPLUGINSTATECURRENTNEGOTIATING_TUSBBATTERYCHARGINGPLUGINSTATECURRENTNEGOTIATING_ENTRY=0x17
 [[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_REF_TUSBBATTERYCHARGINGPLUGINSTATECURRENTNEGOTIATING_TUSBBATTERYCHARGINGPLUGINSTATECURRENTNEGOTIATING_EXIT=0x18
 [[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_REF_TUSBBATTERYCHARGINGPLUGINSTATEIDLENEGOTIATED_TUSBBATTERYCHARGINGPLUGINSTATEIDLENEGOTIATED_ENTRY=0x23
@@ -182,11 +167,43 @@
 [[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_REF_TUSBBATTERYCHARGINGPLUGINSTATEIDLE_TUSBBATTERYCHARGINGPLUGINSTATEIDLE_EXIT=0x14
 [[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_REF_TUSBBATTERYCHARGINGPLUGINSTATENOVALIDCURRENT_TUSBBATTERYCHARGINGPLUGINSTATENOVALIDCURRENT_ENTRY=0x21
 [[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_REF_TUSBBATTERYCHARGINGPLUGINSTATENOVALIDCURRENT_TUSBBATTERYCHARGINGPLUGINSTATENOVALIDCURRENT_EXIT=0x22
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_REF_TUSBBATTERYCHARGINGPLUGINSTATEUSERDISABLED_HANDLEREPOSITORYVALUECHANGEDL_ENTRY=0x2b
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_REF_TUSBBATTERYCHARGINGPLUGINSTATEUSERDISABLED_HANDLEREPOSITORYVALUECHANGEDL_EXIT=0x2c
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_REF_TUSBBATTERYCHARGINGPLUGINSTATEUSERDISABLED_MPSOIDPINSTATECHANGED_ENTRY=0x2d
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_REF_TUSBBATTERYCHARGINGPLUGINSTATEUSERDISABLED_MPSOIDPINSTATECHANGED_EXIT=0x2e
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_REF_TUSBBATTERYCHARGINGPLUGINSTATEUSERDISABLED_MPSOIDPINSTATECHANGED_EXIT_DUP1=0x2f
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_REF_TUSBBATTERYCHARGINGPLUGINSTATEUSERDISABLED_MPSOVBUSSTATECHANGED_ENTRY=0x30
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_REF_TUSBBATTERYCHARGINGPLUGINSTATEUSERDISABLED_MPSOVBUSSTATECHANGED_EXIT=0x31
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_REF_TUSBBATTERYCHARGINGPLUGINSTATEUSERDISABLED_MPSOVBUSSTATECHANGED_EXIT_DUP1=0x32
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_REF_TUSBBATTERYCHARGINGPLUGINSTATEUSERDISABLED_TUSBBATTERYCHARGINGPLUGINSTATEUSERDISABLED_CONS_ENTRY=0x65
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_REF_TUSBBATTERYCHARGINGPLUGINSTATEUSERDISABLED_TUSBBATTERYCHARGINGPLUGINSTATEUSERDISABLED_CONS_EXIT=0x66
 [[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_REF_TUSBBATTERYCHARGINGPLUGINSTATEUSERDISABLED_TUSBBATTERYCHARGINGPLUGINSTATEUSERDISABLED_ENTRY=0x27
 [[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_REF_TUSBBATTERYCHARGINGPLUGINSTATEUSERDISABLED_TUSBBATTERYCHARGINGPLUGINSTATEUSERDISABLED_EXIT=0x28
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_REF_TUSBBATTERYCHARGINGPLUGINSTATEUSERDISABLED_USBDEVICESTATECHANGE_ENTRY=0x29
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_REF_TUSBBATTERYCHARGINGPLUGINSTATEUSERDISABLED_USBDEVICESTATECHANGE_EXIT=0x2a
 [[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_RES_TUSBBATTERYCHARGINGPLUGINSTATEBENDEDCABLENOTPRESENT_TUSBBATTERYCHARGINGPLUGINSTATEBENDEDCABLENOTPRESENT_ENTRY=0x33
 [[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_RES_TUSBBATTERYCHARGINGPLUGINSTATEBENDEDCABLENOTPRESENT_TUSBBATTERYCHARGINGPLUGINSTATEBENDEDCABLENOTPRESENT_EXIT=0x34
+[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_REF_CUSBBATTERYCHARGINGPLUGIN_CONSTRUCTL=0x18
+[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_REF_CUSBBATTERYCHARGINGPLUGIN_CONSTRUCTL_DUP1=0x19
+[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_REF_CUSBBATTERYCHARGINGPLUGIN_CONSTRUCTL_DUP2=0x1a
+[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_REF_CUSBBATTERYCHARGINGPLUGIN_CONSTRUCTL_DUP4=0x1e
 [[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_REF_CUSBBATTERYCHARGINGPLUGIN_PANIC=0x30
+[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_REF_CUSBBATTERYCHARGINGPLUGIN_SETNEGOTIATEDCURRENT=0x43
+[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_REF_CUSBBATTERYCHARGINGPLUGIN_SETNEGOTIATEDCURRENT_DUP1=0x44
+[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_REF_CUSBBATTERYCHARGINGPLUGIN_STARTCHARGING=0x45
+[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_REF_CUSBBATTERYCHARGINGPLUGIN_STARTCHARGING_DUP1=0x46
+[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_REF_CUSBBATTERYCHARGINGPLUGIN_STOPCHARGING=0x47
+[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_REF_TUSBBATTERYCHARGINGPLUGINSTATEBASE_HANDLEREPOSITORYVALUECHANGEDL=0x1
+[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_REF_TUSBBATTERYCHARGINGPLUGINSTATEBASE_HANDLEREPOSITORYVALUECHANGEDL_DUP1=0x2
 [[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_REF_TUSBBATTERYCHARGINGPLUGINSTATEBASE_HANDLEREPOSITORYVALUECHANGEDL_DUP2=0xc
+[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_REF_TUSBBATTERYCHARGINGPLUGINSTATECHARGING_USBDEVICESTATECHANGE=0xe
+[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_REF_TUSBBATTERYCHARGINGPLUGINSTATEUSERDISABLED_HANDLEREPOSITORYVALUECHANGEDL=0x11
+[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_REF_TUSBBATTERYCHARGINGPLUGINSTATEUSERDISABLED_HANDLEREPOSITORYVALUECHANGEDL_DUP1=0x12
+[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_REF_TUSBBATTERYCHARGINGPLUGINSTATEUSERDISABLED_HANDLEREPOSITORYVALUECHANGEDL_DUP2=0x13
+[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_REF_TUSBBATTERYCHARGINGPLUGINSTATEUSERDISABLED_HANDLEREPOSITORYVALUECHANGEDL_DUP3=0x14
+[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_REF_TUSBBATTERYCHARGINGPLUGINSTATEUSERDISABLED_MPSOIDPINSTATECHANGED=0x15
+[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_REF_TUSBBATTERYCHARGINGPLUGINSTATEUSERDISABLED_MPSOVBUSSTATECHANGED=0x16
+[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_REF_TUSBBATTERYCHARGINGPLUGINSTATEUSERDISABLED_MPSOVBUSSTATECHANGED_DUP1=0x17
+[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_REF_TUSBBATTERYCHARGINGPLUGINSTATEUSERDISABLED_USBDEVICESTATECHANGE=0x10
 [[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]__REF_CUSBBATTERYCHARGINGPLUGIN_CONSTRUCTL_DUP3=0x1b
 [[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]__REF_CUSBBATTERYCHARGINGPLUGIN_CONSTRUCTL_DUP4=0x1c
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/usbmgmt/usbmgr/usbman/extensionplugin/BWINS/usbmanextensionpluginshaiu.def	Thu Sep 16 12:03:29 2010 +0800
@@ -0,0 +1,9 @@
+EXPORTS
+	??1CUsbmanExtensionPlugin@@UAE@XZ @ 1 NONAME ; CUsbmanExtensionPlugin::~CUsbmanExtensionPlugin(void)
+	?NewL@CUsbmanExtensionPlugin@@SAPAV1@VTUid@@AAVMUsbmanExtensionPluginObserver@@@Z @ 2 NONAME ; class CUsbmanExtensionPlugin * CUsbmanExtensionPlugin::NewL(class TUid, class MUsbmanExtensionPluginObserver &)
+	?RegisterStateObserverL@MUsbmanExtensionPluginObserver@@QAEXAAVMUsbDeviceNotify@@@Z @ 3 NONAME ; void MUsbmanExtensionPluginObserver::RegisterStateObserverL(class MUsbDeviceNotify &)
+	?RegisterChargingObserverL@MUsbmanExtensionPluginObserver@@QAEXAAVMUsbChargingNotify@@@Z @ 4 NONAME ; void MUsbmanExtensionPluginObserver::RegisterChargingObserverL(class MUsbChargingNotify &)
+	?Observer@CUsbmanExtensionPlugin@@IAEAAVMUsbmanExtensionPluginObserver@@XZ @ 5 NONAME ; class MUsbmanExtensionPluginObserver & CUsbmanExtensionPlugin::Observer(void)
+	?DevUsbcClient@MUsbmanExtensionPluginObserver@@QAEAAVRDevUsbcClient@@XZ @ 6 NONAME ; class RDevUsbcClient & MUsbmanExtensionPluginObserver::DevUsbcClient(void)
+	??0CUsbmanExtensionPlugin@@IAE@AAVMUsbmanExtensionPluginObserver@@@Z @ 7 NONAME ; CUsbmanExtensionPlugin::CUsbmanExtensionPlugin(class MUsbmanExtensionPluginObserver &)
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/usbmgmt/usbmgr/usbman/extensionplugin/EABI/usbmanextensionpluginshaiu.def	Thu Sep 16 12:03:29 2010 +0800
@@ -0,0 +1,13 @@
+EXPORTS
+	_ZN22CUsbmanExtensionPlugin4NewLE4TUidR30MUsbmanExtensionPluginObserver @ 1 NONAME
+	_ZN22CUsbmanExtensionPlugin8ObserverEv @ 2 NONAME
+	_ZN22CUsbmanExtensionPluginC2ER30MUsbmanExtensionPluginObserver @ 3 NONAME
+	_ZN22CUsbmanExtensionPluginD0Ev @ 4 NONAME
+	_ZN22CUsbmanExtensionPluginD1Ev @ 5 NONAME
+	_ZN22CUsbmanExtensionPluginD2Ev @ 6 NONAME
+	_ZN30MUsbmanExtensionPluginObserver13DevUsbcClientEv @ 7 NONAME
+	_ZN30MUsbmanExtensionPluginObserver22RegisterStateObserverLER16MUsbDeviceNotify @ 8 NONAME
+	_ZTI22CUsbmanExtensionPlugin @ 9 NONAME ; #<TI>#
+	_ZTV22CUsbmanExtensionPlugin @ 10 NONAME ; #<VT>#
+	_ZN30MUsbmanExtensionPluginObserver25RegisterChargingObserverLER18MUsbChargingNotify @ 11 NONAME
+
--- a/usbmgmt/usbmgr/usbman/extensionplugin/EABI/usbmanextensionpluginu.def	Mon Sep 06 11:27:08 2010 +0800
+++ b/usbmgmt/usbmgr/usbman/extensionplugin/EABI/usbmanextensionpluginu.def	Thu Sep 16 12:03:29 2010 +0800
@@ -8,5 +8,4 @@
 	_ZN30MUsbmanExtensionPluginObserver13DevUsbcClientEv @ 7 NONAME
 	_ZN30MUsbmanExtensionPluginObserver22RegisterStateObserverLER16MUsbDeviceNotify @ 8 NONAME
 	_ZTI22CUsbmanExtensionPlugin @ 9 NONAME ; #<TI>#
-	_ZTV22CUsbmanExtensionPlugin @ 10 NONAME ; #<VT>#
-
+	_ZTV22CUsbmanExtensionPlugin @ 10 NONAME ; #<VT#
--- a/usbmgmt/usbmgr/usbman/extensionplugin/group/UsbManExtensionPlugin.mmp	Mon Sep 06 11:27:08 2010 +0800
+++ b/usbmgmt/usbmgr/usbman/extensionplugin/group/UsbManExtensionPlugin.mmp	Thu Sep 16 12:03:29 2010 +0800
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2005-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"
@@ -34,6 +34,12 @@
 SOURCE			CUsbManExtensionPlugin.cpp
 SOURCE			MUsbManExtensionPluginObserver.cpp
 
+#ifdef SYMBIAN_USB_BATTERYCHARGING_V1_1
+DEFFILE usbmanextensionpluginshai.def
+#else
+DEFFILE usbmanextensionplugin.def
+#endif
+
 OS_LAYER_SYSTEMINCLUDE_SYMBIAN
 
 LIBRARY 		euser.lib
--- a/usbmgmt/usbmgr/usbman/extensionplugin/inc/MUsbManExtensionPluginObserverDummy.h	Mon Sep 06 11:27:08 2010 +0800
+++ b/usbmgmt/usbmgr/usbman/extensionplugin/inc/MUsbManExtensionPluginObserverDummy.h	Thu Sep 16 12:03:29 2010 +0800
@@ -29,6 +29,9 @@
 #include "dummyusblddapi.h"
 
 class MUsbDeviceNotify;
+#ifdef SYMBIAN_USB_BATTERYCHARGING_V1_1	
+class MUsbChargingNotify;
+#endif
 
 class MUsbmanExtensionPluginObserver
 	{
@@ -45,6 +48,9 @@
 	@param aObserver The observer to register for state changes
 	*/
 	IMPORT_C void RegisterStateObserverL(MUsbDeviceNotify& aObserver);
+#ifdef SYMBIAN_USB_BATTERYCHARGING_V1_1		
+	IMPORT_C void RegisterChargingObserverL(MUsbChargingNotify& aObserver);
+#endif	
 
 private:
 	/**
@@ -56,6 +62,9 @@
 	@see RegisterStateObserverL.
 	*/
 	virtual void MuepoDoRegisterStateObserverL(MUsbDeviceNotify& aObserver) = 0;
+#ifdef SYMBIAN_USB_BATTERYCHARGING_V1_1	
+	virtual void MuepoDoRegisterChargingObserverL(MUsbChargingNotify& aObserver) = 0;	
+#endif	
 	};
 
 #endif // USBMANEXTENSIONPLUGINOBSERVERDUMMY_H
--- a/usbmgmt/usbmgr/usbman/extensionplugin/public/CUsbManExtensionPlugin.h	Mon Sep 06 11:27:08 2010 +0800
+++ b/usbmgmt/usbmgr/usbman/extensionplugin/public/CUsbManExtensionPlugin.h	Thu Sep 16 12:03:29 2010 +0800
@@ -26,7 +26,6 @@
 #define USBMANEXTENSIONPLUGIN_H
 
 #include <e32base.h>
-#include <d32usbc.h>
 
 class MUsbmanExtensionPluginObserver;
 class MUsbDeviceNotify;
--- a/usbmgmt/usbmgr/usbman/extensionplugin/public/MUsbManExtensionPluginObserver.h	Mon Sep 06 11:27:08 2010 +0800
+++ b/usbmgmt/usbmgr/usbman/extensionplugin/public/MUsbManExtensionPluginObserver.h	Thu Sep 16 12:03:29 2010 +0800
@@ -26,9 +26,12 @@
 #define USBMANEXTENSIONPLUGINOBSERVER_H
 
 #include <e32base.h>
-#include <d32usbc.h>
 
 class MUsbDeviceNotify;
+#ifdef SYMBIAN_USB_BATTERYCHARGING_V1_1	
+class MUsbChargingNotify;
+#endif
+class RDevUsbcClient;
 
 class MUsbmanExtensionPluginObserver
 	{
@@ -45,6 +48,9 @@
 	@param aObserver The observer to register for state changes
 	*/
 	IMPORT_C void RegisterStateObserverL(MUsbDeviceNotify& aObserver);
+#ifdef SYMBIAN_USB_BATTERYCHARGING_V1_1		
+	IMPORT_C void RegisterChargingObserverL(MUsbChargingNotify& aObserver);
+#endif
 
 private:
 	/**
@@ -56,6 +62,13 @@
 	@see RegisterStateObserverL.
 	*/
 	virtual void MuepoDoRegisterStateObserverL(MUsbDeviceNotify& aObserver) = 0;
+
+	/**
+	@see RegisterChargingObserverL.
+	*/
+#ifdef SYMBIAN_USB_BATTERYCHARGING_V1_1	
+	virtual void MuepoDoRegisterChargingObserverL(MUsbChargingNotify& aObserver) = 0;	
+#endif
 	};
 
 #endif // USBMANEXTENSIONPLUGINOBSERVER_H
--- a/usbmgmt/usbmgr/usbman/extensionplugin/src/MUsbManExtensionPluginObserver.cpp	Mon Sep 06 11:27:08 2010 +0800
+++ b/usbmgmt/usbmgr/usbman/extensionplugin/src/MUsbManExtensionPluginObserver.cpp	Thu Sep 16 12:03:29 2010 +0800
@@ -37,3 +37,12 @@
 	MuepoDoRegisterStateObserverL(aObserver);
 	}
 
+#ifdef SYMBIAN_USB_BATTERYCHARGING_V1_1	
+EXPORT_C void MUsbmanExtensionPluginObserver::RegisterChargingObserverL(MUsbChargingNotify& aObserver)
+	{
+	MuepoDoRegisterChargingObserverL(aObserver);
+	}
+#endif
+
+
+
--- a/usbmgmt/usbmgr/usbman/server/INC/CUsbDevice.h	Mon Sep 06 11:27:08 2010 +0800
+++ b/usbmgmt/usbmgr/usbman/server/INC/CUsbDevice.h	Thu Sep 16 12:03:29 2010 +0800
@@ -30,13 +30,26 @@
 #include <usbstates.h>
 #include <musbclasscontrollernotify.h>
 #include <ecom/ecom.h>
+
 #ifndef __DUMMY_LDD__
-#include <d32usbc.h>
+#ifdef SYMBIAN_USB_BATTERYCHARGING_V1_1
+#include <usb/d32usbc.h>	
+#include <musbchargingnotify.h>
+class CUsbChargingPortTypeWatcher;
+#else
+#include <d32usbc.h>	
+#endif
 #else
 #include "dummyusblddapi.h"
+#ifdef SYMBIAN_USB_BATTERYCHARGING_V1_1
+#include <musbchargingnotify.h>
+class CUsbChargingPortTypeWatcher;
 #endif
+
+#endif
+
 #include <e32std.h>
-#include <usb/usblogger.h>
+
 #ifndef __DUMMY_LDD__
 #include <musbmanextensionpluginobserver.h>
 #else
@@ -44,7 +57,6 @@
 #endif
 
 
-
 class CUsbDeviceStateWatcher;
 class CUsbClassControllerBase;
 class CUsbServer;
@@ -114,6 +126,13 @@
 	void RegisterObserverL(MUsbDeviceNotify& aObserver);
 	void DeRegisterObserver(MUsbDeviceNotify& aObserver);
 
+#ifdef SYMBIAN_USB_BATTERYCHARGING_V1_1	
+	void RegisterChargingInfoObserverL(MUsbChargingNotify& aObserver);
+	void DeRegisterChargingInfoObserver(MUsbChargingNotify& aObserver);	
+	void SetChargingPortType(TUsbcChargingPortType aChargerType); 
+	void PeerDeviceMaxPower(TUint aCurrent);
+#endif
+
 	void StartL();
 	void Stop();
 
@@ -133,7 +152,7 @@
 	TInt CurrentPersonalityId() const;
 	const RPointerArray<CPersonality>& Personalities() const;
 	const CPersonality* GetPersonality(TInt aPersonalityId) const;
-	void ValidatePersonalitiesL();
+	void ValidatePersonalities();
 	void ReadPersonalitiesL();
 	void SetDefaultPersonalityL();
 	void LoadFallbackClassControllersL();
@@ -151,7 +170,9 @@
 public: // from MUsbmanExtensionPluginObserver
 	RDevUsbcClient& MuepoDoDevUsbcClient();
 	void MuepoDoRegisterStateObserverL(MUsbDeviceNotify& aObserver);
-
+#ifdef SYMBIAN_USB_BATTERYCHARGING_V1_1		
+	void MuepoDoRegisterChargingObserverL(MUsbChargingNotify& aObserver);
+#endif
 protected:
 	CUsbDevice(CUsbServer& aUsbServer);
 	void ConstructL();
@@ -180,6 +201,10 @@
 	TInt iLastError;
 	RDevUsbcClient iLdd;
 	CUsbDeviceStateWatcher* iDeviceStateWatcher;
+#ifdef SYMBIAN_USB_BATTERYCHARGING_V1_1	
+	CUsbChargingPortTypeWatcher* iChargerTypeWatcher;
+	RPointerArray<MUsbChargingNotify> iChargingObservers;
+#endif
 	CUsbServer& iUsbServer;
 	CUsbClassControllerIterator* iUsbClassControllerIterator;
 	const CPersonality* iCurrentPersonality;
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/usbmgmt/usbmgr/usbman/server/INC/cusbchargingporttypewatcher.h	Thu Sep 16 12:03:29 2010 +0800
@@ -0,0 +1,64 @@
+/*
+* 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
+*/
+
+#ifndef CUSBCHARGINGPORTTYPEWATCHER_H
+#define CUSBCHARGINGPORTTYPEWATCHER_H
+
+#include <e32def.h>
+
+class CUsbDevice;
+class RDevUsbcClient;
+
+/**
+ * The CUsbChargingPortTypeWatcher class
+ *
+ * Talks directly to the USB Logical Device Driver (LDD) and 
+ * watches charging port type
+ */
+NONSHARABLE_CLASS(CUsbChargingPortTypeWatcher) : public CActive
+	{
+public:
+	static CUsbChargingPortTypeWatcher* NewL(CUsbDevice& aOwner, RDevUsbcClient& aLdd);
+	virtual ~CUsbChargingPortTypeWatcher();
+
+	inline CUsbDevice& Owner() const;
+
+	// From CActive
+	virtual void RunL();
+	virtual void DoCancel();
+
+	virtual void Start();
+
+protected:
+	CUsbChargingPortTypeWatcher(CUsbDevice& aOwner, RDevUsbcClient& aLdd);
+
+private:
+	CUsbDevice& iOwner;
+	RDevUsbcClient& iLdd;
+	TUint iChargingPortType;
+	};
+
+#include "cusbchargingporttypewatcher.inl"
+
+#endif //CUSBCHARGINGPORTTYPEWATCHER_H
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/usbmgmt/usbmgr/usbman/server/INC/cusbchargingporttypewatcher.inl	Thu Sep 16 12:03:29 2010 +0800
@@ -0,0 +1,42 @@
+/*
+* 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
+*/
+
+#ifndef CUSBCHARGINGPORTTYPEWATCHER_INL
+#define CUSBCHARGINGPORTTYPEWATCHER_INL
+
+
+/**
+ * The CUsbChargingPortTypeWatcher::Owner method
+ *
+ * Fetch the device that owns this charger type watcher
+ *
+ * @internalComponent
+ *
+ * @return	The device that owns this charger type watcher
+ */
+inline CUsbDevice& CUsbChargingPortTypeWatcher::Owner() const
+	{
+	return iOwner;
+	}
+
+#endif //CUSBCHARGINGPORTTYPEWATCHER_INL
\ No newline at end of file
--- a/usbmgmt/usbmgr/usbman/server/INC/cusbhost.h	Mon Sep 06 11:27:08 2010 +0800
+++ b/usbmgmt/usbmgr/usbman/server/INC/cusbhost.h	Thu Sep 16 12:03:29 2010 +0800
@@ -29,14 +29,16 @@
 #include "musbinternalobservers.h"
 #include "cusbhostwatcher.h"
 
+class CUsbServer;
+
 NONSHARABLE_CLASS(CUsbHost) : public CBase, public MUsbHostObserver
 	{
 public:
-	static CUsbHost* NewL();
+	static CUsbHost* NewL(CUsbServer& aServer);
 	virtual ~CUsbHost();
 
 private:
-	CUsbHost();
+	CUsbHost(CUsbServer& aServer);
 	void ConstructL();
 
 private:
@@ -61,6 +63,7 @@
 private:
 
 	void UpdateNumOfObservers();
+	void ProcessHostEvent(TUint aWatcherId);
 
 private:
 	TBool iHasBeenStarted;
@@ -71,6 +74,7 @@
 	RUsbHostStack iUsbHostStack;
 	RPointerArray<MUsbOtgHostNotifyObserver> iObservers;
 	TUint iNumOfObservers;
+	CUsbServer& iUsbServer;
 	};
 
 #endif //CUSBHOST_H
--- a/usbmgmt/usbmgr/usbman/server/SRC/CUsbDevice.cpp	Mon Sep 06 11:27:08 2010 +0800
+++ b/usbmgmt/usbmgr/usbman/server/SRC/CUsbDevice.cpp	Thu Sep 16 12:03:29 2010 +0800
@@ -24,7 +24,6 @@
 #include <cusbclasscontrollerbase.h>
 #include <cusbclasscontrollerplugin.h>
 #include <bafl/sysutil.h>
-#include <usb/usblogger.h>
 #include <e32svr.h>
 #include <e32base.h>
 #include <e32std.h>
@@ -47,6 +46,7 @@
 #include "UsbUtils.h"
 #include "CUsbDevice.h"
 #include "CUsbDeviceStateWatcher.h"
+#include "cusbchargingporttypewatcher.h"
 #include "CPersonality.h"
 #include "usbmancenrepmanager.h"
 #include "usbmanprivatecrkeys.h"
@@ -128,6 +128,10 @@
 	// we don't want to call ResetAndDestroy, because we don't own
 	// the observers themselves.
 	iObservers.Reset();
+#ifdef SYMBIAN_USB_BATTERYCHARGING_V1_1	
+	iChargingObservers.Reset();
+	delete iChargerTypeWatcher;
+#endif
 
 #ifndef __OVER_DUMMYUSBDI__
 #ifndef __WINS__
@@ -247,6 +251,11 @@
 	iDeviceStateWatcher = CUsbDeviceStateWatcher::NewL(*this, iLdd);
 	iDeviceStateWatcher->Start();
 
+#ifdef SYMBIAN_USB_BATTERYCHARGING_V1_1	
+	iChargerTypeWatcher = CUsbChargingPortTypeWatcher::NewL(*this, iLdd);
+	iChargerTypeWatcher->Start();
+#endif	
+
 	// Get hold of the default serial number in the driver
 	// This is so it can be put back in place when a device that sets a
 	// different serial number (through the P&S key) is stopped
@@ -1153,13 +1162,13 @@
  	OstTraceFunctionExit0( CUSBDEVICE_SETCURRENTPERSONALITYL_EXIT );
  	}
 	
-void CUsbDevice::ValidatePersonalitiesL()
+void CUsbDevice::ValidatePersonalities()
 /**
  * Verifies all class controllers associated with each personality are loaded.
  * Leave if validation fails.
  */
 	{
-	OstTraceFunctionEntry0( CUSBDEVICE_VALIDATEPERSONALITIESL_ENTRY );
+	OstTraceFunctionEntry0( CUSBDEVICE_VALIDATEPERSONALITIES_ENTRY );
 
 	TInt personalityCount = iSupportedPersonalities.Count();
 	for (TInt i = 0; i < personalityCount; i++)
@@ -1170,10 +1179,10 @@
 			{
 			TInt ccCount = iSupportedClassUids.Count();
 			TInt k;
-		    OstTrace1( TRACE_NORMAL, CUSBDEVICE_VALIDATEPERSONALITIESL_DUP1, "CUsbDevice::ValidatePersonalitiesL;iSupportedClassUids Count = %d", ccCount );
+		    OstTrace1( TRACE_NORMAL, CUSBDEVICE_VALIDATEPERSONALITIES_DUP1, "CUsbDevice::ValidatePersonalities;iSupportedClassUids Count = %d", ccCount );
 			for (k = 0; k < ccCount; k++)
 				{
-                OstTraceExt4( TRACE_NORMAL, CUSBDEVICE_VALIDATEPERSONALITIESL_DUP2, "CUsbDevice::ValidatePersonalitiesL;iSupportedClassUids %d %x classes %d %x", k, iSupportedClassUids[k].iUid, j, classes[j].iClassUid.iUid );
+                OstTraceExt4( TRACE_NORMAL, CUSBDEVICE_VALIDATEPERSONALITIES_DUP2, "CUsbDevice::ValidatePersonalities;iSupportedClassUids %d %x classes %d %x", k, iSupportedClassUids[k].iUid, j, classes[j].iClassUid.iUid );
 				if (iSupportedClassUids[k] == classes[j].iClassUid)
 					{
 					break;
@@ -1181,12 +1190,15 @@
 				}
 			if (k == ccCount)
 				{
-				OstTrace0( TRACE_NORMAL, CUSBDEVICE_VALIDATEPERSONALITIESL, "CUsbDevice::ValidatePersonalitiesL;personality validation failed" );
-				User::Leave(KErrAbort);
+				OstTrace1( TRACE_FATAL, CUSBDEVICE_VALIDATEPERSONALITIES, "CUsbDevice::ValidatePersonalities; Validation failed, class %x not supported", classes[j].iClassUid.iUid );
+				// Previously leaves here. But this causes that USB doesn't work.
+				// Now this function will only be called in debug version and only shows some information.
+				// The behaviour is a little different with before but should be ok.
+				// After the device image is verified, this error will never happen at run time.
 				}					
 			}	
 		}
-	OstTraceFunctionExit0( CUSBDEVICE_VALIDATEPERSONALITIESL_EXIT );
+	OstTraceFunctionExit0( CUSBDEVICE_VALIDATEPERSONALITIES_EXIT );
 	}
 /**
 Converts text string with UIDs to array of Uint
@@ -1387,3 +1399,82 @@
 	OstTrace1( TRACE_NORMAL, CUSBDEVICE_MUEPODOREGISTERSTATEOBSERVERL, "CUsbDevice::MuepoDoRegisterStateObserverL;aObserver = 0x%08x", &aObserver );
 	RegisterObserverL(aObserver);
 	}
+
+
+#ifdef SYMBIAN_USB_BATTERYCHARGING_V1_1
+void CUsbDevice::MuepoDoRegisterChargingObserverL(MUsbChargingNotify& aObserver)
+/**
+ * Inherited from MUsbmanExtensionPluginObserver - Function used by plugins to
+ * register themselves for notifications of charging changes.
+ *
+ * @param aObserver New Observer of the device
+ */
+	{
+	OstTrace1( TRACE_NORMAL, CUSBDEVICE_MUEPODOREGISTERCHARGINGOBSERVERL, "CUsbDevice::MuepoDoRegisterChargingObserverL;aObserver = 0x%08x", &aObserver );
+	RegisterChargingInfoObserverL(aObserver);
+	}
+
+
+void CUsbDevice::RegisterChargingInfoObserverL(MUsbChargingNotify& aObserver)
+/**
+ * Register an observer of charging.
+ * Presently, the device supports watching state.
+ *
+ * @param	aObserver	New Observer of the charging
+ */
+	{
+	OstTraceFunctionEntry0( CUSBDEVICE_REGISTERCHARGINGINFOOBSERVERL_ENTRY );
+	TInt err = iChargingObservers.Append(&aObserver);
+	if(err < 0)
+	    {
+        OstTrace1( TRACE_NORMAL, CUSBDEVICE_REGISTERCHARGINGINFOOBSERVERL, "CUsbDevice::RegisterObserverL;iObservers.Append(&aObserver) with err=%d", err );
+        User::Leave(err);
+	    }
+	OstTraceFunctionExit0( CUSBDEVICE_REGISTERCHARGINGINFOOBSERVERL_EXIT );
+	}
+
+
+void CUsbDevice::DeRegisterChargingInfoObserver(MUsbChargingNotify& aObserver)
+/**
+ * De-registers an existing charging observer.
+ *
+ * @param	aObserver	The existing device observer to be de-registered
+ */
+	{
+	OstTraceFunctionEntry0( CUSBDEVICE_DEREGISTERCHARGINGINFOOBSERVERL_ENTRY );
+
+	TInt index = iChargingObservers.Find(&aObserver);
+
+	if (index >= 0)
+		iObservers.Remove(index);
+	OstTraceFunctionExit0( CUSBDEVICE_DEREGISTERCHARGINGINFOOBSERVERL_EXIT );
+	}
+
+
+void CUsbDevice::SetChargingPortType(TUsbcChargingPortType aChargingPortType)
+	{
+	OstTraceFunctionEntry0( CUSBDEVICE_SETCHARGINGPORTTYPE_ENTRY );
+	TUint length = iChargingObservers.Count();
+
+	for (TUint i = 0; i < length; i++)
+		{
+		iChargingObservers[i]->UsbChargingPortType(aChargingPortType);
+		}
+	OstTraceFunctionExit0( CUSBDEVICE_SETCHARGINGPORTTYPE_EXIT );
+	}
+
+void CUsbDevice::PeerDeviceMaxPower(TUint aCurrent)
+	{
+	OstTraceFunctionEntry0( CUSBDEVICE_PEERDEVICEMAXPOWER_ENTRY );
+	OstTrace1( TRACE_NORMAL, CUSBDEVICE_PEERDEVICEMAXPOWER_DUP, "CUsbDevice::PeerDeviceMaxPower with aCurrent=%d", aCurrent);
+	TUint length = iChargingObservers.Count();
+
+	for (TUint i = 0; i < length; i++)
+		{
+		iChargingObservers[i]->PeerDeviceMaxPower(aCurrent);
+		}		
+	OstTraceFunctionExit0( CUSBDEVICE_PEERDEVICEMAXPOWER_EXIT );
+	}
+
+#endif
+
--- a/usbmgmt/usbmgr/usbman/server/SRC/CUsbServer.cpp	Mon Sep 06 11:27:08 2010 +0800
+++ b/usbmgmt/usbmgr/usbman/server/SRC/CUsbServer.cpp	Thu Sep 16 12:03:29 2010 +0800
@@ -172,7 +172,9 @@
 	if (iUsbDevice->isPersonalityCfged())
 		{
 #ifndef __OVER_DUMMYUSBDI__
-		iUsbDevice->ValidatePersonalitiesL();
+#ifdef _DEBUG
+		iUsbDevice->ValidatePersonalities();
+#endif
 #endif
 		iUsbDevice->SetDefaultPersonalityL();		
 		}
@@ -187,7 +189,7 @@
 #endif // USE_DUMMY_CLASS_CONTROLLER		
 
 #ifdef SYMBIAN_ENABLE_USB_OTG_HOST_PRIV
-	iUsbHost = CUsbHost::NewL();
+	iUsbHost = CUsbHost::NewL(*this);
 	//previously this was moved to CUsbSession:StartDeviceL() and similar
 	//But it will cause the loading of personality longer.
 	//So it is moved back here.
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/usbmgmt/usbmgr/usbman/server/SRC/cusbchargingporttypewatcher.cpp	Thu Sep 16 12:03:29 2010 +0800
@@ -0,0 +1,118 @@
+/*
+* 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
+*/
+
+#include "CUsbScheduler.h"
+#include "cusbchargingporttypewatcher.h"
+#include "CUsbDevice.h"
+#include "OstTraceDefinitions.h"
+#ifdef OST_TRACE_COMPILER_IN_USE
+#include "cusbchargingporttypewatcherTraces.h"
+#endif
+
+
+/**
+ * The CUsbChargingPortTypeWatcher::NewL method
+ *
+ * Constructs a new CUsbChargingPortTypeWatcher object
+ *
+ * @internalComponent
+ * @param	aOwner	The device that owns the charger type watcher
+ * @param	aLdd	A reference to the USB Logical Device Driver
+ *
+ * @return	A new CUsbChargingPortTypeWatcher object
+ */
+CUsbChargingPortTypeWatcher* CUsbChargingPortTypeWatcher::NewL(CUsbDevice& aOwner, RDevUsbcClient& aLdd)
+	{
+	CUsbChargingPortTypeWatcher* r = new (ELeave) CUsbChargingPortTypeWatcher(aOwner, aLdd);
+	return r;
+	}
+
+
+/**
+ * The CUsbChargingPortTypeWatcher::~CUsbChargingPortTypeWatcher method
+ *
+ * Destructor
+ *
+ * @internalComponent
+ */
+CUsbChargingPortTypeWatcher::~CUsbChargingPortTypeWatcher()
+	{
+	Cancel();
+	}
+
+
+/**
+ * The CUsbChargingPortTypeWatcher::CUsbChargingPortTypeWatcher method
+ *
+ * Constructor
+ *
+ * @param	aOwner	The device that owns the charger type watcher
+ * @param	aLdd	A reference to the USB Logical Device Driver
+ */
+CUsbChargingPortTypeWatcher::CUsbChargingPortTypeWatcher(CUsbDevice& aOwner, RDevUsbcClient& aLdd)
+	: CActive(CActive::EPriorityStandard), iOwner(aOwner), iLdd(aLdd)
+	{
+	CActiveScheduler::Add(this);
+	}
+
+/**
+ * Called when the charger type changes.
+ */
+void CUsbChargingPortTypeWatcher::RunL()
+	{
+	OstTraceFunctionEntry0( CUSBCHARGINGPORTTYPEWATCHER_RUNL_ENTRY );
+	if (iStatus.Int() != KErrNone && iStatus.Int() != KErrDisconnected)
+		{
+		Start();
+        OstTrace1( TRACE_ERROR, CUSBCHARGINGPORTTYPEWATCHER_RUNL, "CUsbChargingPortTypeWatcher::RunL;iStatus.Int()=%d", iStatus.Int() );
+		OstTrace1( TRACE_NORMAL, DUP2_CUSBCHARGINGPORTTYPEWATCHER_RUNL, "CUsbChargingPortTypeWatcher::RunL;iChargingPortType=%d", iChargingPortType );
+		OstTraceFunctionExit0( CUSBCHARGINGPORTTYPEWATCHER_RUNL_EXIT );
+		return;
+		}
+    OstTrace1( TRACE_NORMAL, DUP1_CUSBCHARGINGPORTTYPEWATCHER_RUNL, "CUsbChargingPortTypeWatcher::RunL;iChargingPortType=%d", iChargingPortType );
+	TUsbcChargingPortType portType = static_cast<TUsbcChargingPortType> (iChargingPortType);	
+	Start();
+	iOwner.SetChargingPortType(portType);
+	OstTraceFunctionExit0( DUP1_CUSBCHARGINGPORTTYPEWATCHER_RUNL_EXIT );
+	}
+
+
+/**
+ * Automatically called when the charger type watcher is cancelled.
+ */
+void CUsbChargingPortTypeWatcher::DoCancel()
+	{
+	iLdd.ChargingPortTypeNotifyCancel();
+	}
+
+
+/**
+ * Instructs the charger type watcher to start watching.
+ */
+void CUsbChargingPortTypeWatcher::Start()
+	{
+	OstTraceFunctionEntry0( CUSBCHARGINGPORTTYPEWATCHER_START_ENTRY );
+	iStatus = KRequestPending;
+	iLdd.ChargingPortTypeNotify(iStatus, iChargingPortType);
+	SetActive();
+	OstTraceFunctionExit0( CUSBCHARGINGPORTTYPEWATCHER_START_EXIT );
+	}
--- a/usbmgmt/usbmgr/usbman/server/SRC/cusbhost.cpp	Mon Sep 06 11:27:08 2010 +0800
+++ b/usbmgmt/usbmgr/usbman/server/SRC/cusbhost.cpp	Thu Sep 16 12:03:29 2010 +0800
@@ -15,8 +15,16 @@
 *
 */
 
+#ifdef SYMBIAN_USB_BATTERYCHARGING_V1_1
+#include <usb/d32usbdescriptors.h>
+#else
+#include <d32usbdescriptors.h>
+#endif
 #include <usb/usblogger.h>
 #include "cusbhost.h"
+#include "CUsbServer.h"
+#include "CUsbDevice.h"
+
 #include "OstTraceDefinitions.h"
 #ifdef OST_TRACE_COMPILER_IN_USE
 #include "cusbhostTraces.h"
@@ -25,11 +33,11 @@
 
 CUsbHost* CUsbHost::iInstance = 0;
 
-CUsbHost* CUsbHost::NewL()
+CUsbHost* CUsbHost::NewL(CUsbServer& aServer)
 	{
 	if(iInstance == 0)
 		{
-		iInstance = new (ELeave) CUsbHost();		
+		iInstance = new (ELeave) CUsbHost(aServer);		
 		CleanupStack::PushL(iInstance);		
 		iInstance->ConstructL();		
 		CleanupStack::Pop(iInstance);
@@ -54,7 +62,8 @@
 	OstTraceFunctionExit0( CUSBHOST_CUSBHOST_DES_EXIT );
 	}
 
-CUsbHost::CUsbHost()
+CUsbHost::CUsbHost(CUsbServer& aServer)
+	: iUsbServer(aServer)
 	{
     OstTraceFunctionEntry0( CUSBHOST_CUSBHOST_CONS_ENTRY );
 	OstTraceFunctionExit0( CUSBHOST_CUSBHOST_CONS_EXIT );
@@ -207,6 +216,9 @@
 void CUsbHost::NotifyHostEvent(TUint aWatcherId)
 	{
     OstTraceFunctionEntry0( CUSBHOST_NOTIFYHOSTEVENT_ENTRY );
+#ifdef SYMBIAN_USB_BATTERYCHARGING_V1_1	
+	ProcessHostEvent(aWatcherId);
+#endif
 
 	if(aWatcherId == EHostEventMonitor)
 		{
@@ -265,3 +277,41 @@
 		}
 	OstTraceFunctionExit0( CUSBHOST_DISABLEDRIVERLOADING_EXIT );
 	}
+
+#ifdef SYMBIAN_USB_BATTERYCHARGING_V1_1
+
+void CUsbHost::ProcessHostEvent(TUint aWatcherId)
+	{
+	OstTraceFunctionEntry0( CUSBHOST_PROCESSHOSTEVENT_ENTRY );
+	TConfigurationDescriptor configDesc;
+	const TUint KSuspend_Current = 2; //suspend current is 2mA
+
+	if(aWatcherId == EHostEventMonitor)
+		{
+		// if driver is loaded successful the device enters configed state and we get the max power from configration.
+		if (iHostEventInfo.iEventType == EDriverLoad 
+			&& iHostEventInfo.iDriverLoadStatus != EDriverLoadFailure)
+			{
+			TInt ret = iUsbHostStack.GetConfigurationDescriptor(iHostEventInfo.iDeviceId, configDesc);
+			if (ret == KErrNone)
+				{
+        		TUint currentValue = configDesc.iMaxPower <<1;
+				iUsbServer.Device().PeerDeviceMaxPower(currentValue);
+				}
+			}
+		// if driver is loaded with failure the device enters suspend state.		
+		else if (iHostEventInfo.iEventType == EDriverLoad && 
+			iHostEventInfo.iDriverLoadStatus == EDriverLoadFailure)
+			{
+			iUsbServer.Device().PeerDeviceMaxPower(KSuspend_Current);
+			}
+		// if a device is unattached .		
+		else if (iHostEventInfo.iEventType == EDeviceDetachment)
+			{
+			iUsbServer.Device().PeerDeviceMaxPower(0);
+			}
+		}
+	OstTraceFunctionExit0( CUSBHOST_PROCESSHOSTEVENT_EXIT );
+	}
+#endif
+
--- a/usbmgmt/usbmgr/usbman/server/group/bld.inf	Mon Sep 06 11:27:08 2010 +0800
+++ b/usbmgmt/usbmgr/usbman/server/group/bld.inf	Thu Sep 16 12:03:29 2010 +0800
@@ -27,6 +27,8 @@
 ../public/usbotgdefs.h					SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(usbotgdefs.h)
 ../public/usbhostdefs.h					SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(usbhostdefs.h)
 ./backup_registration.xml  				/epoc32/data/z/private/101fe1db/backup_registration.xml
+
+../public/musbchargingnotify.h			SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(musbchargingnotify.h)
 ../conf/usbmanager_101fe1db.crml 		OS_LAYER_EXPORTS_CRML(usbmanager_101fe1db.crml)
 
 PRJ_TESTEXPORTS
--- a/usbmgmt/usbmgr/usbman/server/group/t_Usbman_dummyCC.mmp	Mon Sep 06 11:27:08 2010 +0800
+++ b/usbmgmt/usbmgr/usbman/server/group/t_Usbman_dummyCC.mmp	Thu Sep 16 12:03:29 2010 +0800
@@ -44,7 +44,9 @@
 source			CPersonality.cpp
 source          usbmancenrepmanager.cpp
 source			CUsbDummyClassController.cpp
-
+#ifdef SYMBIAN_USB_BATTERYCHARGING_V1_1
+source			cusbchargingporttypewatcher.cpp
+#endif
 sourcepath		../../../inifile/src
 source			inifile.cpp
 
--- a/usbmgmt/usbmgr/usbman/server/group/usbsvr_dummyldd.mmp	Mon Sep 06 11:27:08 2010 +0800
+++ b/usbmgmt/usbmgr/usbman/server/group/usbsvr_dummyldd.mmp	Thu Sep 16 12:03:29 2010 +0800
@@ -41,6 +41,10 @@
 source			CPersonality.cpp
 source          	usbmancenrepmanager.cpp
 
+#ifdef SYMBIAN_USB_BATTERYCHARGING_V1_1
+source			cusbchargingporttypewatcher.cpp
+#endif
+
 userinclude		../INC
 userinclude		../public
 userinclude		../../../host/fdf/production/client/public 
--- a/usbmgmt/usbmgr/usbman/server/group/usbsvrbase.mmp	Mon Sep 06 11:27:08 2010 +0800
+++ b/usbmgmt/usbmgr/usbman/server/group/usbsvrbase.mmp	Thu Sep 16 12:03:29 2010 +0800
@@ -39,6 +39,10 @@
 source			CPersonality.cpp
 source          usbmancenrepmanager.cpp
 
+#ifdef SYMBIAN_USB_BATTERYCHARGING_V1_1
+source			cusbchargingporttypewatcher.cpp
+#endif
+
 userinclude		../INC
 userinclude		../public
 userinclude		../../../host/fdf/production/client/public 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/usbmgmt/usbmgr/usbman/server/public/musbchargingnotify.h	Thu Sep 16 12:03:29 2010 +0800
@@ -0,0 +1,45 @@
+/*
+* Copyright (c) 1997-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:
+* Implements the main object of Usbman that manages all the USB Classes
+* and the USB Logical Device (via CUsbDeviceStateWatcher).
+*
+*/
+
+/**
+ @file
+ @publishedPartner
+ @released
+*/
+
+#ifndef __MUSBCHARGINGNOTIFY_H__
+#define __MUSBCHARGINGNOTIFY_H__
+
+const TInt KUsbChargingNotifyInterface = 0x102872D8;
+
+
+class MUsbChargingNotify
+	{
+public:
+
+	/**
+	Called by USBMAN when it receives charging notification.
+	@param aChargingType The concrete charging type of notification.
+	*/
+	
+	virtual void UsbChargingPortType(TUint aPortType) = 0;
+	virtual void PeerDeviceMaxPower(TUint aCurrent) = 0;
+	};
+
+#endif
\ No newline at end of file
--- a/usbmgmt/usbmgr/usbman/server/public/usbhostdefs.h	Mon Sep 06 11:27:08 2010 +0800
+++ b/usbmgmt/usbmgr/usbman/server/public/usbhostdefs.h	Thu Sep 16 12:03:29 2010 +0800
@@ -139,4 +139,37 @@
 	TInt iReserved3;
 	};
 
+
+NONSHARABLE_CLASS(TConfigurationDescriptor)
+	{
+public:
+	inline TConfigurationDescriptor()
+		:	iDeviceId(0),
+		    iNumInterfaces(0),
+		    iConfigration(0),
+		    iAttributes(0),
+		    iMaxPower(0),
+		    iReserved(0)
+		{}	
+
+	// The ID of the device the configration descriptor relates to.
+	TUint iDeviceId;
+    
+	// the number of interfaces
+	TUint8 iNumInterfaces;
+	
+	// the configration value
+	TUint8 iConfigration;
+
+	// Attributes field of configration
+	TUint8 iAttributes;
+
+	// MaxPower field of configration
+	TUint8 iMaxPower;
+
+	//reserved
+	TInt iReserved;
+	};
+
+
 #endif //__USBHOSTDEFS_H__
--- a/usbmgmt/usbmgr/usbman/server/traces/fixed_id.definitions	Mon Sep 06 11:27:08 2010 +0800
+++ b/usbmgmt/usbmgr/usbman/server/traces/fixed_id.definitions	Thu Sep 16 12:03:29 2010 +0800
@@ -3,25 +3,60 @@
 [GROUP]TRACE_FATAL=0x81
 [GROUP]TRACE_FLOW=0x8a
 [GROUP]TRACE_NORMAL=0x86
-[TRACE]TRACE_DUMP[0x89]_CUSBDEVICE_PRINTDESCRIPTOR=0x2
-[TRACE]TRACE_DUMP[0x89]_CUSBDEVICE_PRINTDESCRIPTOR_DUP1=0x3
-[TRACE]TRACE_DUMP[0x89]_CUSBDEVICE_PRINTDESCRIPTOR_DUP10=0xc
-[TRACE]TRACE_DUMP[0x89]_CUSBDEVICE_PRINTDESCRIPTOR_DUP11=0xd
-[TRACE]TRACE_DUMP[0x89]_CUSBDEVICE_PRINTDESCRIPTOR_DUP12=0xe
-[TRACE]TRACE_DUMP[0x89]_CUSBDEVICE_PRINTDESCRIPTOR_DUP2=0x4
-[TRACE]TRACE_DUMP[0x89]_CUSBDEVICE_PRINTDESCRIPTOR_DUP3=0x5
-[TRACE]TRACE_DUMP[0x89]_CUSBDEVICE_PRINTDESCRIPTOR_DUP4=0x6
-[TRACE]TRACE_DUMP[0x89]_CUSBDEVICE_PRINTDESCRIPTOR_DUP5=0x7
-[TRACE]TRACE_DUMP[0x89]_CUSBDEVICE_PRINTDESCRIPTOR_DUP6=0x8
-[TRACE]TRACE_DUMP[0x89]_CUSBDEVICE_PRINTDESCRIPTOR_DUP7=0x9
-[TRACE]TRACE_DUMP[0x89]_CUSBDEVICE_PRINTDESCRIPTOR_DUP8=0xa
-[TRACE]TRACE_DUMP[0x89]_CUSBDEVICE_PRINTDESCRIPTOR_DUP9=0xb
-[TRACE]TRACE_FATAL[0x81]_CPERSONALITY_CLASSSUPPORTED=0x75
-[TRACE]TRACE_FATAL[0x81]_CPERSONALITY_SUPPORTEDCLASSES=0x74
-[TRACE]TRACE_FATAL[0x81]_CUSBDEVICE_CONVERTUIDSL=0x52
-[TRACE]TRACE_FATAL[0x81]_CUSBDEVICE_DOCANCEL=0x2
-[TRACE]TRACE_FATAL[0x81]_CUSBDEVICE_RUNERROR_DUP1=0x51
-[TRACE]TRACE_FATAL[0x81]_CUSBDEVICE_RUNL_DUP5=0x1
+[TRACE]TRACE_DUMP[0x89]_CUSBDEVICE_PRINTDESCRIPTOR=0x1
+[TRACE]TRACE_DUMP[0x89]_CUSBDEVICE_PRINTDESCRIPTOR_DUP1=0x2
+[TRACE]TRACE_DUMP[0x89]_CUSBDEVICE_PRINTDESCRIPTOR_DUP10=0xb
+[TRACE]TRACE_DUMP[0x89]_CUSBDEVICE_PRINTDESCRIPTOR_DUP11=0xc
+[TRACE]TRACE_DUMP[0x89]_CUSBDEVICE_PRINTDESCRIPTOR_DUP12=0xd
+[TRACE]TRACE_DUMP[0x89]_CUSBDEVICE_PRINTDESCRIPTOR_DUP2=0x3
+[TRACE]TRACE_DUMP[0x89]_CUSBDEVICE_PRINTDESCRIPTOR_DUP3=0x4
+[TRACE]TRACE_DUMP[0x89]_CUSBDEVICE_PRINTDESCRIPTOR_DUP4=0x5
+[TRACE]TRACE_DUMP[0x89]_CUSBDEVICE_PRINTDESCRIPTOR_DUP5=0x6
+[TRACE]TRACE_DUMP[0x89]_CUSBDEVICE_PRINTDESCRIPTOR_DUP6=0x7
+[TRACE]TRACE_DUMP[0x89]_CUSBDEVICE_PRINTDESCRIPTOR_DUP7=0x8
+[TRACE]TRACE_DUMP[0x89]_CUSBDEVICE_PRINTDESCRIPTOR_DUP8=0x9
+[TRACE]TRACE_DUMP[0x89]_CUSBDEVICE_PRINTDESCRIPTOR_DUP9=0xa
+[TRACE]TRACE_FATAL[0x81]_CPERSONALITY_CLASSSUPPORTED=0x2
+[TRACE]TRACE_FATAL[0x81]_CPERSONALITY_SUPPORTEDCLASSES=0x1
+[TRACE]TRACE_FATAL[0x81]_CUSBDEVICE_CONVERTUIDSL=0x6
+[TRACE]TRACE_FATAL[0x81]_CUSBDEVICE_DOCANCEL=0x4
+[TRACE]TRACE_FATAL[0x81]_CUSBDEVICE_RUNERROR_DUP1=0x5
+[TRACE]TRACE_FATAL[0x81]_CUSBDEVICE_RUNL_DUP5=0x3
+[TRACE]TRACE_FATAL[0x81]_CUSBMANCENREPMANAGER_ISFEATURESUPPORTEDL=0x11
+[TRACE]TRACE_FATAL[0x81]_CUSBMANCENREPMANAGER_READCONFIGURATIONSFORPERSONALITYL=0xd
+[TRACE]TRACE_FATAL[0x81]_CUSBMANCENREPMANAGER_READCONFIGURATIONSFORPERSONALITYL_DUP4=0xe
+[TRACE]TRACE_FATAL[0x81]_CUSBMANCENREPMANAGER_READCONFIGURATIONSFORPERSONALITYL_DUP5=0xf
+[TRACE]TRACE_FATAL[0x81]_CUSBMANCENREPMANAGER_READDEVICECONFIGURATIONL_DUP5=0xa
+[TRACE]TRACE_FATAL[0x81]_CUSBMANCENREPMANAGER_READPERSONALITIESL=0xb
+[TRACE]TRACE_FATAL[0x81]_CUSBMANCENREPMANAGER_READPERSONALITIESL_DUP5=0xc
+[TRACE]TRACE_FATAL[0x81]_CUSBSERVER_DECREMENTSESSIONCOUNT_DUP1=0x8
+[TRACE]TRACE_FATAL[0x81]_CUSBSERVER_INCREMENTSESSIONCOUNT_DUP1=0x7
+[TRACE]TRACE_FATAL[0x81]_CUSBSERVER_LAUNCHSHUTDOWNTIMERIFNOSESSIONS=0x9
+[TRACE]TRACE_FATAL[0x81]_DUP1_CUSBMANCENREPMANAGER_ISCLASSCONFIGURABLEL_DUP1=0x10
+[TRACE]TRACE_FLOW[0x8A]_CACTIVEUSBHOSTEVENTWATCHER_CACTIVEUSBHOSTEVENTWATCHER_CONS_ENTRY=0x828
+[TRACE]TRACE_FLOW[0x8A]_CACTIVEUSBHOSTEVENTWATCHER_CACTIVEUSBHOSTEVENTWATCHER_CONS_EXIT=0x829
+[TRACE]TRACE_FLOW[0x8A]_CACTIVEUSBHOSTEVENTWATCHER_CACTIVEUSBHOSTEVENTWATCHER_DES_ENTRY=0x82a
+[TRACE]TRACE_FLOW[0x8A]_CACTIVEUSBHOSTEVENTWATCHER_CACTIVEUSBHOSTEVENTWATCHER_DES_EXIT=0x82b
+[TRACE]TRACE_FLOW[0x8A]_CACTIVEUSBHOSTEVENTWATCHER_DOCANCEL_ENTRY=0x82e
+[TRACE]TRACE_FLOW[0x8A]_CACTIVEUSBHOSTEVENTWATCHER_DOCANCEL_EXIT=0x82f
+[TRACE]TRACE_FLOW[0x8A]_CACTIVEUSBHOSTEVENTWATCHER_POST_ENTRY=0x82c
+[TRACE]TRACE_FLOW[0x8A]_CACTIVEUSBHOSTEVENTWATCHER_POST_EXIT=0x82d
+[TRACE]TRACE_FLOW[0x8A]_CACTIVEUSBHOSTMESSAGEWATCHER_CACTIVEUSBHOSTMESSAGEWATCHER_CONS_ENTRY=0x832
+[TRACE]TRACE_FLOW[0x8A]_CACTIVEUSBHOSTMESSAGEWATCHER_CACTIVEUSBHOSTMESSAGEWATCHER_CONS_EXIT=0x833
+[TRACE]TRACE_FLOW[0x8A]_CACTIVEUSBHOSTMESSAGEWATCHER_CACTIVEUSBHOSTMESSAGEWATCHER_DES_ENTRY=0x830
+[TRACE]TRACE_FLOW[0x8A]_CACTIVEUSBHOSTMESSAGEWATCHER_CACTIVEUSBHOSTMESSAGEWATCHER_DES_EXIT=0x831
+[TRACE]TRACE_FLOW[0x8A]_CACTIVEUSBHOSTMESSAGEWATCHER_DOCANCEL_ENTRY=0x836
+[TRACE]TRACE_FLOW[0x8A]_CACTIVEUSBHOSTMESSAGEWATCHER_DOCANCEL_EXIT=0x837
+[TRACE]TRACE_FLOW[0x8A]_CACTIVEUSBHOSTMESSAGEWATCHER_POST_ENTRY=0x834
+[TRACE]TRACE_FLOW[0x8A]_CACTIVEUSBHOSTMESSAGEWATCHER_POST_EXIT=0x835
+[TRACE]TRACE_FLOW[0x8A]_CACTIVEUSBHOSTWATCHER_CACTIVEUSBHOSTWATCHER_CONS_ENTRY=0x822
+[TRACE]TRACE_FLOW[0x8A]_CACTIVEUSBHOSTWATCHER_CACTIVEUSBHOSTWATCHER_CONS_EXIT=0x823
+[TRACE]TRACE_FLOW[0x8A]_CACTIVEUSBHOSTWATCHER_CACTIVEUSBHOSTWATCHER_DES_ENTRY=0x824
+[TRACE]TRACE_FLOW[0x8A]_CACTIVEUSBHOSTWATCHER_CACTIVEUSBHOSTWATCHER_DES_EXIT=0x825
+[TRACE]TRACE_FLOW[0x8A]_CACTIVEUSBHOSTWATCHER_RUNL_ENTRY=0x826
+[TRACE]TRACE_FLOW[0x8A]_CACTIVEUSBHOSTWATCHER_RUNL_EXIT=0x827
+[TRACE]TRACE_FLOW[0x8A]_CPERSONALITYCONFIGURATIONS_CPERSONALITYCONFIGURATIONS_DES_ENTRY=0x7
+[TRACE]TRACE_FLOW[0x8A]_CPERSONALITYCONFIGURATIONS_CPERSONALITYCONFIGURATIONS_DES_EXIT=0x8
 [TRACE]TRACE_FATAL[0x81]_CUSBDUMMYCLASSCONTROLLER_CONSTRUCTL=0x76
 [TRACE]TRACE_FATAL[0x81]_CUSBDUMMYCLASSCONTROLLER_DOCANCEL=0x89
 [TRACE]TRACE_FATAL[0x81]_CUSBDUMMYCLASSCONTROLLER_DOCANCEL_DUP1=0x8a
@@ -47,99 +82,17 @@
 [TRACE]TRACE_FATAL[0x81]_CUSBDUMMYCLASSCONTROLLER_STOP_DUP1=0x81
 [TRACE]TRACE_FATAL[0x81]_CUSBDUMMYCLASSCONTROLLER_STOP_DUP2=0x82
 [TRACE]TRACE_FATAL[0x81]_CUSBDUMMYCLASSCONTROLLER_STOP_DUP3=0x83
-[TRACE]TRACE_FATAL[0x81]_CUSBMANCENREPMANAGER_ISFEATURESUPPORTEDL=0x6c
-[TRACE]TRACE_FATAL[0x81]_CUSBMANCENREPMANAGER_READCONFIGURATIONSFORPERSONALITYL=0x70
-[TRACE]TRACE_FATAL[0x81]_CUSBMANCENREPMANAGER_READCONFIGURATIONSFORPERSONALITYL_DUP4=0x71
-[TRACE]TRACE_FATAL[0x81]_CUSBMANCENREPMANAGER_READCONFIGURATIONSFORPERSONALITYL_DUP5=0x72
-[TRACE]TRACE_FATAL[0x81]_CUSBMANCENREPMANAGER_READDEVICECONFIGURATIONL_DUP5=0x6d
-[TRACE]TRACE_FATAL[0x81]_CUSBMANCENREPMANAGER_READPERSONALITIESL=0x6e
-[TRACE]TRACE_FATAL[0x81]_CUSBMANCENREPMANAGER_READPERSONALITIESL_DUP5=0x6f
-[TRACE]TRACE_FATAL[0x81]_CUSBSERVER_DECREMENTSESSIONCOUNT_DUP1=0x1d
-[TRACE]TRACE_FATAL[0x81]_CUSBSERVER_INCREMENTSESSIONCOUNT_DUP1=0x1c
-[TRACE]TRACE_FATAL[0x81]_CUSBSERVER_LAUNCHSHUTDOWNTIMERIFNOSESSIONS=0x1e
-[TRACE]TRACE_FATAL[0x81]_DUP1_CUSBMANCENREPMANAGER_ISCLASSCONFIGURABLEL_DUP1=0x73
 [TRACE]TRACE_FLOW[0x8A]_CINIFILE_CINIFILE_CONS_ENTRY=0x629
 [TRACE]TRACE_FLOW[0x8A]_CINIFILE_NEWL_TDESC_ENTRY=0x62a
 [TRACE]TRACE_FLOW[0x8A]_CINIFILE_NEWL_TDESC_EXIT=0x62b
 [TRACE]TRACE_FLOW[0x8A]_CINIFILE_NEWL_TDESC_TDESC_ENTRY=0x62c
 [TRACE]TRACE_FLOW[0x8A]_CINIFILE_NEWL_TDESC_TDESC_EXIT=0x62d
-[TRACE]TRACE_FLOW[0x8A]_CPERSONALITYCONFIGURATIONS_CPERSONALITYCONFIGURATIONS_DES_ENTRY=0x623
-[TRACE]TRACE_FLOW[0x8A]_CPERSONALITYCONFIGURATIONS_CPERSONALITYCONFIGURATIONS_DES_EXIT=0x624
 [TRACE]TRACE_FLOW[0x8A]_CPERSONALITY_CONSTRUCTL_ENTRY=0x3
 [TRACE]TRACE_FLOW[0x8A]_CPERSONALITY_CONSTRUCTL_EXIT=0x4
-[TRACE]TRACE_FLOW[0x8A]_CPERSONALITY_CPERSONALITY_DES_ENTRY=0x454
-[TRACE]TRACE_FLOW[0x8A]_CPERSONALITY_CPERSONALITY_DES_EXIT=0x455
+[TRACE]TRACE_FLOW[0x8A]_CPERSONALITY_CPERSONALITY_DES_ENTRY=0x5
+[TRACE]TRACE_FLOW[0x8A]_CPERSONALITY_CPERSONALITY_DES_EXIT=0x6
 [TRACE]TRACE_FLOW[0x8A]_CPERSONALITY_NEWL_ENTRY=0x1
 [TRACE]TRACE_FLOW[0x8A]_CPERSONALITY_NEWL_EXIT=0x2
-[TRACE]TRACE_FLOW[0x8A]_CUSBDEVICESTATEWATCHER_DOCANCEL_ENTRY=0x105
-[TRACE]TRACE_FLOW[0x8A]_CUSBDEVICESTATEWATCHER_DOCANCEL_EXIT=0x106
-[TRACE]TRACE_FLOW[0x8A]_CUSBDEVICESTATEWATCHER_NEWL_ENTRY=0x103
-[TRACE]TRACE_FLOW[0x8A]_CUSBDEVICESTATEWATCHER_NEWL_EXIT=0x104
-[TRACE]TRACE_FLOW[0x8A]_CUSBDEVICESTATEWATCHER_START_ENTRY=0x107
-[TRACE]TRACE_FLOW[0x8A]_CUSBDEVICESTATEWATCHER_START_EXIT=0x108
-[TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_ADDCLASSCONTROLLERL_ENTRY=0x12b
-[TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_ADDCLASSCONTROLLERL_EXIT=0x12c
-[TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_BUSENUMERATIONCOMPLETED_ENTRY=0x139
-[TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_BUSENUMERATIONCOMPLETED_EXIT=0x13a
-[TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_CONSTRUCTL_ENTRY=0x124
-[TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_CONSTRUCTL_EXIT=0x125
-[TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_CONVERTUIDSL_ENTRY=0x625
-[TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_CONVERTUIDSL_EXIT=0x626
-[TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_CREATECLASSCONTROLLERSL_ENTRY=0x21a
-[TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_CURRENTPERSONALITYID_ENTRY=0x207
-[TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_CUSBDEVICE_DES_ENTRY=0x366
-[TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_CUSBDEVICE_DES_EXIT=0x367
-[TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_DEREGISTEROBSERVER_ENTRY=0x12f
-[TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_DEREGISTEROBSERVER_EXIT=0x130
-[TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_DOCANCEL_ENTRY=0x143
-[TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_DOCANCEL_EXIT=0x144
-[TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_ENUMERATECLASSCONTROLLERSL_ENTRY=0x129
-[TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_ENUMERATECLASSCONTROLLERSL_EXIT=0x12a
-[TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_GETPERSONALITY_ENTRY=0x209
-[TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_GETPERSONALITY_EXIT=0x20a
-[TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_GETPERSONALITY_EXIT_DUP1=0x368
-[TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_INSTANTIATEEXTENSIONPLUGINSL=0x127
-[TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_INSTANTIATEEXTENSIONPLUGINSL_ENTRY=0x126
-[TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_INSTANTIATEEXTENSIONPLUGINSL_EXIT=0x128
-[TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_LOADFALLBACKCLASSCONTROLLERSL_ENTRY=0x212
-[TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_LOADFALLBACKCLASSCONTROLLERSL_EXIT=0x213
-[TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_NEWL_ENTRY=0x120
-[TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_NEWL_EXIT=0x121
-[TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_PERSONALITIES_ENTRY=0x208
-[TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_POWERUPANDCONNECT_ENTRY=0x13f
-[TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_POWERUPANDCONNECT_EXIT=0x140
-[TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_READPERSONALITIESL_ENTRY=0x627
-[TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_READPERSONALITIESL_EXIT=0x628
-[TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_REGISTEROBSERVERL_ENTRY=0x12d
-[TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_REGISTEROBSERVERL_EXIT=0x12e
-[TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_RUNL_ENTRY=0x141
-[TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_RUNL_EXIT=0x142
-[TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_SELECTCLASSCONTROLLERSL_ENTRY=0x218
-[TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_SELECTCLASSCONTROLLERSL_EXIT=0x219
-[TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_SETCURRENTPERSONALITYL_ENTRY=0x20c
-[TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_SETCURRENTPERSONALITYL_EXIT=0x20d
-[TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_SETDEFAULTPERSONALITYL_ENTRY=0x210
-[TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_SETDEFAULTPERSONALITYL_EXIT=0x211
-[TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_SETDEVICEDESCRIPTORL_ENTRY=0x1fc
-[TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_SETDEVICEDESCRIPTORL_EXIT=0x1fd
-[TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_SETDEVICESTATE_ENTRY=0x137
-[TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_SETDEVICESTATE_EXIT=0x138
-[TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_SETSERVICESTATE_ENTRY=0x135
-[TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_SETSERVICESTATE_EXIT=0x136
-[TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_SETUSBDEVICESETTINGSFROMPERSONALITYL_ENTRY=0x203
-[TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_STARTCURRENTCLASSCONTROLLER_ENTRY=0x13b
-[TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_STARTCURRENTCLASSCONTROLLER_EXIT=0x13c
-[TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_STARTL_ENTRY=0x131
-[TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_STARTL_EXIT=0x132
-[TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_STOPCURRENTCLASSCONTROLLER_ENTRY=0x13d
-[TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_STOPCURRENTCLASSCONTROLLER_EXIT=0x13e
-[TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_STOP_ENTRY=0x133
-[TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_STOP_EXIT=0x134
-[TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_TRYSTARTL_ENTRY=0x205
-[TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_TRYSTARTL_EXIT=0x206
-[TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_UCCNERROR_ENTRY=0x146
-[TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_UCCNERROR_EXIT=0x147
-[TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_UCCNGETCLASSCONTROLLERITERATORL_ENTRY=0x145
 [TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_VALIDATEPERSONALITIESL_ENTRY=0x20e
 [TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_VALIDATEPERSONALITIESL_EXIT=0x20f
 [TRACE]TRACE_FLOW[0x8A]_CUSBDUMMYCLASSCONTROLLER_DOCANCEL_ENTRY=0x63e
@@ -160,244 +113,122 @@
 [TRACE]TRACE_FLOW[0x8A]_CUSBDUMMYCLASSCONTROLLER_START_EXIT=0x639
 [TRACE]TRACE_FLOW[0x8A]_CUSBDUMMYCLASSCONTROLLER_STOP_ENTRY=0x63a
 [TRACE]TRACE_FLOW[0x8A]_CUSBDUMMYCLASSCONTROLLER_STOP_EXIT=0x63b
-[TRACE]TRACE_FLOW[0x8A]_CUSBMANCENREPMANAGER_CHECKSIGNATUREL_ENTRY=0x616
-[TRACE]TRACE_FLOW[0x8A]_CUSBMANCENREPMANAGER_CHECKSIGNATUREL_EXIT=0x617
-[TRACE]TRACE_FLOW[0x8A]_CUSBMANCENREPMANAGER_CONSTRUCTL_ENTRY=0x60e
-[TRACE]TRACE_FLOW[0x8A]_CUSBMANCENREPMANAGER_CONSTRUCTL_EXIT=0x60f
-[TRACE]TRACE_FLOW[0x8A]_CUSBMANCENREPMANAGER_CUSBMANCENREPMANAGER_CONS_ENTRY=0x60a
-[TRACE]TRACE_FLOW[0x8A]_CUSBMANCENREPMANAGER_CUSBMANCENREPMANAGER_CONS_EXIT=0x60b
-[TRACE]TRACE_FLOW[0x8A]_CUSBMANCENREPMANAGER_CUSBMANCENREPMANAGER_DES_ENTRY=0x610
-[TRACE]TRACE_FLOW[0x8A]_CUSBMANCENREPMANAGER_CUSBMANCENREPMANAGER_DES_EXIT=0x611
-[TRACE]TRACE_FLOW[0x8A]_CUSBMANCENREPMANAGER_ISCLASSCONFIGURABLEL_ENTRY=0x61e
-[TRACE]TRACE_FLOW[0x8A]_CUSBMANCENREPMANAGER_ISCLASSCONFIGURABLEL_EXIT=0x61f
-[TRACE]TRACE_FLOW[0x8A]_CUSBMANCENREPMANAGER_ISFEATURESUPPORTEDL_ENTRY=0x620
-[TRACE]TRACE_FLOW[0x8A]_CUSBMANCENREPMANAGER_ISFEATURESUPPORTEDL_EXIT=0x621
-[TRACE]TRACE_FLOW[0x8A]_CUSBMANCENREPMANAGER_ISFEATURESUPPORTEDL_EXIT_DUP1=0x622
-[TRACE]TRACE_FLOW[0x8A]_CUSBMANCENREPMANAGER_NEWL_ENTRY=0x60c
-[TRACE]TRACE_FLOW[0x8A]_CUSBMANCENREPMANAGER_NEWL_EXIT=0x60d
-[TRACE]TRACE_FLOW[0x8A]_CUSBMANCENREPMANAGER_READCONFIGURATIONSFORPERSONALITYL_ENTRY=0x61c
-[TRACE]TRACE_FLOW[0x8A]_CUSBMANCENREPMANAGER_READCONFIGURATIONSFORPERSONALITYL_EXIT=0x61d
-[TRACE]TRACE_FLOW[0x8A]_CUSBMANCENREPMANAGER_READDEVICECONFIGURATIONL_ENTRY=0x618
-[TRACE]TRACE_FLOW[0x8A]_CUSBMANCENREPMANAGER_READDEVICECONFIGURATIONL_EXIT=0x619
-[TRACE]TRACE_FLOW[0x8A]_CUSBMANCENREPMANAGER_READKEYL_ENTRY=0x614
-[TRACE]TRACE_FLOW[0x8A]_CUSBMANCENREPMANAGER_READKEYL_EXIT=0x615
-[TRACE]TRACE_FLOW[0x8A]_CUSBMANCENREPMANAGER_READPERSONALITIESL_ENTRY=0x61a
-[TRACE]TRACE_FLOW[0x8A]_CUSBMANCENREPMANAGER_READPERSONALITIESL_EXIT=0x61b
-[TRACE]TRACE_FLOW[0x8A]_CUSBMANCENREPMANAGER_READSTRINGKEYLC_ENTRY=0x612
-[TRACE]TRACE_FLOW[0x8A]_CUSBMANCENREPMANAGER_READSTRINGKEYLC_EXIT=0x613
-[TRACE]TRACE_FLOW[0x8A]_CUSBSCHEDULER_NEWL_ENTRY=0x2f
-[TRACE]TRACE_FLOW[0x8A]_CUSBSCHEDULER_NEWL_EXIT=0x30
-[TRACE]TRACE_FLOW[0x8A]_CUSBSERVER_CUSBSERVER_DES_ENTRY=0x468
-[TRACE]TRACE_FLOW[0x8A]_CUSBSERVER_CUSBSERVER_DES_EXIT=0x469
-[TRACE]TRACE_FLOW[0x8A]_CUSBSERVER_INCREMENTSESSIONCOUNT_ENTRY=0x1f8
-[TRACE]TRACE_FLOW[0x8A]_CUSBSERVER_INCREMENTSESSIONCOUNT_EXIT=0x1f9
-[TRACE]TRACE_FLOW[0x8A]_CUSBSERVER_LAUNCHSHUTDOWNTIMERIFNOSESSIONS_ENTRY=0x1fa
-[TRACE]TRACE_FLOW[0x8A]_CUSBSERVER_LAUNCHSHUTDOWNTIMERIFNOSESSIONS_EXIT=0x1fb
-[TRACE]TRACE_FLOW[0x8A]_CUSBSERVER_NEWLC_ENTRY=0x15c
-[TRACE]TRACE_FLOW[0x8A]_CUSBSERVER_NEWLC_EXIT=0x15d
-[TRACE]TRACE_FLOW[0x8A]_CUSBSERVER_NEWSESSIONL_ENTRY=0x1f6
-[TRACE]TRACE_FLOW[0x8A]_CUSBSERVER_NEWSESSIONL_EXIT=0x1f7
-[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_BUSCLEARERROR_ENTRY=0x27f
-[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_BUSCLEARERROR_EXIT=0x280
-[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_BUSDROP_ENTRY=0x281
-[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_BUSDROP_EXIT=0x282
-[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_BUSREQUEST_ENTRY=0x27b
-[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_BUSREQUEST_EXIT=0x27c
-[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_BUSRESPONDSRP_ENTRY=0x27d
-[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_BUSRESPONDSRP_EXIT=0x27e
-[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_CANCELINTEREST_ENTRY=0x25e
-[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_CANCELINTEREST_EXIT=0x25f
-[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_CANCELINTEREST_EXIT_DUP1=0x260
-[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_CLASSSUPPORTED_ENTRY=0x276
-[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_CLASSSUPPORTED_EXIT=0x277
-[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_CLASSSUPPORTED_EXIT_DUP1=0x278
-[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_CREATEL_ENTRY=0x223
-[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_CREATEL_EXIT=0x224
-[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_CUSBSESSION_CONS_ENTRY=0x21d
-[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_CUSBSESSION_CONS_EXIT=0x21e
-[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_CUSBSESSION_DES_ENTRY=0x21f
-[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_CUSBSESSION_DES_EXIT=0x220
-[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_DEREGISTERDEVICEOBSERVER_ENTRY=0x249
-[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_DEREGISTERDEVICEOBSERVER_EXIT=0x24a
-[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_DEREGISTERDEVICEOBSERVER_EXIT_DUP1=0x24b
-[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_DEREGISTERHOSTOBSERVER_ENTRY=0x294
-[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_DEREGISTERHOSTOBSERVER_EXIT=0x295
-[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_DEREGISTERHOSTOBSERVER_EXIT_DUP1=0x296
-[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_DEREGISTERMSGOBSERVER_ENTRY=0x29a
-[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_DEREGISTERMSGOBSERVER_EXIT=0x29b
-[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_DEREGISTERMSGOBSERVER_EXIT_DUP1=0x29c
-[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_DEREGISTERSERVICEOBSERVER_ENTRY=0x24c
-[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_DEREGISTERSERVICEOBSERVER_EXIT=0x24d
-[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_DEREGISTERSERVICEOBSERVER_EXIT_DUP1=0x24e
-[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_DISABLEFUNCTIONDRIVERLOADING_ENTRY=0x285
-[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_DISABLEFUNCTIONDRIVERLOADING_EXIT=0x286
-[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_DISPATCHMESSAGEL_ENTRY=0x22f
-[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_DISPATCHMESSAGEL_EXIT=0x230
-[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_ENABLEFUNCTIONDRIVERLOADING_ENTRY=0x283
-[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_ENABLEFUNCTIONDRIVERLOADING_EXIT=0x284
-[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_GETCURRENTDEVICESTATE_ENTRY=0x248
-[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_GETCURRENTPERSONALITYID_ENTRY=0x261
-[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_GETCURRENTPERSONALITYID_EXIT=0x262
-[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_GETCURRENTSERVICESTATE_ENTRY=0x247
-[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_GETDESCRIPTION_ENTRY=0x26b
-[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_GETDESCRIPTION_EXIT=0x26c
-[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_GETDESCRIPTION_EXIT_DUP1=0x26d
-[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_GETMANUFACTURERSTRINGDESCRIPTOR_ENTRY=0x28b
-[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_GETMANUFACTURERSTRINGDESCRIPTOR_EXIT=0x28c
-[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_GETOTGDESCRIPTOR_ENTRY=0x28f
-[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_GETOTGDESCRIPTOR_EXIT=0x290
-[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_GETPERSONALITYIDS_ENTRY=0x268
-[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_GETPERSONALITYIDS_EXIT=0x269
-[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_GETPERSONALITYIDS_EXIT_DUP1=0x26a
-[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_GETPERSONALITYPROPERTY_ENTRY=0x272
-[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_GETPERSONALITYPROPERTY_EXIT=0x273
-[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_GETPERSONALITYPROPERTY_EXIT_DUP2=0x275
-[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_GETPRODUCTSTRINGDESCRIPTOR_ENTRY=0x28d
-[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_GETPRODUCTSTRINGDESCRIPTOR_EXIT=0x28e
-[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_GETSUPPORTEDCLASSES_ENTRY=0x263
-[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_GETSUPPORTEDCLASSES_EXIT=0x264
-[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_GETSUPPORTEDCLASSES_EXIT_DUP1=0x265
-[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_GETSUPPORTEDCLASSES_EXIT_DUP2=0x266
-[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_GETSUPPORTEDCLASSES_EXIT_DUP3=0x267
-[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_GETSUPPORTEDLANGUAGESL_ENTRY=0x289
-[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_GETSUPPORTEDLANGUAGESL_EXIT=0x28a
-[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_GETSUPPORTEDLANGUAGES_ENTRY=0x287
-[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_GETSUPPORTEDLANGUAGES_EXIT=0x288
-[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_HANDLESERVICESTATECHANGEWHILESTARTING_ENTRY=0x227
-[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_HANDLESERVICESTATECHANGEWHILESTARTING_EXIT=0x228
-[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_HANDLESERVICESTATECHANGEWHILESTOPPING_ENTRY=0x229
-[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_HANDLESERVICESTATECHANGEWHILESTOPPING_EXIT=0x22a
-[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_NEWL_ENTRY=0x21c
-[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_REGISTERDEVICEOBSERVER_ENTRY=0x241
-[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_REGISTERDEVICEOBSERVER_EXIT=0x242
-[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_REGISTERDEVICEOBSERVER_EXIT_DUP1=0x243
-[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_REGISTERHOSTOBSERVER_ENTRY=0x291
-[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_REGISTERHOSTOBSERVER_EXIT=0x292
-[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_REGISTERHOSTOBSERVER_EXIT_DUP1=0x293
-[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_REGISTERMSGOBSERVER_ENTRY=0x297
-[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_REGISTERMSGOBSERVER_EXIT=0x298
-[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_REGISTERMSGOBSERVER_EXIT_DUP1=0x299
-[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_REGISTERSERVICEOBSERVER_ENTRY=0x244
-[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_REGISTERSERVICEOBSERVER_EXIT=0x245
-[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_REGISTERSERVICEOBSERVER_EXIT_DUP1=0x246
-[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_SERVICEL_ENTRY=0x221
-[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_SERVICEL_EXIT=0x222
-[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_SETCTLSESSIONMODE_ENTRY=0x279
-[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_SETCTLSESSIONMODE_EXIT=0x27a
-[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_STARTCANCEL_ENTRY=0x23a
-[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_STARTCANCEL_EXIT=0x23b
-[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_STARTCANCEL_EXIT_DUP1=0x23c
-[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_STARTDEVICEL_ENTRY=0x231
-[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_STARTDEVICEL_EXIT=0x232
-[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_STARTDEVICEL_EXIT_DUP1=0x233
-[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_STARTDEVICEL_EXIT_DUP2=0x234
-[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_STOPCANCEL_ENTRY=0x23d
-[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_STOPCANCEL_EXIT=0x23e
-[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_STOPCANCEL_EXIT_DUP1=0x23f
-[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_STOPCANCEL_EXIT_DUP2=0x240
-[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_STOPDEVICEL_ENTRY=0x235
-[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_STOPDEVICEL_EXIT=0x236
-[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_STOPDEVICEL_EXIT_DUP1=0x237
-[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_STOPDEVICEL_EXIT_DUP2=0x238
-[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_STOPDEVICEL_EXIT_DUP3=0x239
-[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_TRYSTARTDEVICEL_ENTRY=0x24f
-[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_TRYSTARTDEVICEL_EXIT=0x250
-[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_TRYSTARTDEVICEL_EXIT_DUP1=0x251
-[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_TRYSTARTDEVICEL_EXIT_DUP2=0x252
-[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_TRYSTARTDEVICEL_EXIT_DUP3=0x253
-[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_TRYSTARTDEVICEL_EXIT_DUP4=0x254
-[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_TRYSTARTDEVICEL_EXIT_DUP5=0x255
-[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_TRYSTARTDEVICEL_EXIT_DUP6=0x256
-[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_TRYSTOPDEVICEL_ENTRY=0x257
-[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_TRYSTOPDEVICEL_EXIT=0x258
-[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_TRYSTOPDEVICEL_EXIT_DUP1=0x259
-[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_TRYSTOPDEVICEL_EXIT_DUP2=0x25a
-[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_TRYSTOPDEVICEL_EXIT_DUP3=0x25b
-[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_TRYSTOPDEVICEL_EXIT_DUP4=0x25c
-[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_TRYSTOPDEVICEL_EXIT_DUP5=0x25d
-[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_USBDEVICEDEQUEUEEVENT_ENTRY=0x22d
-[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_USBDEVICEDEQUEUEEVENT_EXIT=0x22e
-[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_USBDEVICESTATECHANGE_ENTRY=0x22b
-[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_USBDEVICESTATECHANGE_EXIT=0x22c
-[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_USBHOSTEVENTDEQUEUE_ENTRY=0x2a3
-[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_USBHOSTEVENTDEQUEUE_EXIT=0x2a4
-[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_USBHOSTEVENT_ENTRY=0x29f
-[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_USBHOSTEVENT_EXIT=0x2a0
-[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_USBMSGDEQUEUE_ENTRY=0x2a1
-[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_USBMSGDEQUEUE_EXIT=0x2a2
-[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_USBOTGHOSTMESSAGE_ENTRY=0x29d
-[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_USBOTGHOSTMESSAGE_EXIT=0x29e
-[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_USBSERVICESTATECHANGE_ENTRY=0x225
-[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_USBSERVICESTATECHANGE_EXIT=0x226
+[TRACE]TRACE_FLOW[0x8A]_CUSBOTGBASEWATCHER_CUSBOTGBASEWATCHER_CONS_ENTRY=0x688
+[TRACE]TRACE_FLOW[0x8A]_CUSBOTGBASEWATCHER_CUSBOTGBASEWATCHER_CONS_EXIT=0x689
+[TRACE]TRACE_FLOW[0x8A]_CUSBOTGBASEWATCHER_CUSBOTGBASEWATCHER_DES_ENTRY=0x68a
+[TRACE]TRACE_FLOW[0x8A]_CUSBOTGBASEWATCHER_CUSBOTGBASEWATCHER_DES_EXIT=0x68b
+[TRACE]TRACE_FLOW[0x8A]_CUSBOTGBASEWATCHER_START_ENTRY=0x68c
+[TRACE]TRACE_FLOW[0x8A]_CUSBOTGBASEWATCHER_START_EXIT=0x68d
+[TRACE]TRACE_FLOW[0x8A]_CUSBOTGCONNECTIONIDLEWATCHER_CONSTRUCTL_ENTRY=0x6e0
+[TRACE]TRACE_FLOW[0x8A]_CUSBOTGCONNECTIONIDLEWATCHER_CONSTRUCTL_EXIT=0x6e1
+[TRACE]TRACE_FLOW[0x8A]_CUSBOTGCONNECTIONIDLEWATCHER_CUSBOTGCONNECTIONIDLEWATCHER_CONS_ENTRY=0x6e2
+[TRACE]TRACE_FLOW[0x8A]_CUSBOTGCONNECTIONIDLEWATCHER_CUSBOTGCONNECTIONIDLEWATCHER_CONS_EXIT=0x6e3
+[TRACE]TRACE_FLOW[0x8A]_CUSBOTGCONNECTIONIDLEWATCHER_CUSBOTGCONNECTIONIDLEWATCHER_DES_ENTRY=0x6de
+[TRACE]TRACE_FLOW[0x8A]_CUSBOTGCONNECTIONIDLEWATCHER_CUSBOTGCONNECTIONIDLEWATCHER_DES_EXIT=0x6df
+[TRACE]TRACE_FLOW[0x8A]_CUSBOTGCONNECTIONIDLEWATCHER_DOCANCEL_ENTRY=0x6e6
+[TRACE]TRACE_FLOW[0x8A]_CUSBOTGCONNECTIONIDLEWATCHER_DOCANCEL_EXIT=0x6e7
+[TRACE]TRACE_FLOW[0x8A]_CUSBOTGCONNECTIONIDLEWATCHER_NEWL_ENTRY=0x6dc
+[TRACE]TRACE_FLOW[0x8A]_CUSBOTGCONNECTIONIDLEWATCHER_NEWL_EXIT=0x6dd
+[TRACE]TRACE_FLOW[0x8A]_CUSBOTGCONNECTIONIDLEWATCHER_POST_ENTRY=0x6e8
+[TRACE]TRACE_FLOW[0x8A]_CUSBOTGCONNECTIONIDLEWATCHER_POST_EXIT=0x6e9
+[TRACE]TRACE_FLOW[0x8A]_CUSBOTGCONNECTIONIDLEWATCHER_RUNL_ENTRY=0x6e4
+[TRACE]TRACE_FLOW[0x8A]_CUSBOTGCONNECTIONIDLEWATCHER_RUNL_EXIT=0x6e5
+[TRACE]TRACE_FLOW[0x8A]_CUSBOTGEVENTWATCHER_CONSTRUCTL_ENTRY=0x6bc
+[TRACE]TRACE_FLOW[0x8A]_CUSBOTGEVENTWATCHER_CONSTRUCTL_EXIT=0x6bd
+[TRACE]TRACE_FLOW[0x8A]_CUSBOTGEVENTWATCHER_CUSBOTGEVENTWATCHER_CONS_ENTRY=0x6be
+[TRACE]TRACE_FLOW[0x8A]_CUSBOTGEVENTWATCHER_CUSBOTGEVENTWATCHER_CONS_EXIT=0x6bf
+[TRACE]TRACE_FLOW[0x8A]_CUSBOTGEVENTWATCHER_CUSBOTGEVENTWATCHER_DES_ENTRY=0x6ba
+[TRACE]TRACE_FLOW[0x8A]_CUSBOTGEVENTWATCHER_CUSBOTGEVENTWATCHER_DES_EXIT=0x6bb
+[TRACE]TRACE_FLOW[0x8A]_CUSBOTGEVENTWATCHER_DOCANCEL_ENTRY=0x6c2
+[TRACE]TRACE_FLOW[0x8A]_CUSBOTGEVENTWATCHER_DOCANCEL_EXIT=0x6c3
+[TRACE]TRACE_FLOW[0x8A]_CUSBOTGEVENTWATCHER_NEWL_ENTRY=0x6b8
+[TRACE]TRACE_FLOW[0x8A]_CUSBOTGEVENTWATCHER_NEWL_EXIT=0x6b9
+[TRACE]TRACE_FLOW[0x8A]_CUSBOTGEVENTWATCHER_POST_ENTRY=0x6c4
+[TRACE]TRACE_FLOW[0x8A]_CUSBOTGEVENTWATCHER_POST_EXIT=0x6c5
+[TRACE]TRACE_FLOW[0x8A]_CUSBOTGEVENTWATCHER_RUNL_ENTRY=0x6c0
+[TRACE]TRACE_FLOW[0x8A]_CUSBOTGEVENTWATCHER_RUNL_EXIT=0x6c1
+[TRACE]TRACE_FLOW[0x8A]_CUSBOTGIDPINWATCHER_CONSTRUCTL_ENTRY=0x692
+[TRACE]TRACE_FLOW[0x8A]_CUSBOTGIDPINWATCHER_CONSTRUCTL_EXIT=0x693
+[TRACE]TRACE_FLOW[0x8A]_CUSBOTGIDPINWATCHER_CUSBOTGIDPINWATCHER_CONS_ENTRY=0x694
+[TRACE]TRACE_FLOW[0x8A]_CUSBOTGIDPINWATCHER_CUSBOTGIDPINWATCHER_CONS_EXIT=0x695
+[TRACE]TRACE_FLOW[0x8A]_CUSBOTGIDPINWATCHER_CUSBOTGIDPINWATCHER_DES_ENTRY=0x690
+[TRACE]TRACE_FLOW[0x8A]_CUSBOTGIDPINWATCHER_CUSBOTGIDPINWATCHER_DES_EXIT=0x691
+[TRACE]TRACE_FLOW[0x8A]_CUSBOTGIDPINWATCHER_DOCANCEL_ENTRY=0x698
+[TRACE]TRACE_FLOW[0x8A]_CUSBOTGIDPINWATCHER_DOCANCEL_EXIT=0x699
+[TRACE]TRACE_FLOW[0x8A]_CUSBOTGIDPINWATCHER_NEWL_ENTRY=0x68e
+[TRACE]TRACE_FLOW[0x8A]_CUSBOTGIDPINWATCHER_NEWL_EXIT=0x68f
+[TRACE]TRACE_FLOW[0x8A]_CUSBOTGIDPINWATCHER_POST_ENTRY=0x69a
+[TRACE]TRACE_FLOW[0x8A]_CUSBOTGIDPINWATCHER_POST_EXIT=0x69b
+[TRACE]TRACE_FLOW[0x8A]_CUSBOTGIDPINWATCHER_RUNL_ENTRY=0x696
+[TRACE]TRACE_FLOW[0x8A]_CUSBOTGIDPINWATCHER_RUNL_EXIT=0x697
+[TRACE]TRACE_FLOW[0x8A]_CUSBOTGSTATEWATCHER_CONSTRUCTL_ENTRY=0x6ae
+[TRACE]TRACE_FLOW[0x8A]_CUSBOTGSTATEWATCHER_CONSTRUCTL_EXIT=0x6af
+[TRACE]TRACE_FLOW[0x8A]_CUSBOTGSTATEWATCHER_CUSBOTGSTATEWATCHER_CONS_ENTRY=0x6b0
+[TRACE]TRACE_FLOW[0x8A]_CUSBOTGSTATEWATCHER_CUSBOTGSTATEWATCHER_CONS_EXIT=0x6b1
+[TRACE]TRACE_FLOW[0x8A]_CUSBOTGSTATEWATCHER_CUSBOTGSTATEWATCHER_DES_ENTRY=0x6ac
+[TRACE]TRACE_FLOW[0x8A]_CUSBOTGSTATEWATCHER_CUSBOTGSTATEWATCHER_DES_EXIT=0x6ad
+[TRACE]TRACE_FLOW[0x8A]_CUSBOTGSTATEWATCHER_DOCANCEL_ENTRY=0x6b4
+[TRACE]TRACE_FLOW[0x8A]_CUSBOTGSTATEWATCHER_DOCANCEL_EXIT=0x6b5
+[TRACE]TRACE_FLOW[0x8A]_CUSBOTGSTATEWATCHER_NEWL_ENTRY=0x6aa
+[TRACE]TRACE_FLOW[0x8A]_CUSBOTGSTATEWATCHER_NEWL_EXIT=0x6ab
+[TRACE]TRACE_FLOW[0x8A]_CUSBOTGSTATEWATCHER_POST_ENTRY=0x6b6
+[TRACE]TRACE_FLOW[0x8A]_CUSBOTGSTATEWATCHER_POST_EXIT=0x6b7
+[TRACE]TRACE_FLOW[0x8A]_CUSBOTGSTATEWATCHER_RUNL_ENTRY=0x6b2
+[TRACE]TRACE_FLOW[0x8A]_CUSBOTGSTATEWATCHER_RUNL_EXIT=0x6b3
+[TRACE]TRACE_FLOW[0x8A]_CUSBOTGVBUSWATCHER_CONSTRUCTL_ENTRY=0x6a0
+[TRACE]TRACE_FLOW[0x8A]_CUSBOTGVBUSWATCHER_CONSTRUCTL_EXIT=0x6a1
+[TRACE]TRACE_FLOW[0x8A]_CUSBOTGVBUSWATCHER_CUSBOTGVBUSWATCHER_CONS_ENTRY=0x6a2
+[TRACE]TRACE_FLOW[0x8A]_CUSBOTGVBUSWATCHER_CUSBOTGVBUSWATCHER_CONS_EXIT=0x6a3
+[TRACE]TRACE_FLOW[0x8A]_CUSBOTGVBUSWATCHER_CUSBOTGVBUSWATCHER_DES_ENTRY=0x69e
+[TRACE]TRACE_FLOW[0x8A]_CUSBOTGVBUSWATCHER_CUSBOTGVBUSWATCHER_DES_EXIT=0x69f
+[TRACE]TRACE_FLOW[0x8A]_CUSBOTGVBUSWATCHER_DOCANCEL_ENTRY=0x6a6
+[TRACE]TRACE_FLOW[0x8A]_CUSBOTGVBUSWATCHER_DOCANCEL_EXIT=0x6a7
+[TRACE]TRACE_FLOW[0x8A]_CUSBOTGVBUSWATCHER_NEWL_ENTRY=0x69c
+[TRACE]TRACE_FLOW[0x8A]_CUSBOTGVBUSWATCHER_NEWL_EXIT=0x69d
+[TRACE]TRACE_FLOW[0x8A]_CUSBOTGVBUSWATCHER_POST_ENTRY=0x6a8
+[TRACE]TRACE_FLOW[0x8A]_CUSBOTGVBUSWATCHER_POST_EXIT=0x6a9
+[TRACE]TRACE_FLOW[0x8A]_CUSBOTGVBUSWATCHER_RUNL_ENTRY=0x6a4
+[TRACE]TRACE_FLOW[0x8A]_CUSBOTGVBUSWATCHER_RUNL_EXIT=0x6a5
+[TRACE]TRACE_FLOW[0x8A]_CUSBOTGWATCHER_CUSBOTGWATCHER_CONS_ENTRY=0x6c9
+[TRACE]TRACE_FLOW[0x8A]_CUSBOTGWATCHER_CUSBOTGWATCHER_CONS_EXIT=0x6ca
+[TRACE]TRACE_FLOW[0x8A]_CUSBOTGWATCHER_CUSBOTGWATCHER_DES_ENTRY=0x6c8
+[TRACE]TRACE_FLOW[0x8A]_CUSBOTGWATCHER_DOCANCEL_ENTRY=0x6ce
+[TRACE]TRACE_FLOW[0x8A]_CUSBOTGWATCHER_DOCANCEL_EXIT=0x6cf
+[TRACE]TRACE_FLOW[0x8A]_CUSBOTGWATCHER_NEWL_ENTRY=0x6c6
+[TRACE]TRACE_FLOW[0x8A]_CUSBOTGWATCHER_NEWL_EXIT=0x6c7
+[TRACE]TRACE_FLOW[0x8A]_CUSBOTGWATCHER_POST_ENTRY=0x6d2
+[TRACE]TRACE_FLOW[0x8A]_CUSBOTGWATCHER_POST_EXIT=0x6d3
+[TRACE]TRACE_FLOW[0x8A]_CUSBOTGWATCHER_RUNL_ENTRY=0x6cb
+[TRACE]TRACE_FLOW[0x8A]_CUSBOTGWATCHER_RUNL_EXIT=0x6cc
+[TRACE]TRACE_FLOW[0x8A]_CUSBOTGWATCHER_RUNL_EXIT_DUP1=0x6cd
+[TRACE]TRACE_FLOW[0x8A]_CUSBOTGWATCHER_START_ENTRY=0x6d0
+[TRACE]TRACE_FLOW[0x8A]_CUSBOTGWATCHER_START_EXIT=0x6d1
+[TRACE]TRACE_FLOW[0x8A]_CUSBOTG_BUSCLEARERROR_ENTRY=0x652
+[TRACE]TRACE_FLOW[0x8A]_CUSBOTG_BUSDROP_ENTRY=0x653
+[TRACE]TRACE_FLOW[0x8A]_CUSBOTG_BUSREQUEST_ENTRY=0x650
+[TRACE]TRACE_FLOW[0x8A]_CUSBOTG_BUSRESPONDSRP_ENTRY=0x651
+[TRACE]TRACE_FLOW[0x8A]_CUSBOTG_CONSTRUCTL_ENTRY=0x646
+[TRACE]TRACE_FLOW[0x8A]_CUSBOTG_CONSTRUCTL_EXIT=0x647
+[TRACE]TRACE_FLOW[0x8A]_CUSBOTG_CUSBOTG_CONS_ENTRY=0x644
+[TRACE]TRACE_FLOW[0x8A]_CUSBOTG_CUSBOTG_CONS_EXIT=0x645
+[TRACE]TRACE_FLOW[0x8A]_CUSBOTG_CUSBOTG_DES_ENTRY=0x642
+[TRACE]TRACE_FLOW[0x8A]_CUSBOTG_CUSBOTG_DES_EXIT=0x643
+[TRACE]TRACE_FLOW[0x8A]_CUSBOTG_DEREGISTEROBSERVER_ENTRY=0x64a
+[TRACE]TRACE_FLOW[0x8A]_CUSBOTG_DEREGISTEROBSERVER_EXIT=0x64b
+[TRACE]TRACE_FLOW[0x8A]_CUSBOTG_NEWL_ENTRY=0x640
+[TRACE]TRACE_FLOW[0x8A]_CUSBOTG_NEWL_EXIT=0x641
+[TRACE]TRACE_FLOW[0x8A]_CUSBOTG_REGISTEROBSERVERL_ENTRY=0x648
+[TRACE]TRACE_FLOW[0x8A]_CUSBOTG_REGISTEROBSERVERL_EXIT=0x649
+[TRACE]TRACE_FLOW[0x8A]_CUSBOTG_STARTL_ENTRY=0x64c
+[TRACE]TRACE_FLOW[0x8A]_CUSBOTG_STARTL_EXIT=0x64d
+[TRACE]TRACE_FLOW[0x8A]_CUSBOTG_STOP_ENTRY=0x64e
+[TRACE]TRACE_FLOW[0x8A]_CUSBOTG_STOP_EXIT=0x64f
 [TRACE]TRACE_NORMAL[0x86]_CINIFILE_CONSTRUCTL=0x3e1
 [TRACE]TRACE_NORMAL[0x86]_CINIFILE_CONSTRUCTL_DUP1=0x3e2
 [TRACE]TRACE_NORMAL[0x86]_CINIFILE_CONSTRUCTL_DUP2=0x3e3
 [TRACE]TRACE_NORMAL[0x86]_CINIFILE_CONSTRUCTL_DUP3=0x3e4
 [TRACE]TRACE_NORMAL[0x86]_CINIFILE_CONSTRUCTL_DUP4=0x3e5
 [TRACE]TRACE_NORMAL[0x86]_CINIFILE_PANIC=0x3e0
-[TRACE]TRACE_NORMAL[0x86]_CUSBDEVICESTATEWATCHER_CUSBDEVICESTATEWATCHER=0x89
-[TRACE]TRACE_NORMAL[0x86]_CUSBDEVICESTATEWATCHER_RUNL=0x8a
-[TRACE]TRACE_NORMAL[0x86]_CUSBDEVICESTATEWATCHER_RUNL_DUP1=0x8b
-[TRACE]TRACE_NORMAL[0x86]_CUSBDEVICESTATEWATCHER_RUNL_DUP2=0x8c
-[TRACE]TRACE_NORMAL[0x86]_CUSBDEVICESTATEWATCHER_RUNL_DUP3=0x8d
-[TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_ADDCLASSCONTROLLERL=0x178
-[TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_BUSENUMERATIONCOMPLETED=0xcb
-[TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_BUSENUMERATIONFAILED=0xcc
-[TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_BUSENUMERATIONFAILED_DUP1=0xcd
-[TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_CONSTRUCTL=0xbf
-[TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_CONSTRUCTL_DUP1=0x16f
-[TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_CONSTRUCTL_DUP10=0x171
-[TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_CONSTRUCTL_DUP11=0x172
-[TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_CONSTRUCTL_DUP12=0x174
-[TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_CONSTRUCTL_DUP13=0x175
-[TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_CONSTRUCTL_DUP2=0xc1
-[TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_CONSTRUCTL_DUP3=0xc2
-[TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_CONSTRUCTL_DUP4=0xc3
-[TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_CONSTRUCTL_DUP5=0xc4
-[TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_CONSTRUCTL_DUP6=0xc5
-[TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_CONSTRUCTL_DUP7=0xc6
-[TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_CONSTRUCTL_DUP8=0xc7
-[TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_CONSTRUCTL_DUP9=0x170
-[TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_CONVERTUIDSL_DUP1=0x1a1
-[TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_CREATECLASSCONTROLLERSL=0x16e
-[TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_CREATECLASSCONTROLLERSL_DUP1=0x1a5
-[TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_CUSBDEVICE=0xbb
-[TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_CUSBDEVICE_DUP1=0xbc
-[TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_CUSBDEVICE_DUP2=0xbd
-[TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_CUSBDEVICE_DUP3=0xbe
-[TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_ENUMERATECLASSCONTROLLERSL=0x138
-[TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_ENUMERATECLASSCONTROLLERSL_DUP1=0x139
-[TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_ENUMERATECLASSCONTROLLERSL_DUP2=0x176
-[TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_ENUMERATECLASSCONTROLLERSL_DUP3=0x192
-[TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_INSTANTIATEEXTENSIONPLUGINSL_DUP1=0xc8
-[TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_MUEPODOREGISTERSTATEOBSERVERL=0x150
-[TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_POWERUPANDCONNECT=0xce
-[TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_POWERUPANDCONNECT_DUP1=0xcf
-[TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_POWERUPANDCONNECT_DUP2=0xd0
-[TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_REGISTEROBSERVERL=0x179
-[TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_RUNERROR=0xd5
-[TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_RUNL=0xd1
-[TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_RUNL_DUP1=0xd2
-[TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_RUNL_DUP2=0xd3
-[TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_RUNL_DUP3=0xd4
-[TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_RUNL_DUP4=0x193
-[TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_SETCURRENTPERSONALITYL=0x154
-[TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_SETDEVICEDESCRIPTORL=0x146
-[TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_SETDEVICEDESCRIPTORL_DUP1=0x147
-[TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_SETDEVICEDESCRIPTORL_DUP2=0x148
-[TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_SETDEVICEDESCRIPTORL_DUP3=0x3c6
-[TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_SETDEVICESTATE=0xca
-[TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_SETSERVICESTATE=0xc9
-[TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_SETUSBDEVICESETTINGSFROMPERSONALITYL=0x151
-[TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_SETUSBDEVICESETTINGSFROMPERSONALITYL_DUP1=0x157
-[TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_SETUSBDEVICESETTINGSFROMPERSONALITYL_DUP2=0x158
-[TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_SETUSBDEVICESETTINGSFROMPERSONALITYL_DUP3=0x19e
-[TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_SETUSBDEVICESETTINGSFROMPERSONALITYL_DUP4=0x1a0
-[TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_SETUSBDEVICESETTINGSFROMPERSONALITYL_DUP5=0x19f
-[TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_SETUSBDEVICESETTINGSFROMPERSONALITYL_DUP6=0x19d
-[TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_SETUSBDEVICESETTINGSFROMPERSONALITYL_DUP7=0x19c
-[TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_STARTL=0x17a
-[TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_TRYSTARTL=0x18a
 [TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_VALIDATEPERSONALITIESL=0x155
 [TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_VALIDATEPERSONALITIESL_DUP1=0x3c7
 [TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_VALIDATEPERSONALITIESL_DUP2=0x3c8
@@ -414,118 +245,78 @@
 [TRACE]TRACE_NORMAL[0x86]_CUSBDUMMYCLASSCONTROLLER_GETCONFIG_DUP5=0x3f0
 [TRACE]TRACE_NORMAL[0x86]_CUSBDUMMYCLASSCONTROLLER_GETCONFIG_DUP6=0x3f1
 [TRACE]TRACE_NORMAL[0x86]_CUSBDUMMYCLASSCONTROLLER_RUNL=0x3f2
-[TRACE]TRACE_NORMAL[0x86]_CUSBMANCENREPMANAGER_CHECKSIGNATUREL=0x3cc
-[TRACE]TRACE_NORMAL[0x86]_CUSBMANCENREPMANAGER_ISCLASSCONFIGURABLEL=0x3dc
-[TRACE]TRACE_NORMAL[0x86]_CUSBMANCENREPMANAGER_ISCLASSCONFIGURABLEL_DUP2=0x3dd
-[TRACE]TRACE_NORMAL[0x86]_CUSBMANCENREPMANAGER_ISFEATURESUPPORTEDL_DUP2=0x3df
-[TRACE]TRACE_NORMAL[0x86]_CUSBMANCENREPMANAGER_READCONFIGURATIONSFORPERSONALITYL_DUP1=0x3d9
-[TRACE]TRACE_NORMAL[0x86]_CUSBMANCENREPMANAGER_READCONFIGURATIONSFORPERSONALITYL_DUP2=0x3da
-[TRACE]TRACE_NORMAL[0x86]_CUSBMANCENREPMANAGER_READCONFIGURATIONSFORPERSONALITYL_DUP3=0x3db
-[TRACE]TRACE_NORMAL[0x86]_CUSBMANCENREPMANAGER_READDEVICECONFIGURATIONL=0x3cd
-[TRACE]TRACE_NORMAL[0x86]_CUSBMANCENREPMANAGER_READDEVICECONFIGURATIONL_DUP1=0x3d1
-[TRACE]TRACE_NORMAL[0x86]_CUSBMANCENREPMANAGER_READDEVICECONFIGURATIONL_DUP2=0x3d2
-[TRACE]TRACE_NORMAL[0x86]_CUSBMANCENREPMANAGER_READDEVICECONFIGURATIONL_DUP3=0x3cf
-[TRACE]TRACE_NORMAL[0x86]_CUSBMANCENREPMANAGER_READDEVICECONFIGURATIONL_DUP4=0x3d0
-[TRACE]TRACE_NORMAL[0x86]_CUSBMANCENREPMANAGER_READKEYL=0x3c9
-[TRACE]TRACE_NORMAL[0x86]_CUSBMANCENREPMANAGER_READKEYL_DUP1=0x3cb
-[TRACE]TRACE_NORMAL[0x86]_CUSBMANCENREPMANAGER_READPERSONALITIESL_DUP1=0x3d4
-[TRACE]TRACE_NORMAL[0x86]_CUSBMANCENREPMANAGER_READPERSONALITIESL_DUP3=0x3d3
-[TRACE]TRACE_NORMAL[0x86]_CUSBMANCENREPMANAGER_READPERSONALITIESL_DUP4=0x3d6
-[TRACE]TRACE_NORMAL[0x86]_CUSBMANCENREPMANAGER_READPERSONALITIESL_DUP6=0x3d7
-[TRACE]TRACE_NORMAL[0x86]_CUSBMANCENREPMANAGER_READPERSONALITIESL_DUP7=0x3d8
-[TRACE]TRACE_NORMAL[0x86]_CUSBMANCENREPMANAGER_READSTRINGKEYLC=0x3c4
-[TRACE]TRACE_NORMAL[0x86]_CUSBMANCENREPMANAGER_READSTRINGKEYLC_DUP1=0x3c5
-[TRACE]TRACE_NORMAL[0x86]_CUSBSCHEDULER_ERROR=0x1d
-[TRACE]TRACE_NORMAL[0x86]_CUSBSERVER_CONSTRUCTL=0x12c
-[TRACE]TRACE_NORMAL[0x86]_CUSBSERVER_CONSTRUCTL_DUP1=0x12d
-[TRACE]TRACE_NORMAL[0x86]_CUSBSERVER_CONSTRUCTL_DUP2=0x12e
-[TRACE]TRACE_NORMAL[0x86]_CUSBSERVER_CONSTRUCTL_DUP3=0x12f
-[TRACE]TRACE_NORMAL[0x86]_CUSBSERVER_CUSBSERVER=0x124
-[TRACE]TRACE_NORMAL[0x86]_CUSBSERVER_CUSBSERVER_DUP1=0x125
-[TRACE]TRACE_NORMAL[0x86]_CUSBSERVER_CUSBSERVER_DUP2=0x126
-[TRACE]TRACE_NORMAL[0x86]_CUSBSERVER_CUSBSERVER_DUP3=0x127
-[TRACE]TRACE_NORMAL[0x86]_CUSBSERVER_CUSBSERVER_DUP4=0x128
-[TRACE]TRACE_NORMAL[0x86]_CUSBSERVER_CUSBSERVER_DUP5=0x129
-[TRACE]TRACE_NORMAL[0x86]_CUSBSERVER_CUSBSERVER_DUP6=0x12a
-[TRACE]TRACE_NORMAL[0x86]_CUSBSERVER_CUSBSERVER_DUP7=0x12b
-[TRACE]TRACE_NORMAL[0x86]_CUSBSERVER_DECREMENTSESSIONCOUNT=0x135
-[TRACE]TRACE_NORMAL[0x86]_CUSBSERVER_ERROR=0x132
-[TRACE]TRACE_NORMAL[0x86]_CUSBSERVER_INCREMENTSESSIONCOUNT=0x133
-[TRACE]TRACE_NORMAL[0x86]_CUSBSERVER_NEWSESSIONL=0x130
-[TRACE]TRACE_NORMAL[0x86]_CUSBSERVER_NEWSESSIONL_DUP1=0x131
-[TRACE]TRACE_NORMAL[0x86]_CUSBSESSION_CREATEL=0x1c8
-[TRACE]TRACE_NORMAL[0x86]_CUSBSESSION_CREATEL_DUP1=0x1c9
-[TRACE]TRACE_NORMAL[0x86]_CUSBSESSION_CREATEL_DUP2=0x1ca
-[TRACE]TRACE_NORMAL[0x86]_CUSBSESSION_CUSBSESSION=0x1d2
-[TRACE]TRACE_NORMAL[0x86]_CUSBSESSION_CUSBSESSION_DUP1=0x1d5
-[TRACE]TRACE_NORMAL[0x86]_CUSBSESSION_CUSBSESSION_DUP2=0x1d6
-[TRACE]TRACE_NORMAL[0x86]_CUSBSESSION_CUSBSESSION_DUP3=0x1d7
-[TRACE]TRACE_NORMAL[0x86]_CUSBSESSION_DEREGISTERHOSTOBSERVER=0x1ad
-[TRACE]TRACE_NORMAL[0x86]_CUSBSESSION_DEREGISTERHOSTOBSERVER_DUP1=0x1ae
-[TRACE]TRACE_NORMAL[0x86]_CUSBSESSION_DISPATCHMESSAGEL=0x1c2
-[TRACE]TRACE_NORMAL[0x86]_CUSBSESSION_DISPATCHMESSAGEL_DUP1=0x1d0
-[TRACE]TRACE_NORMAL[0x86]_CUSBSESSION_DISPATCHMESSAGEL_DUP2=0x1dd
-[TRACE]TRACE_NORMAL[0x86]_CUSBSESSION_DISPATCHMESSAGEL_DUP3=0x1de
-[TRACE]TRACE_NORMAL[0x86]_CUSBSESSION_DISPATCHMESSAGEL_DUP4=0x1df
-[TRACE]TRACE_NORMAL[0x86]_CUSBSESSION_DISPATCHMESSAGEL_DUP5=0x1e0
-[TRACE]TRACE_NORMAL[0x86]_CUSBSESSION_DISPATCHMESSAGEL_DUP6=0x1e1
-[TRACE]TRACE_NORMAL[0x86]_CUSBSESSION_GETCURRENTDEVICESTATE=0x1ba
-[TRACE]TRACE_NORMAL[0x86]_CUSBSESSION_GETCURRENTPERSONALITYID=0x1bb
-[TRACE]TRACE_NORMAL[0x86]_CUSBSESSION_GETCURRENTSERVICESTATE=0x1b9
-[TRACE]TRACE_NORMAL[0x86]_CUSBSESSION_GETMANUFACTURERSTRINGDESCRIPTOR=0x1a9
-[TRACE]TRACE_NORMAL[0x86]_CUSBSESSION_GETMANUFACTURERSTRINGDESCRIPTOR_DUP1=0x1db
-[TRACE]TRACE_NORMAL[0x86]_CUSBSESSION_GETOTGDESCRIPTOR=0x1ab
-[TRACE]TRACE_NORMAL[0x86]_CUSBSESSION_GETPERSONALITYIDS=0x1b8
-[TRACE]TRACE_NORMAL[0x86]_CUSBSESSION_GETPRODUCTSTRINGDESCRIPTOR=0x1aa
-[TRACE]TRACE_NORMAL[0x86]_CUSBSESSION_GETPRODUCTSTRINGDESCRIPTOR_DUP1=0x1dc
-[TRACE]TRACE_NORMAL[0x86]_CUSBSESSION_GETSUPPORTEDCLASSES=0x1bc
-[TRACE]TRACE_NORMAL[0x86]_CUSBSESSION_GETSUPPORTEDCLASSES_DUP1=0x1be
-[TRACE]TRACE_NORMAL[0x86]_CUSBSESSION_GETSUPPORTEDCLASSES_DUP2=0x1d9
-[TRACE]TRACE_NORMAL[0x86]_CUSBSESSION_GETSUPPORTEDLANGUAGESL=0x1a6
-[TRACE]TRACE_NORMAL[0x86]_CUSBSESSION_GETSUPPORTEDLANGUAGESL_DUP1=0x1a7
-[TRACE]TRACE_NORMAL[0x86]_CUSBSESSION_GETSUPPORTEDLANGUAGESL_DUP2=0x1a8
-[TRACE]TRACE_NORMAL[0x86]_CUSBSESSION_HANDLESERVICESTATECHANGEWHILESTARTING=0x1cb
-[TRACE]TRACE_NORMAL[0x86]_CUSBSESSION_HANDLESERVICESTATECHANGEWHILESTARTING_DUP1=0x1cc
-[TRACE]TRACE_NORMAL[0x86]_CUSBSESSION_HANDLESERVICESTATECHANGEWHILESTARTING_DUP2=0x1cd
-[TRACE]TRACE_NORMAL[0x86]_CUSBSESSION_HANDLESERVICESTATECHANGEWHILESTARTING_DUP3=0x1ce
-[TRACE]TRACE_NORMAL[0x86]_CUSBSESSION_HANDLESERVICESTATECHANGEWHILESTOPPING=0x1c4
-[TRACE]TRACE_NORMAL[0x86]_CUSBSESSION_HANDLESERVICESTATECHANGEWHILESTOPPING_DUP1=0x1c5
-[TRACE]TRACE_NORMAL[0x86]_CUSBSESSION_HANDLESERVICESTATECHANGEWHILESTOPPING_DUP2=0x1c6
-[TRACE]TRACE_NORMAL[0x86]_CUSBSESSION_HANDLESERVICESTATECHANGEWHILESTOPPING_DUP3=0x1c7
-[TRACE]TRACE_NORMAL[0x86]_CUSBSESSION_REGISTERDEVICEOBSERVER=0x1c3
-[TRACE]TRACE_NORMAL[0x86]_CUSBSESSION_REGISTERHOSTOBSERVER=0x1ac
-[TRACE]TRACE_NORMAL[0x86]_CUSBSESSION_REGISTERMSGOBSERVER=0x1af
-[TRACE]TRACE_NORMAL[0x86]_CUSBSESSION_SETCTLSESSIONMODE=0x1b7
-[TRACE]TRACE_NORMAL[0x86]_CUSBSESSION_USBDEVICEDEQUEUEEVENT=0x1c1
-[TRACE]TRACE_NORMAL[0x86]_CUSBSESSION_USBDEVICESTATECHANGE=0x1bf
-[TRACE]TRACE_NORMAL[0x86]_CUSBSESSION_USBDEVICESTATECHANGE_DUP1=0x1c0
-[TRACE]TRACE_NORMAL[0x86]_CUSBSESSION_USBHOSTEVENT=0x1b1
-[TRACE]TRACE_NORMAL[0x86]_CUSBSESSION_USBHOSTEVENTDEQUEUE=0x1b5
-[TRACE]TRACE_NORMAL[0x86]_CUSBSESSION_USBHOSTEVENTDEQUEUE_DUP1=0x1b6
-[TRACE]TRACE_NORMAL[0x86]_CUSBSESSION_USBHOSTEVENT_DUP1=0x1b2
-[TRACE]TRACE_NORMAL[0x86]_CUSBSESSION_USBHOSTEVENT_DUP2=0x1b3
-[TRACE]TRACE_NORMAL[0x86]_CUSBSESSION_USBMSGDEQUEUE=0x1b4
-[TRACE]TRACE_NORMAL[0x86]_CUSBSESSION_USBOTGHOSTMESSAGE=0x1b0
-[TRACE]TRACE_NORMAL[0x86]_CUSBSESSION_USBSERVICESTATECHANGE=0x1d8
-[TRACE]TRACE_NORMAL[0x86]_DUP1_CUSBMANCENREPMANAGER_ISFEATURESUPPORTEDL_DUP1=0x3de
-[TRACE]TRACE_NORMAL[0x86]_DUP2_CUSBMANCENREPMANAGER_READPERSONALITIESL_DUP2=0x3d5
-[TRACE]TRACE_NORMAL[0x86]_USBSVR_RUNSERVERL=0x2ed
-[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_CUSBDEVICE_READPERSONALITIESL_DUP10=0x12
-[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_CUSBDEVICE_READPERSONALITIESL_DUP11=0x13
-[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_CUSBDEVICE_READPERSONALITIESL_DUP12=0x14
-[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_CUSBDEVICE_READPERSONALITIESL_DUP13=0x15
-[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_CUSBDEVICE_READPERSONALITIESL_DUP14=0x16
-[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_CUSBDEVICE_READPERSONALITIESL_DUP15=0x17
-[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_CUSBDEVICE_READPERSONALITIESL_DUP16=0x18
-[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_CUSBDEVICE_READPERSONALITIESL_DUP17=0x19
-[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_CUSBDEVICE_READPERSONALITIESL_DUP18=0x1a
-[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_CUSBDEVICE_READPERSONALITIESL_DUP19=0x1b
-[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_CUSBDEVICE_READPERSONALITIESL_DUP20=0x1c
-[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_CUSBDEVICE_READPERSONALITIESL_DUP21=0x1d
-[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_CUSBDEVICE_READPERSONALITIESL_DUP7=0xf
-[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_CUSBDEVICE_READPERSONALITIESL_DUP8=0x10
-[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_CUSBDEVICE_READPERSONALITIESL_DUP9=0x11
-[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_DUP1_CUSBSESSION_GETMANUFACTURERSTRINGDESCRIPTOR=0x1
+[TRACE]TRACE_NORMAL[0x86]_CUSBOTGCONNECTIONIDLEWATCHER_POST=0x440
+[TRACE]TRACE_NORMAL[0x86]_CUSBOTGCONNECTIONIDLEWATCHER_POST_DUP1=0x441
+[TRACE]TRACE_NORMAL[0x86]_CUSBOTGCONNECTIONIDLEWATCHER_POST_DUP2=0x442
+[TRACE]TRACE_NORMAL[0x86]_CUSBOTGCONNECTIONIDLEWATCHER_POST_DUP3=0x443
+[TRACE]TRACE_NORMAL[0x86]_CUSBOTGCONNECTIONIDLEWATCHER_RUNL=0x43e
+[TRACE]TRACE_NORMAL[0x86]_CUSBOTGCONNECTIONIDLEWATCHER_RUNL_DUP1=0x43f
+[TRACE]TRACE_NORMAL[0x86]_CUSBOTGEVENTWATCHER_LOGEVENTTEXT=0x42e
+[TRACE]TRACE_NORMAL[0x86]_CUSBOTGEVENTWATCHER_LOGEVENTTEXT_DUP1=0x42f
+[TRACE]TRACE_NORMAL[0x86]_CUSBOTGEVENTWATCHER_LOGEVENTTEXT_DUP10=0x438
+[TRACE]TRACE_NORMAL[0x86]_CUSBOTGEVENTWATCHER_LOGEVENTTEXT_DUP2=0x430
+[TRACE]TRACE_NORMAL[0x86]_CUSBOTGEVENTWATCHER_LOGEVENTTEXT_DUP3=0x431
+[TRACE]TRACE_NORMAL[0x86]_CUSBOTGEVENTWATCHER_LOGEVENTTEXT_DUP4=0x432
+[TRACE]TRACE_NORMAL[0x86]_CUSBOTGEVENTWATCHER_LOGEVENTTEXT_DUP5=0x433
+[TRACE]TRACE_NORMAL[0x86]_CUSBOTGEVENTWATCHER_LOGEVENTTEXT_DUP6=0x434
+[TRACE]TRACE_NORMAL[0x86]_CUSBOTGEVENTWATCHER_LOGEVENTTEXT_DUP7=0x435
+[TRACE]TRACE_NORMAL[0x86]_CUSBOTGEVENTWATCHER_LOGEVENTTEXT_DUP8=0x436
+[TRACE]TRACE_NORMAL[0x86]_CUSBOTGEVENTWATCHER_LOGEVENTTEXT_DUP9=0x437
+[TRACE]TRACE_NORMAL[0x86]_CUSBOTGEVENTWATCHER_POST=0x439
+[TRACE]TRACE_NORMAL[0x86]_CUSBOTGEVENTWATCHER_RUNL=0x42a
+[TRACE]TRACE_NORMAL[0x86]_CUSBOTGEVENTWATCHER_RUNL_DUP1=0x42c
+[TRACE]TRACE_NORMAL[0x86]_CUSBOTGEVENTWATCHER_RUNL_DUP2=0x42d
+[TRACE]TRACE_NORMAL[0x86]_CUSBOTGEVENTWATCHER_RUNL_DUP3=0x42b
+[TRACE]TRACE_NORMAL[0x86]_CUSBOTGIDPINWATCHER_POST=0x417
+[TRACE]TRACE_NORMAL[0x86]_CUSBOTGIDPINWATCHER_POST_DUP1=0x418
+[TRACE]TRACE_NORMAL[0x86]_CUSBOTGIDPINWATCHER_POST_DUP2=0x419
+[TRACE]TRACE_NORMAL[0x86]_CUSBOTGIDPINWATCHER_POST_DUP3=0x41a
+[TRACE]TRACE_NORMAL[0x86]_CUSBOTGIDPINWATCHER_POST_DUP4=0x41b
+[TRACE]TRACE_NORMAL[0x86]_CUSBOTGIDPINWATCHER_POST_DUP5=0x41c
+[TRACE]TRACE_NORMAL[0x86]_CUSBOTGIDPINWATCHER_RUNL=0x415
+[TRACE]TRACE_NORMAL[0x86]_CUSBOTGIDPINWATCHER_RUNL_DUP1=0x416
+[TRACE]TRACE_NORMAL[0x86]_CUSBOTGSTATEWATCHER_POST=0x427
+[TRACE]TRACE_NORMAL[0x86]_CUSBOTGSTATEWATCHER_POST_DUP1=0x428
+[TRACE]TRACE_NORMAL[0x86]_CUSBOTGSTATEWATCHER_POST_DUP2=0x429
+[TRACE]TRACE_NORMAL[0x86]_CUSBOTGSTATEWATCHER_RUNL=0x425
+[TRACE]TRACE_NORMAL[0x86]_CUSBOTGSTATEWATCHER_RUNL_DUP1=0x426
+[TRACE]TRACE_NORMAL[0x86]_CUSBOTGVBUSWATCHER_POST=0x41f
+[TRACE]TRACE_NORMAL[0x86]_CUSBOTGVBUSWATCHER_POST_DUP1=0x420
+[TRACE]TRACE_NORMAL[0x86]_CUSBOTGVBUSWATCHER_POST_DUP2=0x421
+[TRACE]TRACE_NORMAL[0x86]_CUSBOTGVBUSWATCHER_POST_DUP3=0x422
+[TRACE]TRACE_NORMAL[0x86]_CUSBOTGVBUSWATCHER_POST_DUP4=0x423
+[TRACE]TRACE_NORMAL[0x86]_CUSBOTGVBUSWATCHER_POST_DUP5=0x424
+[TRACE]TRACE_NORMAL[0x86]_CUSBOTGVBUSWATCHER_RUNL=0x41d
+[TRACE]TRACE_NORMAL[0x86]_CUSBOTGVBUSWATCHER_RUNL_DUP1=0x41e
+[TRACE]TRACE_NORMAL[0x86]_CUSBOTGWATCHER_POST=0x43c
+[TRACE]TRACE_NORMAL[0x86]_CUSBOTGWATCHER_RUNL=0x43a
+[TRACE]TRACE_NORMAL[0x86]_CUSBOTGWATCHER_RUNL_DUP1=0x43b
+[TRACE]TRACE_NORMAL[0x86]_CUSBOTG_CONSTRUCTL=0x402
+[TRACE]TRACE_NORMAL[0x86]_CUSBOTG_CONSTRUCTL_DUP1=0x403
+[TRACE]TRACE_NORMAL[0x86]_CUSBOTG_CONSTRUCTL_DUP2=0x406
+[TRACE]TRACE_NORMAL[0x86]_CUSBOTG_CONSTRUCTL_DUP3=0x404
+[TRACE]TRACE_NORMAL[0x86]_CUSBOTG_CONSTRUCTL_DUP4=0x405
+[TRACE]TRACE_NORMAL[0x86]_CUSBOTG_CONSTRUCTL_DUP5=0x407
+[TRACE]TRACE_NORMAL[0x86]_CUSBOTG_CONSTRUCTL_DUP6=0x408
+[TRACE]TRACE_NORMAL[0x86]_CUSBOTG_CUSBOTG=0x3f3
+[TRACE]TRACE_NORMAL[0x86]_CUSBOTG_CUSBOTG_DUP1=0x3f4
+[TRACE]TRACE_NORMAL[0x86]_CUSBOTG_CUSBOTG_DUP10=0x3fd
+[TRACE]TRACE_NORMAL[0x86]_CUSBOTG_CUSBOTG_DUP11=0x3fe
+[TRACE]TRACE_NORMAL[0x86]_CUSBOTG_CUSBOTG_DUP12=0x3ff
+[TRACE]TRACE_NORMAL[0x86]_CUSBOTG_CUSBOTG_DUP13=0x400
+[TRACE]TRACE_NORMAL[0x86]_CUSBOTG_CUSBOTG_DUP14=0x401
+[TRACE]TRACE_NORMAL[0x86]_CUSBOTG_CUSBOTG_DUP2=0x3f5
+[TRACE]TRACE_NORMAL[0x86]_CUSBOTG_CUSBOTG_DUP3=0x3f6
+[TRACE]TRACE_NORMAL[0x86]_CUSBOTG_CUSBOTG_DUP4=0x3f7
+[TRACE]TRACE_NORMAL[0x86]_CUSBOTG_CUSBOTG_DUP5=0x3f8
+[TRACE]TRACE_NORMAL[0x86]_CUSBOTG_CUSBOTG_DUP6=0x3f9
+[TRACE]TRACE_NORMAL[0x86]_CUSBOTG_CUSBOTG_DUP7=0x3fa
+[TRACE]TRACE_NORMAL[0x86]_CUSBOTG_CUSBOTG_DUP8=0x3fb
+[TRACE]TRACE_NORMAL[0x86]_CUSBOTG_CUSBOTG_DUP9=0x3fc
+[TRACE]TRACE_NORMAL[0x86]_CUSBOTG_NOTIFYOTGEVENT=0x409
+[TRACE]TRACE_NORMAL[0x86]_CUSBOTG_REGISTEROBSERVERL=0x40a
+[TRACE]TRACE_NORMAL[0x86]_CUSBOTG_STOP=0x40b
+[TRACE]TRACE_NORMAL[0x86]_CUSBOTG_STOP_DUP1=0x40c
 [[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_CUSBDUMMYCLASSCONTROLLER_CONSTRUCTL=0x53
 [[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_CUSBDUMMYCLASSCONTROLLER_DOCANCEL=0x66
 [[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_CUSBDUMMYCLASSCONTROLLER_DOCANCEL_DUP1=0x67
@@ -551,113 +342,11 @@
 [[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_CUSBDUMMYCLASSCONTROLLER_STOP_DUP1=0x5e
 [[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_CUSBDUMMYCLASSCONTROLLER_STOP_DUP2=0x5f
 [[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_CUSBDUMMYCLASSCONTROLLER_STOP_DUP3=0x60
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CACTIVEUSBHOSTEVENTWATCHER_CACTIVEUSBHOSTEVENTWATCHER_CONS_ENTRY=0x598
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CACTIVEUSBHOSTEVENTWATCHER_CACTIVEUSBHOSTEVENTWATCHER_CONS_EXIT=0x599
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CACTIVEUSBHOSTEVENTWATCHER_CACTIVEUSBHOSTEVENTWATCHER_DES_ENTRY=0x59a
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CACTIVEUSBHOSTEVENTWATCHER_CACTIVEUSBHOSTEVENTWATCHER_DES_EXIT=0x59b
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CACTIVEUSBHOSTEVENTWATCHER_CACTIVEUSBHOSTEVENTWATCHER_ENTRY=0x3e2
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CACTIVEUSBHOSTEVENTWATCHER_CACTIVEUSBHOSTEVENTWATCHER_ENTRY_DUP1=0x3e4
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CACTIVEUSBHOSTEVENTWATCHER_CACTIVEUSBHOSTEVENTWATCHER_EXIT=0x3e3
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CACTIVEUSBHOSTEVENTWATCHER_CACTIVEUSBHOSTEVENTWATCHER_EXIT_DUP1=0x3e5
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CACTIVEUSBHOSTEVENTWATCHER_DOCANCEL_ENTRY=0x59e
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CACTIVEUSBHOSTEVENTWATCHER_DOCANCEL_EXIT=0x59f
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CACTIVEUSBHOSTEVENTWATCHER_POST_ENTRY=0x59c
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CACTIVEUSBHOSTEVENTWATCHER_POST_EXIT=0x59d
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CACTIVEUSBHOSTMESSAGEWATCHER_CACTIVEUSBHOSTMESSAGEWATCHER_CONS_ENTRY=0x5a2
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CACTIVEUSBHOSTMESSAGEWATCHER_CACTIVEUSBHOSTMESSAGEWATCHER_CONS_EXIT=0x5a3
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CACTIVEUSBHOSTMESSAGEWATCHER_CACTIVEUSBHOSTMESSAGEWATCHER_DES_ENTRY=0x5a0
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CACTIVEUSBHOSTMESSAGEWATCHER_CACTIVEUSBHOSTMESSAGEWATCHER_DES_EXIT=0x5a1
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CACTIVEUSBHOSTMESSAGEWATCHER_CACTIVEUSBHOSTMESSAGEWATCHER_ENTRY=0x3ea
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CACTIVEUSBHOSTMESSAGEWATCHER_CACTIVEUSBHOSTMESSAGEWATCHER_ENTRY_DUP1=0x3ec
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CACTIVEUSBHOSTMESSAGEWATCHER_CACTIVEUSBHOSTMESSAGEWATCHER_EXIT=0x3eb
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CACTIVEUSBHOSTMESSAGEWATCHER_CACTIVEUSBHOSTMESSAGEWATCHER_EXIT_DUP1=0x3ed
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CACTIVEUSBHOSTMESSAGEWATCHER_DOCANCEL_ENTRY=0x5a6
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CACTIVEUSBHOSTMESSAGEWATCHER_DOCANCEL_EXIT=0x5a7
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CACTIVEUSBHOSTMESSAGEWATCHER_POST_ENTRY=0x5a4
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CACTIVEUSBHOSTMESSAGEWATCHER_POST_EXIT=0x5a5
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CACTIVEUSBHOSTWATCHER_CACTIVEUSBHOSTWATCHER_CONS_ENTRY=0x592
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CACTIVEUSBHOSTWATCHER_CACTIVEUSBHOSTWATCHER_CONS_EXIT=0x593
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CACTIVEUSBHOSTWATCHER_CACTIVEUSBHOSTWATCHER_DES_ENTRY=0x594
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CACTIVEUSBHOSTWATCHER_CACTIVEUSBHOSTWATCHER_DES_EXIT=0x595
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CACTIVEUSBHOSTWATCHER_CACTIVEUSBHOSTWATCHER_ENTRY=0x2ee
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CACTIVEUSBHOSTWATCHER_CACTIVEUSBHOSTWATCHER_ENTRY_DUP1=0x2f0
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CACTIVEUSBHOSTWATCHER_CACTIVEUSBHOSTWATCHER_EXIT=0x2ef
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CACTIVEUSBHOSTWATCHER_CACTIVEUSBHOSTWATCHER_EXIT_DUP1=0x2f1
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CACTIVEUSBHOSTWATCHER_RUNL_ENTRY=0x596
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CACTIVEUSBHOSTWATCHER_RUNL_EXIT=0x597
 [[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CINIFILE_CINIFILE_CONS_ENTRY=0x549
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CINIFILE_CINIFILE_ENTRY=0x2a5
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CINIFILE_NEWL_ENTRY=0x3a6
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CINIFILE_NEWL_ENTRY_DUP1=0x3a8
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CINIFILE_NEWL_ENTRY_DUP1_EXIT=0x2a9
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CINIFILE_NEWL_EXIT=0x3a7
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CINIFILE_NEWL_EXIT_DUP1=0x3a9
 [[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CINIFILE_NEWL_TDESC_ENTRY=0x54a
 [[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CINIFILE_NEWL_TDESC_EXIT=0x54b
 [[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CINIFILE_NEWL_TDESC_TDESC_ENTRY=0x54c
 [[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CINIFILE_NEWL_TDESC_TDESC_EXIT=0x54d
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CPERSONALITY_CPERSONALITY_ENTRY=0x5
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CPERSONALITY_CPERSONALITY_EXIT=0x6
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CREQUESTSESSIONWATCHER_CONSTRUCTL_ENTRY=0x5f4
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CREQUESTSESSIONWATCHER_CONSTRUCTL_EXIT=0x5f5
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CREQUESTSESSIONWATCHER_CREQUESTSESSIONWATCHER_CONS_ENTRY=0x5f6
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CREQUESTSESSIONWATCHER_CREQUESTSESSIONWATCHER_CONS_EXIT=0x5f7
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CREQUESTSESSIONWATCHER_CREQUESTSESSIONWATCHER_ENTRY=0x352
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CREQUESTSESSIONWATCHER_CREQUESTSESSIONWATCHER_EXIT=0x353
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CREQUESTSESSIONWATCHER_DOCANCEL_ENTRY=0x5fa
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CREQUESTSESSIONWATCHER_DOCANCEL_EXIT=0x5fb
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CREQUESTSESSIONWATCHER_RUNL_ENTRY=0x5f8
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CREQUESTSESSIONWATCHER_RUNL_EXIT=0x5f9
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_ADDCLASSCONTROLLERL_ENTRY=0x84
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_ADDCLASSCONTROLLERL_EXIT=0x85
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_BUSENUMERATIONCOMPLETED_ENTRY=0x92
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_BUSENUMERATIONCOMPLETED_EXIT=0x93
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_CONSTRUCTL_ENTRY=0x7d
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_CONSTRUCTL_EXIT=0x7e
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_CUSBDEVICE_ENTRY=0x122
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_CUSBDEVICE_EXIT=0x123
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_DEREGISTEROBSERVER_ENTRY=0x88
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_DEREGISTEROBSERVER_EXIT=0x89
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_DOCANCEL_ENTRY=0x9c
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_DOCANCEL_EXIT=0x9d
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_ENUMERATECLASSCONTROLLERSL_ENTRY=0x82
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_ENUMERATECLASSCONTROLLERSL_EXIT=0x83
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_INSTANTIATEEXTENSIONPLUGINSL=0x80
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_INSTANTIATEEXTENSIONPLUGINSL_ENTRY=0x7f
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_INSTANTIATEEXTENSIONPLUGINSL_EXIT=0x81
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_NEWL_ENTRY=0x79
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_NEWL_EXIT=0x7a
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_POWERUPANDCONNECT_ENTRY=0x98
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_POWERUPANDCONNECT_EXIT=0x99
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_READPERSONALITIESL_ENTRY=0x214
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_READPERSONALITIESL_EXIT=0x215
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_READPERSONALITIESL_EXIT_DUP1=0x369
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_READPERSONALITIESL_EXIT_DUP2=0x21b
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_REGISTEROBSERVERL_ENTRY=0x86
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_REGISTEROBSERVERL_EXIT=0x87
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_RESOURCEFILENAMEL_ENTRY=0x201
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_RESOURCEFILENAMEL_EXIT=0x202
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_RUNL_ENTRY=0x9a
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_RUNL_EXIT=0x9b
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_SETDEVICESTATE_ENTRY=0x90
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_SETDEVICESTATE_EXIT=0x91
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_SETSERVICESTATE_ENTRY=0x8e
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_SETSERVICESTATE_EXIT=0x8f
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_SETUSBDEVICESETTINGSFROMPERSONALITYL_EXIT=0x204
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_SETUSBDEVICESETTINGSL_ENTRY=0x1fe
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_SETUSBDEVICESETTINGSL_EXIT=0x1ff
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_SETUSBDEVICESETTINGSL_EXIT_DUP1=0x200
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_STARTCURRENTCLASSCONTROLLER_ENTRY=0x94
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_STARTCURRENTCLASSCONTROLLER_EXIT=0x95
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_STARTL_ENTRY=0x8a
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_STARTL_EXIT=0x8b
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_STOPCURRENTCLASSCONTROLLER_ENTRY=0x96
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_STOPCURRENTCLASSCONTROLLER_EXIT=0x97
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_STOP_ENTRY=0x8c
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_STOP_EXIT=0x8d
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_UCCNERROR_ENTRY=0x9f
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_UCCNERROR_EXIT=0xa0
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_UCCNGETCLASSCONTROLLERITERATORL_ENTRY=0x9e
 [[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBDUMMYCLASSCONTROLLER_DOCANCEL_ENTRY=0x55e
 [[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBDUMMYCLASSCONTROLLER_DOCANCEL_EXIT=0x55f
 [[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBDUMMYCLASSCONTROLLER_DOGETCONFIGL_ENTRY=0x554
@@ -666,10 +355,6 @@
 [[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBDUMMYCLASSCONTROLLER_GETBEHAVIOUR_EXIT=0x553
 [[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBDUMMYCLASSCONTROLLER_GETCONFIG_ENTRY=0x556
 [[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBDUMMYCLASSCONTROLLER_GETCONFIG_EXIT=0x557
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBDUMMYCLASSCONTROLLER_NEWL_ENTRY=0x456
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBDUMMYCLASSCONTROLLER_NEWL_ENTRY_DUP1=0x458
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBDUMMYCLASSCONTROLLER_NEWL_EXIT=0x457
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBDUMMYCLASSCONTROLLER_NEWL_EXIT_DUP1=0x459
 [[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBDUMMYCLASSCONTROLLER_NEWL_MUSBCLASSCONTROLLERNOTIFY_TUINT_ENTRY=0x54e
 [[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBDUMMYCLASSCONTROLLER_NEWL_MUSBCLASSCONTROLLERNOTIFY_TUINT_EXIT=0x54f
 [[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBDUMMYCLASSCONTROLLER_NEWL_MUSBCLASSCONTROLLERNOTIFY_TUINT_TINT_ENTRY=0x550
@@ -680,297 +365,20 @@
 [[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBDUMMYCLASSCONTROLLER_START_EXIT=0x559
 [[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBDUMMYCLASSCONTROLLER_STOP_ENTRY=0x55a
 [[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBDUMMYCLASSCONTROLLER_STOP_EXIT=0x55b
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBHOST_CONSTRUCTL_ENTRY=0x578
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBHOST_CONSTRUCTL_EXIT=0x579
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBHOST_CUSBHOST_CONS_ENTRY=0x576
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBHOST_CUSBHOST_CONS_EXIT=0x577
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBHOST_CUSBHOST_DES_ENTRY=0x574
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBHOST_CUSBHOST_DES_EXIT=0x575
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBHOST_CUSBHOST_ENTRY=0x2d0
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBHOST_CUSBHOST_ENTRY_DUP1=0x2d2
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBHOST_CUSBHOST_EXIT=0x2d1
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBHOST_CUSBHOST_EXIT_DUP1=0x2d3
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBHOST_DEREGISTEROBSERVER_ENTRY=0x580
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBHOST_DEREGISTEROBSERVER_EXIT=0x581
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBHOST_DISABLEDRIVERLOADING_ENTRY=0x590
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBHOST_DISABLEDRIVERLOADING_EXIT=0x591
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBHOST_ENABLEDRIVERLOADING_ENTRY=0x58e
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBHOST_ENABLEDRIVERLOADING_EXIT=0x58f
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBHOST_GETMANUFACTURERSTRINGDESCRIPTOR_ENTRY=0x584
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBHOST_GETMANUFACTURERSTRINGDESCRIPTOR_EXIT=0x585
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBHOST_GETOTGDESCRIPTOR_ENTRY=0x588
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBHOST_GETOTGDESCRIPTOR_EXIT=0x589
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBHOST_GETPRODUCTSTRINGDESCRIPTOR_ENTRY=0x586
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBHOST_GETPRODUCTSTRINGDESCRIPTOR_EXIT=0x587
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBHOST_GETSUPPORTEDLANGUAGES_ENTRY=0x582
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBHOST_GETSUPPORTEDLANGUAGES_EXIT=0x583
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBHOST_NOTIFYHOSTEVENT_ENTRY=0x58a
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBHOST_NOTIFYHOSTEVENT_EXIT=0x58b
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBHOST_REGISTEROBSERVERL_ENTRY=0x57e
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBHOST_REGISTEROBSERVERL_EXIT=0x57f
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBHOST_STARTL_ENTRY=0x57a
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBHOST_STARTL_EXIT=0x57b
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBHOST_STOP_ENTRY=0x57c
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBHOST_STOP_EXIT=0x57d
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBHOST_UPDATENUMOFOBSERVERS_ENTRY=0x58c
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBHOST_UPDATENUMOFOBSERVERS_EXIT=0x58d
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTGBASEWATCHER_CUSBOTGBASEWATCHER_CONS_ENTRY=0x5a8
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTGBASEWATCHER_CUSBOTGBASEWATCHER_CONS_EXIT=0x5a9
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTGBASEWATCHER_CUSBOTGBASEWATCHER_DES_ENTRY=0x5aa
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTGBASEWATCHER_CUSBOTGBASEWATCHER_DES_EXIT=0x5ab
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTGBASEWATCHER_CUSBOTGBASEWATCHER_ENTRY=0x304
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTGBASEWATCHER_CUSBOTGBASEWATCHER_ENTRY_DUP1=0x306
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTGBASEWATCHER_CUSBOTGBASEWATCHER_EXIT=0x305
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTGBASEWATCHER_CUSBOTGBASEWATCHER_EXIT_DUP1=0x307
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTGBASEWATCHER_START_ENTRY=0x5ac
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTGBASEWATCHER_START_EXIT=0x5ad
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTGCONNECTIONIDLEWATCHER_CONSTRUCTL_ENTRY=0x600
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTGCONNECTIONIDLEWATCHER_CONSTRUCTL_EXIT=0x601
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTGCONNECTIONIDLEWATCHER_CUSBOTGCONNECTIONIDLEWATCHER_CONS_ENTRY=0x602
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTGCONNECTIONIDLEWATCHER_CUSBOTGCONNECTIONIDLEWATCHER_CONS_EXIT=0x603
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTGCONNECTIONIDLEWATCHER_CUSBOTGCONNECTIONIDLEWATCHER_DES_ENTRY=0x5fe
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTGCONNECTIONIDLEWATCHER_CUSBOTGCONNECTIONIDLEWATCHER_DES_EXIT=0x5ff
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTGCONNECTIONIDLEWATCHER_CUSBOTGCONNECTIONIDLEWATCHER_ENTRY=0x35a
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTGCONNECTIONIDLEWATCHER_CUSBOTGCONNECTIONIDLEWATCHER_ENTRY_DUP1=0x35e
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTGCONNECTIONIDLEWATCHER_CUSBOTGCONNECTIONIDLEWATCHER_EXIT=0x35b
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTGCONNECTIONIDLEWATCHER_CUSBOTGCONNECTIONIDLEWATCHER_EXIT_DUP1=0x35f
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTGCONNECTIONIDLEWATCHER_DOCANCEL_ENTRY=0x606
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTGCONNECTIONIDLEWATCHER_DOCANCEL_EXIT=0x607
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTGCONNECTIONIDLEWATCHER_NEWL_ENTRY=0x5fc
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTGCONNECTIONIDLEWATCHER_NEWL_EXIT=0x5fd
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTGCONNECTIONIDLEWATCHER_POST_ENTRY=0x608
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTGCONNECTIONIDLEWATCHER_POST_EXIT=0x609
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTGCONNECTIONIDLEWATCHER_RUNL_ENTRY=0x604
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTGCONNECTIONIDLEWATCHER_RUNL_EXIT=0x605
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTGEVENTWATCHER_CONSTRUCTL_ENTRY=0x5dc
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTGEVENTWATCHER_CONSTRUCTL_EXIT=0x5dd
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTGEVENTWATCHER_CUSBOTGEVENTWATCHER_CONS_ENTRY=0x5de
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTGEVENTWATCHER_CUSBOTGEVENTWATCHER_CONS_EXIT=0x5df
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTGEVENTWATCHER_CUSBOTGEVENTWATCHER_DES_ENTRY=0x5da
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTGEVENTWATCHER_CUSBOTGEVENTWATCHER_DES_EXIT=0x5db
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTGEVENTWATCHER_CUSBOTGEVENTWATCHER_ENTRY=0x336
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTGEVENTWATCHER_CUSBOTGEVENTWATCHER_ENTRY_DUP1=0x33a
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTGEVENTWATCHER_CUSBOTGEVENTWATCHER_EXIT=0x337
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTGEVENTWATCHER_CUSBOTGEVENTWATCHER_EXIT_DUP1=0x33b
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTGEVENTWATCHER_DOCANCEL_ENTRY=0x5e2
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTGEVENTWATCHER_DOCANCEL_EXIT=0x5e3
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTGEVENTWATCHER_NEWL_ENTRY=0x5d8
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTGEVENTWATCHER_NEWL_EXIT=0x5d9
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTGEVENTWATCHER_POST_ENTRY=0x5e4
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTGEVENTWATCHER_POST_EXIT=0x5e5
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTGEVENTWATCHER_RUNL_ENTRY=0x5e0
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTGEVENTWATCHER_RUNL_EXIT=0x5e1
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTGIDPINWATCHER_CONSTRUCTL_ENTRY=0x5b2
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTGIDPINWATCHER_CONSTRUCTL_EXIT=0x5b3
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTGIDPINWATCHER_CUSBOTGIDPINWATCHER_CONS_ENTRY=0x5b4
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTGIDPINWATCHER_CUSBOTGIDPINWATCHER_CONS_EXIT=0x5b5
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTGIDPINWATCHER_CUSBOTGIDPINWATCHER_DES_ENTRY=0x5b0
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTGIDPINWATCHER_CUSBOTGIDPINWATCHER_DES_EXIT=0x5b1
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTGIDPINWATCHER_CUSBOTGIDPINWATCHER_ENTRY=0x30c
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTGIDPINWATCHER_CUSBOTGIDPINWATCHER_ENTRY_DUP1=0x310
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTGIDPINWATCHER_CUSBOTGIDPINWATCHER_EXIT=0x30d
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTGIDPINWATCHER_CUSBOTGIDPINWATCHER_EXIT_DUP1=0x311
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTGIDPINWATCHER_DOCANCEL_ENTRY=0x5b8
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTGIDPINWATCHER_DOCANCEL_EXIT=0x5b9
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTGIDPINWATCHER_NEWL_ENTRY=0x5ae
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTGIDPINWATCHER_NEWL_EXIT=0x5af
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTGIDPINWATCHER_POST_ENTRY=0x5ba
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTGIDPINWATCHER_POST_EXIT=0x5bb
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTGIDPINWATCHER_RUNL_ENTRY=0x5b6
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTGIDPINWATCHER_RUNL_EXIT=0x5b7
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTGSTATEWATCHER_CONSTRUCTL_ENTRY=0x5ce
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTGSTATEWATCHER_CONSTRUCTL_EXIT=0x5cf
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTGSTATEWATCHER_CUSBOTGSTATEWATCHER_CONS_ENTRY=0x5d0
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTGSTATEWATCHER_CUSBOTGSTATEWATCHER_CONS_EXIT=0x5d1
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTGSTATEWATCHER_CUSBOTGSTATEWATCHER_DES_ENTRY=0x5cc
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTGSTATEWATCHER_CUSBOTGSTATEWATCHER_DES_EXIT=0x5cd
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTGSTATEWATCHER_CUSBOTGSTATEWATCHER_ENTRY=0x328
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTGSTATEWATCHER_CUSBOTGSTATEWATCHER_EXIT=0x329
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTGSTATEWATCHER_DOCANCEL_ENTRY=0x5d4
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTGSTATEWATCHER_DOCANCEL_EXIT=0x5d5
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTGSTATEWATCHER_NEWL_ENTRY=0x5ca
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTGSTATEWATCHER_NEWL_EXIT=0x5cb
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTGSTATEWATCHER_POST_ENTRY=0x5d6
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTGSTATEWATCHER_POST_EXIT=0x5d7
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTGSTATEWATCHER_RUNL_ENTRY=0x5d2
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTGSTATEWATCHER_RUNL_EXIT=0x5d3
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTGVBUSWATCHER_CONSTRUCTL_ENTRY=0x5c0
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTGVBUSWATCHER_CONSTRUCTL_EXIT=0x5c1
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTGVBUSWATCHER_CUSBOTGVBUSWATCHER_CONS_ENTRY=0x5c2
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTGVBUSWATCHER_CUSBOTGVBUSWATCHER_CONS_EXIT=0x5c3
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTGVBUSWATCHER_CUSBOTGVBUSWATCHER_DES_ENTRY=0x5be
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTGVBUSWATCHER_CUSBOTGVBUSWATCHER_DES_EXIT=0x5bf
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTGVBUSWATCHER_CUSBOTGVBUSWATCHER_ENTRY=0x31a
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTGVBUSWATCHER_CUSBOTGVBUSWATCHER_ENTRY_DUP1=0x31e
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTGVBUSWATCHER_CUSBOTGVBUSWATCHER_EXIT=0x31b
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTGVBUSWATCHER_CUSBOTGVBUSWATCHER_EXIT_DUP1=0x31f
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTGVBUSWATCHER_DOCANCEL_ENTRY=0x5c6
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTGVBUSWATCHER_DOCANCEL_EXIT=0x5c7
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTGVBUSWATCHER_NEWL_ENTRY=0x5bc
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTGVBUSWATCHER_NEWL_EXIT=0x5bd
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTGVBUSWATCHER_POST_ENTRY=0x5c8
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTGVBUSWATCHER_POST_EXIT=0x5c9
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTGVBUSWATCHER_RUNL_ENTRY=0x5c4
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTGVBUSWATCHER_RUNL_EXIT=0x5c5
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTGWATCHER_CUSBOTGWATCHER_CONS_ENTRY=0x5e9
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTGWATCHER_CUSBOTGWATCHER_CONS_EXIT=0x5ea
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTGWATCHER_CUSBOTGWATCHER_DES_ENTRY=0x5e8
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTGWATCHER_CUSBOTGWATCHER_ENTRY=0x344
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTGWATCHER_CUSBOTGWATCHER_ENTRY_DUP1=0x345
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTGWATCHER_CUSBOTGWATCHER_EXIT_DUP1=0x346
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTGWATCHER_DOCANCEL_ENTRY=0x5ee
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTGWATCHER_DOCANCEL_EXIT=0x5ef
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTGWATCHER_NEWL_ENTRY=0x5e6
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTGWATCHER_NEWL_EXIT=0x5e7
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTGWATCHER_POST_ENTRY=0x5f2
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTGWATCHER_POST_EXIT=0x5f3
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTGWATCHER_RUNL_ENTRY=0x5eb
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTGWATCHER_RUNL_EXIT=0x5ec
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTGWATCHER_RUNL_EXIT_DUP1=0x5ed
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTGWATCHER_START_ENTRY=0x5f0
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTGWATCHER_START_EXIT=0x5f1
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTG_BUSCLEARERROR_ENTRY=0x572
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTG_BUSDROP_ENTRY=0x573
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTG_BUSREQUEST_ENTRY=0x570
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTG_BUSRESPONDSRP_ENTRY=0x571
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTG_CONSTRUCTL_ENTRY=0x566
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTG_CONSTRUCTL_EXIT=0x567
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTG_CUSBOTG_CONS_ENTRY=0x564
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTG_CUSBOTG_CONS_EXIT=0x565
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTG_CUSBOTG_DES_ENTRY=0x562
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTG_CUSBOTG_DES_EXIT=0x563
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTG_CUSBOTG_ENTRY=0x2be
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTG_CUSBOTG_ENTRY_DUP1=0x2c0
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTG_CUSBOTG_ENTRY_DUP1_EXIT=0x2c1
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTG_CUSBOTG_EXIT=0x2bf
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTG_DEREGISTEROBSERVER_ENTRY=0x56a
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTG_DEREGISTEROBSERVER_EXIT=0x56b
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTG_NEWL_ENTRY=0x560
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTG_NEWL_EXIT=0x561
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTG_REGISTEROBSERVERL_ENTRY=0x568
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTG_REGISTEROBSERVERL_EXIT=0x569
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTG_STARTL_ENTRY=0x56c
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTG_STARTL_EXIT=0x56d
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTG_STOP_ENTRY=0x56e
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTG_STOP_EXIT=0x56f
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBSERVER_CUSBSERVER_ENTRY=0x15e
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBSERVER_CUSBSERVER_EXIT=0x15f
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_GETDETAILEDDESCRIPTION_ENTRY=0x26e
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_GETDETAILEDDESCRIPTION_EXIT=0x26f
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_GETDETAILEDDESCRIPTION_EXIT_DUP1=0x270
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_GETDETAILEDDESCRIPTION_EXIT_DUP2=0x271
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_GETPERSONALITYPROPERTY_EXIT_DUP1=0x274
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_DUP1_CUSBDEVICE_GETPERSONALITY_EXIT=0x20b
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_DUP1_CUSBDEVICE_READPERSONALITIESL_EXIT=0x216
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_DUP1_CUSBOTGSTATEWATCHER_CUSBOTGSTATEWATCHER_ENTRY=0x32c
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_DUP1_CUSBOTGSTATEWATCHER_CUSBOTGSTATEWATCHER_EXIT=0x32d
-[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_DUP2_CUSBDEVICE_READPERSONALITIESL_EXIT=0x217
 [[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CINIFILE_CONSTRUCTL=0x361
 [[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CINIFILE_CONSTRUCTL_DUP1=0x362
 [[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CINIFILE_CONSTRUCTL_DUP2=0x363
 [[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CINIFILE_CONSTRUCTL_DUP3=0x364
 [[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CINIFILE_CONSTRUCTL_DUP4=0x365
 [[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CINIFILE_PANIC=0x360
-[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CREQUESTSESSIONWATCHER_RUNL=0x3bd
-[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CREQUESTSESSIONWATCHER_RUNL_DUP1=0x34c
-[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_BUSENUMERATIONCOMPLETED=0x52
-[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_BUSENUMERATIONFAILED=0x53
-[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_BUSENUMERATIONFAILED_DUP1=0x54
-[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_CONSTRUCTL=0x46
-[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_CONSTRUCTL_DUP1=0xc0
-[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_CONSTRUCTL_DUP2=0x48
-[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_CONSTRUCTL_DUP3=0x49
-[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_CONSTRUCTL_DUP4=0x4a
-[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_CONSTRUCTL_DUP5=0x4b
-[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_CONSTRUCTL_DUP6=0x4c
-[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_CONSTRUCTL_DUP7=0x4d
-[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_CONSTRUCTL_DUP8=0x4e
-[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_CONVERTUIDSL=0x18b
-[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_CUSBDEVICE=0x42
-[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_CUSBDEVICE_DUP1=0x43
-[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_CUSBDEVICE_DUP2=0x44
-[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_CUSBDEVICE_DUP3=0x45
-[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_DOCANCEL=0x17d
-[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_INSTANTIATEEXTENSIONPLUGINSL_DUP1=0x4f
-[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_POWERUPANDCONNECT=0x55
-[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_POWERUPANDCONNECT_DUP1=0x56
-[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_POWERUPANDCONNECT_DUP2=0x57
-[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_PRINTDESCRIPTOR=0xd6
-[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_PRINTDESCRIPTOR_DUP1=0x13a
-[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_PRINTDESCRIPTOR_DUP10=0x143
-[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_PRINTDESCRIPTOR_DUP11=0x144
-[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_PRINTDESCRIPTOR_DUP12=0x145
-[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_PRINTDESCRIPTOR_DUP2=0x13b
-[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_PRINTDESCRIPTOR_DUP3=0x13c
-[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_PRINTDESCRIPTOR_DUP4=0x13d
-[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_PRINTDESCRIPTOR_DUP5=0x13e
-[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_PRINTDESCRIPTOR_DUP6=0x13f
-[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_PRINTDESCRIPTOR_DUP7=0x140
-[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_PRINTDESCRIPTOR_DUP8=0x141
-[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_PRINTDESCRIPTOR_DUP9=0x142
-[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_READPERSONALITIESL=0x156
-[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_READPERSONALITIESL_DUP1=0x159
-[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_READPERSONALITIESL_DUP10=0x162
-[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_READPERSONALITIESL_DUP11=0x163
-[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_READPERSONALITIESL_DUP12=0x164
-[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_READPERSONALITIESL_DUP13=0x165
-[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_READPERSONALITIESL_DUP14=0x166
-[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_READPERSONALITIESL_DUP15=0x167
-[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_READPERSONALITIESL_DUP16=0x168
-[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_READPERSONALITIESL_DUP17=0x169
-[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_READPERSONALITIESL_DUP18=0x16a
-[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_READPERSONALITIESL_DUP19=0x16b
-[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_READPERSONALITIESL_DUP2=0x15a
-[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_READPERSONALITIESL_DUP20=0x16c
-[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_READPERSONALITIESL_DUP21=0x16d
-[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_READPERSONALITIESL_DUP22=0x1a2
-[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_READPERSONALITIESL_DUP23=0x1a3
-[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_READPERSONALITIESL_DUP24=0x1a4
-[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_READPERSONALITIESL_DUP3=0x15b
-[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_READPERSONALITIESL_DUP4=0x15c
-[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_READPERSONALITIESL_DUP5=0x15d
-[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_READPERSONALITIESL_DUP6=0x15e
-[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_READPERSONALITIESL_DUP7=0x15f
-[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_READPERSONALITIESL_DUP8=0x160
-[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_READPERSONALITIESL_DUP9=0x161
-[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_RESOURCEFILENAMEL=0x191
-[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_RUNERROR=0x5c
-[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_RUNERROR_DUP1=0x195
-[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_RUNL=0x58
-[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_RUNL_DUP1=0x59
-[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_RUNL_DUP2=0x5a
-[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_RUNL_DUP3=0x5b
-[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_RUNL_DUP5=0x194
-[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_SETDEVICESTATE=0x51
-[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_SETSERVICESTATE=0x50
-[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_SETUSBDEVICESETTINGSL=0x149
-[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_SETUSBDEVICESETTINGSL_DUP1=0x14a
-[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_SETUSBDEVICESETTINGSL_DUP10=0x19b
-[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_SETUSBDEVICESETTINGSL_DUP11=0x196
-[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_SETUSBDEVICESETTINGSL_DUP12=0x19a
-[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_SETUSBDEVICESETTINGSL_DUP2=0x14b
-[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_SETUSBDEVICESETTINGSL_DUP3=0x14c
-[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_SETUSBDEVICESETTINGSL_DUP4=0x14d
-[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_SETUSBDEVICESETTINGSL_DUP5=0x14e
-[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_SETUSBDEVICESETTINGSL_DUP6=0x14f
-[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_SETUSBDEVICESETTINGSL_DUP7=0x197
-[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_SETUSBDEVICESETTINGSL_DUP8=0x198
-[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_SETUSBDEVICESETTINGSL_DUP9=0x199
-[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBDUMMYCLASSCONTROLLER_CONSTRUCTL=0x260
-[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBDUMMYCLASSCONTROLLER_DOCANCEL=0x280
-[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBDUMMYCLASSCONTROLLER_DOCANCEL_DUP1=0x281
-[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBDUMMYCLASSCONTROLLER_DOCANCEL_DUP2=0x282
-[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBDUMMYCLASSCONTROLLER_DOCANCEL_DUP3=0x283
-[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBDUMMYCLASSCONTROLLER_DOCANCEL_DUP4=0x284
+[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_VALIDATEPERSONALITIESL=0x155
+[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_VALIDATEPERSONALITIESL_DUP1=0x3c7
+[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_VALIDATEPERSONALITIESL_DUP2=0x3c8
 [[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBDUMMYCLASSCONTROLLER_GETBEHAVIOUR=0x366
 [[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBDUMMYCLASSCONTROLLER_GETBEHAVIOUR_DUP1=0x367
-[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBDUMMYCLASSCONTROLLER_GETBEHAVIOUR_DUP2=0x263
 [[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBDUMMYCLASSCONTROLLER_GETBEHAVIOUR_DUP3=0x368
-[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBDUMMYCLASSCONTROLLER_GETBEHAVIOUR_DUP4=0x265
 [[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBDUMMYCLASSCONTROLLER_GETBEHAVIOUR_DUP5=0x369
-[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBDUMMYCLASSCONTROLLER_GETBEHAVIOUR_DUP6=0x267
 [[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBDUMMYCLASSCONTROLLER_GETBEHAVIOUR_DUP7=0x36a
-[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBDUMMYCLASSCONTROLLER_GETBEHAVIOUR_DUP8=0x269
 [[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBDUMMYCLASSCONTROLLER_GETCONFIG=0x36b
 [[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBDUMMYCLASSCONTROLLER_GETCONFIG_DUP1=0x36c
 [[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBDUMMYCLASSCONTROLLER_GETCONFIG_DUP2=0x36d
@@ -978,140 +386,7 @@
 [[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBDUMMYCLASSCONTROLLER_GETCONFIG_DUP4=0x36f
 [[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBDUMMYCLASSCONTROLLER_GETCONFIG_DUP5=0x370
 [[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBDUMMYCLASSCONTROLLER_GETCONFIG_DUP6=0x371
-[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBDUMMYCLASSCONTROLLER_GETCONFIG_DUP7=0x26a
-[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBDUMMYCLASSCONTROLLER_RUNERROR=0x285
 [[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBDUMMYCLASSCONTROLLER_RUNL=0x372
-[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBDUMMYCLASSCONTROLLER_RUNL_DUP1=0x27b
-[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBDUMMYCLASSCONTROLLER_RUNL_DUP2=0x27c
-[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBDUMMYCLASSCONTROLLER_RUNL_DUP3=0x27d
-[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBDUMMYCLASSCONTROLLER_RUNL_DUP4=0x27e
-[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBDUMMYCLASSCONTROLLER_RUNL_DUP5=0x27f
-[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBDUMMYCLASSCONTROLLER_START=0x272
-[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBDUMMYCLASSCONTROLLER_START_DUP1=0x273
-[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBDUMMYCLASSCONTROLLER_START_DUP2=0x274
-[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBDUMMYCLASSCONTROLLER_START_DUP3=0x275
-[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBDUMMYCLASSCONTROLLER_STOP=0x276
-[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBDUMMYCLASSCONTROLLER_STOP_DUP1=0x277
-[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBDUMMYCLASSCONTROLLER_STOP_DUP2=0x278
-[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBDUMMYCLASSCONTROLLER_STOP_DUP3=0x279
-[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBHOST_DEREGISTEROBSERVER=0x38e
-[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBHOST_NOTIFYHOSTEVENT=0x38f
-[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBHOST_NOTIFYHOSTEVENT_DUP1=0x390
-[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBHOST_NOTIFYHOSTEVENT_DUP2=0x391
-[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBHOST_NOTIFYHOSTEVENT_DUP3=0x392
-[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBHOST_NOTIFYHOSTEVENT_DUP4=0x393
-[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBHOST_NOTIFYHOSTEVENT_DUP5=0x394
-[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBHOST_STARTL=0x38d
-[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBOTGCONNECTIONIDLEWATCHER_POST=0x3c0
-[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBOTGCONNECTIONIDLEWATCHER_POST_DUP1=0x3c1
-[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBOTGCONNECTIONIDLEWATCHER_POST_DUP2=0x3c2
-[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBOTGCONNECTIONIDLEWATCHER_POST_DUP3=0x3c3
-[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBOTGCONNECTIONIDLEWATCHER_RUNL=0x3be
-[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBOTGCONNECTIONIDLEWATCHER_RUNL_DUP1=0x3bf
-[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBOTGEVENTWATCHER_LOGEVENTTEXT=0x3ae
-[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBOTGEVENTWATCHER_LOGEVENTTEXT_DUP1=0x3af
-[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBOTGEVENTWATCHER_LOGEVENTTEXT_DUP10=0x3b8
-[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBOTGEVENTWATCHER_LOGEVENTTEXT_DUP2=0x3b0
-[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBOTGEVENTWATCHER_LOGEVENTTEXT_DUP3=0x3b1
-[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBOTGEVENTWATCHER_LOGEVENTTEXT_DUP4=0x3b2
-[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBOTGEVENTWATCHER_LOGEVENTTEXT_DUP5=0x3b3
-[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBOTGEVENTWATCHER_LOGEVENTTEXT_DUP6=0x3b4
-[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBOTGEVENTWATCHER_LOGEVENTTEXT_DUP7=0x3b5
-[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBOTGEVENTWATCHER_LOGEVENTTEXT_DUP8=0x3b6
-[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBOTGEVENTWATCHER_LOGEVENTTEXT_DUP9=0x3b7
-[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBOTGEVENTWATCHER_POST=0x3b9
-[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBOTGEVENTWATCHER_RUNL=0x3aa
-[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBOTGEVENTWATCHER_RUNL_DUP1=0x3ac
-[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBOTGEVENTWATCHER_RUNL_DUP2=0x3ad
-[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBOTGEVENTWATCHER_RUNL_DUP3=0x3ab
-[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBOTGIDPINWATCHER_POST=0x397
-[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBOTGIDPINWATCHER_POST_DUP1=0x398
-[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBOTGIDPINWATCHER_POST_DUP2=0x399
-[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBOTGIDPINWATCHER_POST_DUP3=0x39a
-[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBOTGIDPINWATCHER_POST_DUP4=0x39b
-[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBOTGIDPINWATCHER_POST_DUP5=0x39c
-[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBOTGIDPINWATCHER_RUNL=0x395
-[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBOTGIDPINWATCHER_RUNL_DUP1=0x396
-[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBOTGSTATEWATCHER_POST=0x3a7
-[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBOTGSTATEWATCHER_POST_DUP1=0x3a8
-[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBOTGSTATEWATCHER_POST_DUP2=0x3a9
-[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBOTGSTATEWATCHER_RUNL=0x3a5
-[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBOTGSTATEWATCHER_RUNL_DUP1=0x3a6
-[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBOTGVBUSWATCHER_POST=0x39f
-[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBOTGVBUSWATCHER_POST_DUP1=0x3a0
-[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBOTGVBUSWATCHER_POST_DUP2=0x3a1
-[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBOTGVBUSWATCHER_POST_DUP3=0x3a2
-[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBOTGVBUSWATCHER_POST_DUP4=0x3a3
-[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBOTGVBUSWATCHER_POST_DUP5=0x3a4
-[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBOTGVBUSWATCHER_RUNL=0x39d
-[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBOTGVBUSWATCHER_RUNL_DUP1=0x39e
-[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBOTGWATCHER_POST=0x3bc
-[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBOTGWATCHER_RUNL=0x3ba
-[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBOTGWATCHER_RUNL_DUP1=0x3bb
-[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBOTG_CONSTRUCTL=0x382
-[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBOTG_CONSTRUCTL_DUP1=0x383
-[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBOTG_CONSTRUCTL_DUP2=0x386
-[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBOTG_CONSTRUCTL_DUP3=0x384
-[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBOTG_CONSTRUCTL_DUP4=0x385
-[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBOTG_CONSTRUCTL_DUP5=0x387
-[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBOTG_CONSTRUCTL_DUP6=0x388
-[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBOTG_CUSBOTG=0x373
-[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBOTG_CUSBOTG_DUP1=0x374
-[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBOTG_CUSBOTG_DUP10=0x37d
-[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBOTG_CUSBOTG_DUP11=0x37e
-[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBOTG_CUSBOTG_DUP12=0x37f
-[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBOTG_CUSBOTG_DUP13=0x380
-[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBOTG_CUSBOTG_DUP14=0x381
-[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBOTG_CUSBOTG_DUP2=0x375
-[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBOTG_CUSBOTG_DUP3=0x376
-[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBOTG_CUSBOTG_DUP4=0x377
-[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBOTG_CUSBOTG_DUP5=0x378
-[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBOTG_CUSBOTG_DUP6=0x379
-[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBOTG_CUSBOTG_DUP7=0x37a
-[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBOTG_CUSBOTG_DUP8=0x37b
-[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBOTG_CUSBOTG_DUP9=0x37c
-[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBOTG_NOTIFYOTGEVENT=0x389
-[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBOTG_REGISTEROBSERVERL=0x38a
-[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBOTG_STOP=0x38b
-[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBOTG_STOP_DUP1=0x38c
-[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBSERVER_DECREMENTSESSIONCOUNT_DUP1=0x136
-[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBSERVER_INCREMENTSESSIONCOUNT_DUP1=0x134
-[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBSERVER_LAUNCHSHUTDOWNTIMERIFNOSESSIONS=0x137
-[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBSESSION_GETMANUFACTURERSTRINGDESCRIPTOR_DUP1=0x1d1
-[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_DUP1_CUSBDEVICE_CONSTRUCTL=0x173
-[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_DUP1_CUSBDEVICE_CONVERTUIDSL=0x18c
-[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_DUP1_CUSBDEVICE_CREATECLASSCONTROLLERSL=0x190
-[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_DUP1_CUSBDEVICE_ENUMERATECLASSCONTROLLERSL=0x177
-[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_DUP1_CUSBDEVICE_READPERSONALITIESL=0x18d
-[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_DUP1_CUSBDEVICE_RUNERROR=0x17e
-[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_DUP1_CUSBDEVICE_RUNL=0x17b
-[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_DUP1_CUSBDEVICE_SETUSBDEVICESETTINGSFROMPERSONALITYL=0x185
-[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_DUP1_CUSBDEVICE_SETUSBDEVICESETTINGSL=0x17f
-[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_DUP1_CUSBDUMMYCLASSCONTROLLER_GETBEHAVIOUR=0x91
-[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_DUP1_CUSBDUMMYCLASSCONTROLLER_RUNL=0xac
-[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_DUP1_CUSBMANCENREPMANAGER_READKEYL=0x3ca
-[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_DUP1_CUSBOTGCONNECTIONIDLEWATCHER_POST_DUP1=0x258
-[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_DUP1_CUSBOTG_CONSTRUCTL=0x21e
-[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_DUP1_CUSBOTG_CUSBOTG=0x28
-[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_DUP1_CUSBSESSION_CUSBSESSION=0x1d3
-[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_DUP1_CUSBSESSION_DISPATCHMESSAGEL=0x1cf
-[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_DUP1_CUSBSESSION_GETMANUFACTURERSTRINGDESCRIPTOR=0x1da
-[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_DUP1_CUSBSESSION_GETSUPPORTEDCLASSES=0x1bd
-[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_DUP2_CUSBDEVICE_READPERSONALITIESL=0x18e
-[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_DUP2_CUSBDEVICE_RUNL=0x17c
-[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_DUP2_CUSBDEVICE_SETUSBDEVICESETTINGSFROMPERSONALITYL=0x186
-[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_DUP2_CUSBDEVICE_SETUSBDEVICESETTINGSL=0x180
-[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_DUP2_CUSBDUMMYCLASSCONTROLLER_GETBEHAVIOUR=0x92
-[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_DUP2_CUSBDUMMYCLASSCONTROLLER_RUNL=0xad
-[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_DUP2_CUSBSESSION_CUSBSESSION=0x1d4
-[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_DUP3_CUSBDEVICE_READPERSONALITIESL=0x18f
-[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_DUP3_CUSBDEVICE_SETUSBDEVICESETTINGSFROMPERSONALITYL=0x187
-[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_DUP3_CUSBDEVICE_SETUSBDEVICESETTINGSL=0x181
-[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_DUP3_CUSBDUMMYCLASSCONTROLLER_GETBEHAVIOUR=0x93
-[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_DUP3_CUSBDUMMYCLASSCONTROLLER_RUNL=0xae
-[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_DUP4_CUSBDEVICE_SETUSBDEVICESETTINGSFROMPERSONALITYL=0x189
-[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_DUP4_CUSBDEVICE_SETUSBDEVICESETTINGSL=0x182
-[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_DUP5_CUSBDEVICE_SETUSBDEVICESETTINGSFROMPERSONALITYL=0x188
-[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_DUP5_CUSBDEVICE_SETUSBDEVICESETTINGSL=0x183
-[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_DUP6_CUSBDEVICE_SETUSBDEVICESETTINGSL=0x184
-[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]__RUNSERVERL=0x8e
+[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBSERVER_CONSTRUCTL_DUP44=0x446
+[[OBSOLETE]][TRACE]TRACE_WARNING[0x83]_CUSBDEVICE_VALIDATEPERSONALITIES=0x2
+[[OBSOLETE]][TRACE]TRACE_WARNING[0x83]_CUSBDEVICE_VALIDATEPERSONALITIESL=0x1
--- a/usbmgmt/usbmgrtest/t_charging_emu/group/TestPlugin.mmp	Mon Sep 06 11:27:08 2010 +0800
+++ b/usbmgmt/usbmgrtest/t_charging_emu/group/TestPlugin.mmp	Thu Sep 16 12:03:29 2010 +0800
@@ -33,7 +33,6 @@
 SOURCEPATH      ../../../usbmgr/usbman/chargingplugin/src
 SOURCE			CUsbBatteryChargingPlugin.cpp
 SOURCE          chargingstates.cpp
-SOURCE			repositorynotifier.cpp
 SOURCE			reenumerator.cpp
 SOURCE			devicestatetimer.cpp
 SOURCE			vbuswatcher.cpp
@@ -55,8 +54,6 @@
 LIBRARY			centralrepository.lib
 
 
-library	flogger.lib
-
 NOEXPORTLIBRARY
 
 //macro __USB_LOG_TO_RDEBUG__
--- a/usbmgmt/usbmgrtest/t_charging_emu/group/TestPluginotg.mmp	Mon Sep 06 11:27:08 2010 +0800
+++ b/usbmgmt/usbmgrtest/t_charging_emu/group/TestPluginotg.mmp	Thu Sep 16 12:03:29 2010 +0800
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2005-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"
@@ -33,7 +33,6 @@
 SOURCEPATH      ../../../usbmgr/usbman/chargingplugin/src
 SOURCE			CUsbBatteryChargingPlugin.cpp
 SOURCE          chargingstates.cpp
-SOURCE			repositorynotifier.cpp
 SOURCE			reenumerator.cpp
 SOURCE			devicestatetimer.cpp
 SOURCE			vbuswatcher.cpp
@@ -59,8 +58,6 @@
 LIBRARY			centralrepository.lib
 
 
-library	flogger.lib
-
 NOEXPORTLIBRARY
 
 //macro __USB_LOG_TO_RDEBUG__
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/usbmgmt/usbmgrtest/t_charging_emu/group/TestPluginotgtest.mmp	Thu Sep 16 12:03:29 2010 +0800
@@ -0,0 +1,69 @@
+/*
+* Copyright (c) 2005-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:
+* usbbatterychargingtestplugin.dll UsbMan extension plugin for battery charging, with test function.
+* usbbatterychargingtestplugin.rsc Resource file for charging plugin.
+*
+*/
+
+/**
+ @file
+ @internalComponent
+*/
+
+TARGET			usbbatterychargingtestpluginotg.dll
+TARGETTYPE		PLUGIN
+// UID2 = 0x10009d8d for ECOM plugins.
+// UID3 = the 'DLL UID' (see resource file)
+UID 			0x10009d8d 0x1020DEA7
+VENDORID		0x70000001
+CAPABILITY CommDD NetworkControl NetworkServices LocalServices ProtServ
+
+SOURCEPATH      ../../../usbmgr/usbman/chargingplugin/src
+SOURCE			CUsbBatteryChargingPlugin.cpp
+SOURCE          chargingstates.cpp
+//SOURCE			repositorynotifier.cpp
+SOURCE			reenumerator.cpp
+SOURCE			devicestatetimer.cpp
+SOURCE			vbuswatcher.cpp
+
+SOURCE			idpinwatcher.cpp
+SOURCE			otgstatewatcher.cpp
+SOURCEPATH      ../src
+SOURCE			CUsbBatteryChargingTestPlugin.cpp
+
+START RESOURCE 1020DEA7.rss
+target usbbatterychargingtestpluginotg.rsc
+END
+
+USERINCLUDE		../inc 
+USERINCLUDE     ../../../usbmgr/usbman/chargingplugin/inc
+USERINCLUDE		../../../usbmgr/usbman/chargingplugin/inc/default
+USERINCLUDE		../../../usbmgr/usbman/chargingplugin/public
+USERINCLUDE		../traces
+OS_LAYER_SYSTEMINCLUDE_SYMBIAN
+
+LIBRARY 		euser.lib 
+LIBRARY 		usbmanextensionplugin.lib 
+LIBRARY			centralrepository.lib
+
+
+NOEXPORTLIBRARY
+
+//macro __USB_LOG_TO_RDEBUG__
+
+//macro __USB_LOGGING__
+
+macro SYMBIAN_ENABLE_USB_OTG_HOST_PRIV
+macro __CHARGING_PLUGIN_TEST_CODE__
--- a/usbmgmt/usbmgrtest/t_charging_emu/group/bld.inf	Mon Sep 06 11:27:08 2010 +0800
+++ b/usbmgmt/usbmgrtest/t_charging_emu/group/bld.inf	Thu Sep 16 12:03:29 2010 +0800
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 1999-2009 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 1999-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"
@@ -16,7 +16,7 @@
 */
 
 PRJ_PLATFORMS
-DEFAULT
+DEFAULT armv5smp
 
 PRJ_TESTEXPORTS
 ../inc/dummyldd.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(dummyldd.h)
@@ -26,10 +26,7 @@
 
 
 t_usbcharging.iby       /epoc32/rom/include/t_usbcharging.iby
-
+	
 PRJ_TESTMMPFILES
-
-	tbatterycharging.mmp
-	tbatterychargingrepositorywriter.mmp
 	TestPlugin.mmp
-	TestPluginotg.mmp
+	TestPluginotg.mmp	
\ No newline at end of file
--- a/usbmgmt/usbmgrtest/t_charging_emu/group/t_usbcharging.iby	Mon Sep 06 11:27:08 2010 +0800
+++ b/usbmgmt/usbmgrtest/t_charging_emu/group/t_usbcharging.iby	Thu Sep 16 12:03:29 2010 +0800
@@ -18,20 +18,14 @@
 #ifndef __T_USBCHARGING_IBY__
 #define __T_USBCHARGING_IBY__
 
-// *** Manual Test executable
-file=ABI_DIR\USB_DIR\tbatterycharging.exe    System\Programs\tbatterycharging.exe
-file=ABI_DIR\USB_DIR\tbatterychargingrepositorywriter.exe    System\Programs\tbatterychargingrepositorywriter.exe
-
-// *** file needed for the manual test when built in ROM
-data=EPOCROOT##Epoc32\data\z\system\data\t_charging.txt	"system\data\t_charging.txt"
-
 
 // *** Test plug-in
 #if defined(SYMBIAN_ENABLE_USB_OTG_HOST) && defined (SYMBIAN_INCLUDE_USB_OTG_HOST)
-USB_PLUGIN(usbbatterychargingtestpluginotg.dll,usbbatterychargingtestpluginotg.rsc)
+	USB_PLUGIN(usbbatterychargingtestpluginotg.dll,usbbatterychargingtestpluginotg.rsc)
 #else
-USB_PLUGIN(usbbatterychargingtestplugin.dll,usbbatterychargingtestplugin.rsc)
+	USB_PLUGIN(usbbatterychargingtestplugin.dll,usbbatterychargingtestplugin.rsc)
 #endif
+
 data=EPOCROOT##epoc32\data\z\private\10202be9\10208DD7.txt private\10202be9\10208DD7.txt
 
 #endif
--- a/usbmgmt/usbmgrtest/t_charging_emu/inc/CUsbBatteryChargingTestPlugin.h	Mon Sep 06 11:27:08 2010 +0800
+++ b/usbmgmt/usbmgrtest/t_charging_emu/inc/CUsbBatteryChargingTestPlugin.h	Thu Sep 16 12:03:29 2010 +0800
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2005-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"
@@ -40,9 +40,8 @@
 	TUint iAvailableMilliAmps;
 	TInt iPluginState;
 	TUsbDeviceState iDeviceState;
-	TUsbBatteryChargingUserSetting iUserSetting;
 	TInt iCurrentIndexRequested;
-	TUint iRequestedCurrentValue;
+	TUint iRequestedCurrentValue;	
 	};
 
 class MUsbBatteryChargingTestPluginInterface2
--- a/usbmgmt/usbmgrtest/t_charging_emu/inc/dummyldd.h	Mon Sep 06 11:27:08 2010 +0800
+++ b/usbmgmt/usbmgrtest/t_charging_emu/inc/dummyldd.h	Thu Sep 16 12:03:29 2010 +0800
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2007-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"
@@ -18,8 +18,28 @@
 #ifndef __DUMMY_LDD_H__
 #define __DUMMY_LDD_H__
 
+#ifdef SYMBIAN_USB_BATTERYCHARGING_V1_1
+#include <usb/usb_charger_detection_shai_shared.h>
+#endif
+
 static const TInt KDummyConfigDescSize = 9;
 
+#ifdef SYMBIAN_USB_BATTERYCHARGING_V1_1
+typedef UsbShai::TPortType TUsbcChargingPortType;
+typedef UsbShai::TChargerDetectorProperties TUsbcChargerDetectorProperties;
+const TUint KUsbChargingPortTypeNone = UsbShai::EPortTypeNone;
+const TUint KUsbChargingPortTypeUnsupported = UsbShai::EPortTypeUnsupported;
+const TUint KUsbChargingPortTypeChargingPort = UsbShai::EPortTypeChargingPort;
+const TUint KUsbChargingPortTypeDedicatedChargingPort = UsbShai::EPortTypeDedicatedChargingPort;
+const TUint KUsbChargingPortTypeChargingDownstreamPort = UsbShai::EPortTypeChargingDownstreamPort;
+const TUint KUsbChargingPortTypeStandardDownstreamPort = UsbShai::EPortTypeStandardDownstreamPort;
+const TUint KUsbChargingPortTypeAcaRidA = UsbShai::EPortTypeAcaRidA;
+const TUint KUsbChargingPortTypeAcaRidB = UsbShai::EPortTypeAcaRidB;
+const TUint KUsbChargingPortTypeAcaRidC = UsbShai::EPortTypeAcaRidC;
+
+const TUint KChargerDetectorCapChirpCurrentLimiting = UsbShai::TChargerDetectorProperties::KChargerDetectorCapChirpCurrentLimiting;
+#endif
+
 /******
  * NOTE: This dummy implementation of RDevUsbcClient is actually a C-class!!!!!!
  */
@@ -32,11 +52,22 @@
 	inline TInt GetConfigurationDescriptorSize(TInt& aSize);
 	inline void ReEnumerate(TRequestStatus& aStatus);
 	inline void ReEnumerateCancel();
+    inline TBool CurrentlyUsingHighSpeed();
 
 	// used to initialise config desc.
 	inline void Initialise();
+	inline void SetCurrentlyUsingHighSpeed(TBool aUsingHighSpeed);
+#ifdef SYMBIAN_USB_BATTERYCHARGING_V1_1	
+	inline TInt ChargerDetectorCaps(TUsbcChargerDetectorProperties& aProperties);
+    inline void SetChargerDetectorCaps(TUsbcChargerDetectorProperties aProperties);
+#endif	
+	
 private:
 	TBuf8<KDummyConfigDescSize> iConfigDesc;
+	TBool iUsingHighSpeed;
+#ifdef SYMBIAN_USB_BATTERYCHARGING_V1_1		
+	TUsbcChargerDetectorProperties iChargerDetectorCaps;
+#endif
 	};
 
 inline TInt RDevUsbcClient::GetConfigurationDescriptor(TDes8& aConfigurationDescriptor)
@@ -77,6 +108,29 @@
 	iConfigDesc.FillZ(KDummyConfigDescSize);
 	// 8th byte is bMaxPower
 	iConfigDesc[8] = 0;
+	iUsingHighSpeed = EFalse;
 	}
+inline TBool RDevUsbcClient::CurrentlyUsingHighSpeed()
+    {
+    return iUsingHighSpeed;
+    }
+
+inline void RDevUsbcClient::SetCurrentlyUsingHighSpeed(TBool aUsingHighSpeed)
+    {
+    iUsingHighSpeed = aUsingHighSpeed;
+    }
+
+#ifdef SYMBIAN_USB_BATTERYCHARGING_V1_1
+inline TInt RDevUsbcClient::ChargerDetectorCaps(TUsbcChargerDetectorProperties& aProperties)
+    {
+    aProperties = iChargerDetectorCaps;
+    return KErrNone;
+    }
+
+inline void RDevUsbcClient::SetChargerDetectorCaps(TUsbcChargerDetectorProperties aProperties)
+    {
+    iChargerDetectorCaps = aProperties;
+    }
+#endif
 
 #endif // __DUMMY_LDD_H__
--- a/usbmgmt/usbmgrtest/t_charging_emu/inc/tbatterycharging.h	Mon Sep 06 11:27:08 2010 +0800
+++ b/usbmgmt/usbmgrtest/t_charging_emu/inc/tbatterycharging.h	Thu Sep 16 12:03:29 2010 +0800
@@ -22,7 +22,7 @@
 #ifndef __CDUMMYUSBDEVICE_H__
 #define __CDUMMYUSBDEVICE_H__
 
-#include <usb/chargingtest/cusbbatterychargingtestplugin.h>
+#include <usb/chargingtest/CUsbBatteryChargingTestPlugin.h>
 #include <usbstates.h>
 #include <ecom/ecom.h>
 #include <e32std.h>
--- a/usbmgmt/usbmgrtest/t_charging_emu/src/CUsbBatteryChargingTestPlugin.cpp	Mon Sep 06 11:27:08 2010 +0800
+++ b/usbmgmt/usbmgrtest/t_charging_emu/src/CUsbBatteryChargingTestPlugin.cpp	Thu Sep 16 12:03:29 2010 +0800
@@ -22,12 +22,6 @@
 
 #include <ecom/implementationproxy.h>
 
-#include <usb/usblogger.h>
-
-#ifdef __FLOG_ACTIVE
-_LIT8(KLogComponent, "USBCHARGE TEST");
-#endif
-
 #include <dummyldd.h>
 #define __D32USBC_H__ // ensure that d32usbc is ignored, and dummyldd used instead
 #include "CUsbBatteryChargingTestPlugin.h"
@@ -69,7 +63,6 @@
 	aInfo.iPluginState = iPluginState;
 	aInfo.iAvailableMilliAmps = iAvailableMilliAmps;
 	aInfo.iDeviceState = iDeviceState;
-	aInfo.iUserSetting = iUserSetting;
 	aInfo.iCurrentIndexRequested = iCurrentIndexRequested;
 	aInfo.iRequestedCurrentValue = iRequestedCurrentValue;
 	}
@@ -77,11 +70,15 @@
 TAny* CUsbBatteryChargingTestPlugin::GetInterface(TUid aUid)
 	{
 	TAny* ret = NULL;
+    ret = CUsbBatteryChargingPlugin::GetInterface(aUid);
+    if(!ret)
+        {
 	if (aUid == KUidUsbBatteryChargingTestPluginInterface2)
 		{
 		ret = reinterpret_cast<TAny*>(
 			static_cast<MUsbBatteryChargingTestPluginInterface2*>(this)
 			);
 		}
+        }
 	return ret;
 	}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/usbmgmt/usbmgrtest/t_usb_charging/group/bld.inf	Thu Sep 16 12:03:29 2010 +0800
@@ -0,0 +1,25 @@
+/*
+* Copyright (c) 2006-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:
+*
+*/
+
+PRJ_TESTEXPORTS
+t_usbcharging.iby       /epoc32/rom/include/t_usbcharging.iby
+//t_usbcharging.iby       /epoc32/rom/include/core/os/t_usbcharging.iby
+
+
+PRJ_TESTMMPFILES
+t_usbcharging.mmp
+//t_usbcharging_cmdparam.mmp
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/usbmgmt/usbmgrtest/t_usb_charging/group/t_usbcharging.iby	Thu Sep 16 12:03:29 2010 +0800
@@ -0,0 +1,27 @@
+/*
+* Copyright (c) 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 __T_USBCHARGINGARM_IBY__
+#define __T_USBCHARGINGARM_IBY__
+
+// *** Test executable
+file=ABI_DIR/UDEB/tusbcharging.exe    /sys/bin/tusbcharging.exe
+data=/t_usb_charging/group/autoexec.bat  /autoexec.bat
+
+#endif
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/usbmgmt/usbmgrtest/t_usb_charging/group/t_usbcharging.mmp	Thu Sep 16 12:03:29 2010 +0800
@@ -0,0 +1,41 @@
+/*
+* Copyright (c) 2006-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:
+*
+*/
+
+TARGETTYPE		exe
+
+UID 			0 0x20031E54
+
+TARGET			tusbcharging.exe        
+
+CAPABILITY		ALL -Tcb
+
+SOURCEPATH              ../src
+SOURCE			activetest.CPP
+SOURCE			activeconsole.CPP
+SOURCE			testbase.CPP
+SOURCE			usbchargingarmtest.cpp
+SOURCE          usbchargingcurrentwatcher.cpp
+SOURCE          usbstatewatcher.cpp
+
+USERINCLUDE             ../inc
+USERINCLUDE             ../traces
+OS_LAYER_SYSTEMINCLUDE_SYMBIAN
+
+LIBRARY			euser.lib
+LIBRARY			usbman.lib
+LIBRARY			esock.lib
+LIBRARY			efsrv.lib
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/usbmgmt/usbmgrtest/t_usb_charging/group/t_usbcharging_cmdparam.mmp	Thu Sep 16 12:03:29 2010 +0800
@@ -0,0 +1,42 @@
+/*
+* Copyright (c) 2006-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:
+*
+*/
+
+TARGETTYPE		exe
+MACRO	COMMANDLINE_PARAM
+UID 			0 0x20031E54
+
+TARGET			tusbcharging.exe        
+
+CAPABILITY		ALL -Tcb
+
+SOURCEPATH              ../src
+SOURCE			activetest.CPP
+SOURCE			activeconsole.CPP
+SOURCE			testbase.CPP
+SOURCE			usbchargingarmtest.cpp
+SOURCE          usbchargingcurrentwatcher.cpp
+SOURCE          usbstatewatcher.cpp
+
+USERINCLUDE             ../inc
+USERINCLUDE             ../traces
+OS_LAYER_SYSTEMINCLUDE_SYMBIAN
+
+LIBRARY			euser.lib
+LIBRARY			usbman.lib
+LIBRARY			esock.lib
+LIBRARY			efsrv.lib
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/usbmgmt/usbmgrtest/t_usb_charging/inc/Tests.h	Thu Sep 16 12:03:29 2010 +0800
@@ -0,0 +1,48 @@
+/*
+* Copyright (c) 2006-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 __TESTS_H__
+#define __TESTS_H__
+
+// -- Add specific test header files here.
+#include "usbchargingarmtest.h"
+// -- End
+
+class CTestBase;
+
+struct TTestDefinition
+	{
+	TTestDefinition(const TDesC8& aDescription, CTestBase* (*aFactoryL)(MTestManager&));
+
+	TBuf8<256> iDescription;
+	CTestBase* (*iFactoryL)(MTestManager&);
+	};
+
+TTestDefinition::TTestDefinition(const TDesC8& aDescription, CTestBase* (*aFactoryL)(MTestManager&))
+	{
+	iDescription = aDescription;
+	iFactoryL = aFactoryL;
+	}
+
+TTestDefinition gTestDefinitions[] = 
+	{
+// -- Add information about specific tests here
+		TTestDefinition(_L8("Test 1 (USBChargingARMTest)"), CUsbChargingArmTest::NewL),
+// -- End
+	};
+
+#endif // __TESTS_H__
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/usbmgmt/usbmgrtest/t_usb_charging/inc/activeconsole.h	Thu Sep 16 12:03:29 2010 +0800
@@ -0,0 +1,66 @@
+/*
+* Copyright (c) 2006-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:
+*
+*/
+
+#include <e32base.h>
+#include <e32keys.h>
+#include "testmanager.h"
+
+class CTestBase;
+class CConsoleBase;
+
+class CActiveConsole : public CActive, public MTestManager
+/**
+ * Active Object console class. This is the means by which the user interacts 
+ * with the program.
+ */
+	{
+public:
+	static CActiveConsole* NewLC(CConsoleBase& aConsole);
+	~CActiveConsole();
+
+public:
+	void RequestCharacter();
+	TKeyCode Getch();
+
+private:
+	CActiveConsole(CConsoleBase& aConsole);
+	void ConstructL();
+
+private: // utility
+	void SelectTestL();
+	void StopCurrentTest();
+	void DisplayMainMenu();
+	void DoActionKeyL(TKeyCode aKey);
+
+private: // from MTestManager
+	void TestFinished();
+	void Write(TRefByValue<const TDesC8> aFmt, ...);
+	void WriteNoReturn(TRefByValue<const TDesC8> aFmt, ...);
+	void GetNumberL(TUint& aNumber);
+
+private: // from CActive
+	void RunL();
+	void DoCancel();
+	TInt RunError(TInt aError);
+
+private: // owned
+	CTestBase* iTest;
+	TBuf8<10> iInputBuffer;
+
+private: // unowned
+	CConsoleBase& iConsole;
+	};
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/usbmgmt/usbmgrtest/t_usb_charging/inc/testbase.h	Thu Sep 16 12:03:29 2010 +0800
@@ -0,0 +1,57 @@
+/*
+* Copyright (c) 2006-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 __TESTBASE_H__
+#define __TESTBASE_H__
+
+#include <e32base.h>
+#include <e32keys.h>
+
+class MTestManager;
+
+#define LeaveIfErrorL(aError) \
+	{ \
+	if ( aError ) \
+		{ \
+		iManager.Write(_L8("LEAVE: line %d, code %d"), __LINE__, aError); \
+		User::Leave(aError); \
+		} \
+	} 
+
+class CTestBase : public CBase
+/**
+ * Abstract base class for tests.
+ */
+	{
+public:
+	CTestBase(MTestManager& aManager);
+	~CTestBase();
+
+public:
+	// Tests may implement either of these to pick up user selections. 
+	// Single-key entries require you to implement the TKeyCode overload; 
+	// multi-key selections require you to implement the descriptor overload.
+	virtual void ProcessKeyL(TKeyCode aKeyCode);
+	virtual void ProcessKeyL(const TDesC8& aString);
+
+	virtual void DisplayTestSpecificMenu() = 0;
+
+protected: // unowned
+	MTestManager& iManager;
+	};
+
+#endif // __TESTBASE_H__
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/usbmgmt/usbmgrtest/t_usb_charging/inc/testmanager.h	Thu Sep 16 12:03:29 2010 +0800
@@ -0,0 +1,45 @@
+/*
+* Copyright (c) 2006-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 __TESTMANAGER_H__
+#define __TESTMANAGER_H__
+
+#include <e32std.h>
+#include <e32keys.h>
+
+class MTestManager
+	{
+public:
+	/**
+	Called when a test finishes.
+	*/
+	virtual void TestFinished() = 0;
+
+	/**
+	Called to display some text.
+	*/
+	virtual void Write(TRefByValue<const TDesC8> aFmt, ...) = 0;
+	virtual void WriteNoReturn(TRefByValue<const TDesC8> aFmt, ...) = 0;
+
+	/**
+	Read a user-inputted number.
+	aNumber should be initialised before calling.
+	*/
+	virtual void GetNumberL(TUint& aNumber) = 0;
+	};
+
+#endif // __TESTMANAGER_H__
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/usbmgmt/usbmgrtest/t_usb_charging/inc/usbchargingarmtest.h	Thu Sep 16 12:03:29 2010 +0800
@@ -0,0 +1,66 @@
+/*
+* Copyright (c) 2006-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 __USBCHARGINGARM_H__
+#define __USBCHARGINGARM_H__
+
+#include <e32property.h>
+#include <usbman.h>
+#include <centralrepository.h>
+#include <usbchargingpublishedinfo.h>
+#include <f32file.h>
+
+#include "testbase.h"
+
+class CUsbChargingCurrentWatcher;
+class CUsbStateWatcher;
+/**
+*/
+class CUsbChargingArmTest : public CTestBase 
+	{
+public:
+	static CTestBase* NewL(MTestManager& aManager);
+	~CUsbChargingArmTest();
+	void ShowUsbChargingValue(TPublishedUsbChargingInfo& aValue);
+	void ShowUsbDeviceState(TUsbDeviceState aDeviceState);
+	inline RUsb& Usb();
+
+private:
+	CUsbChargingArmTest(MTestManager& aManager);
+	void ConstructL();
+    void ShowChargingType(TUsbChargingPortType aChargingType);
+    void ShowConnStatus(TUsbConnectionStatus aStatus);
+	
+	int StartMassStorage();
+
+private: // from CTestBase
+	void ProcessKeyL(TKeyCode aKeyCode);
+	void DisplayTestSpecificMenu();
+
+private: // owned
+	RUsb iUsbMan;
+	CUsbChargingCurrentWatcher* iChargingCurrentWatcher;
+	CUsbStateWatcher* iUsbStateWatcher;
+	RFs iFs;
+	};
+
+inline RUsb& CUsbChargingArmTest::Usb()
+    {
+    return iUsbMan;
+    }
+
+#endif // __USBCHARGINGARM_H__
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/usbmgmt/usbmgrtest/t_usb_charging/inc/usbchargingcurrentwatcher.h	Thu Sep 16 12:03:29 2010 +0800
@@ -0,0 +1,46 @@
+// Copyright (c) 2006-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of the License "Symbian Foundation License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+#ifndef __USBCHARGINGCURRENTWATCHER_H__
+#define __USBCHARGINGCURRENTWATCHER_H__
+
+#include <e32property.h>
+#include <e32cmn.h>
+#include "usbchargingarmtest.h"
+#include "testbase.h"
+
+/**
+*/
+class CUsbChargingCurrentWatcher : public CActive
+    {
+public:
+    static CUsbChargingCurrentWatcher* NewL(CUsbChargingArmTest& aUsbChargingArm);
+    ~CUsbChargingCurrentWatcher();
+
+private:
+    CUsbChargingCurrentWatcher(CUsbChargingArmTest& aUsbChargingArm);
+    void ConstructL();
+    
+    void DoCancel();
+    void RunL();
+    
+    void PostAndNotifyCurrentL();
+
+private:
+    RProperty           iChargingCurrentProp;  
+    CUsbChargingArmTest& iUsbChargingArm;
+    };
+
+#endif // __USBCHARGINGCURRENTWATCHER_H__
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/usbmgmt/usbmgrtest/t_usb_charging/inc/usbstatewatcher.h	Thu Sep 16 12:03:29 2010 +0800
@@ -0,0 +1,46 @@
+// Copyright (c) 2006-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of the License "Symbian Foundation License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+#ifndef __USBSTATEWATCHER_H__
+#define __USBSTATEWATCHER_H__
+
+#include <e32property.h>
+#include <e32cmn.h>
+#include "usbchargingarmtest.h"
+#include "testbase.h"
+
+/**
+*/
+class CUsbStateWatcher : public CActive
+    {
+public:
+    static CUsbStateWatcher* NewL(CUsbChargingArmTest& aUsbChargingArm);
+    ~CUsbStateWatcher();
+
+private:
+    CUsbStateWatcher(CUsbChargingArmTest& aUsbChargingArm);
+    void ConstructL();
+    
+    void DoCancel();
+    void RunL();
+    
+    void GetAndShowDeviceStateL();
+
+private:
+    CUsbChargingArmTest& iUsbChargingArm;
+    TUsbDeviceState     iDeviceState;    
+    };
+
+#endif // __USBSTATEWATCHER_H__
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/usbmgmt/usbmgrtest/t_usb_charging/src/activeconsole.cpp	Thu Sep 16 12:03:29 2010 +0800
@@ -0,0 +1,359 @@
+/*
+* Copyright (c) 2006-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:
+*
+*/
+
+#include <e32twin.h>
+#include <e32svr.h>
+#include "activeconsole.h"
+#include "testbase.h"
+#include "tests.h"
+#include "OstTraceDefinitions.h"
+#ifdef OST_TRACE_COMPILER_IN_USE
+#include "activeconsoleTraces.h"
+#endif
+
+
+CActiveConsole::CActiveConsole(CConsoleBase& aConsole)
+ :	CActive(CActive::EPriorityStandard),
+	iConsole(aConsole)
+	{
+	OstTraceFunctionEntry0( CACTIVECONSOLE_CACTIVECONSOLE_ENTRY );
+	CActiveScheduler::Add(this);
+	OstTraceFunctionExit0( CACTIVECONSOLE_CACTIVECONSOLE_EXIT );
+	}
+
+CActiveConsole* CActiveConsole::NewLC(CConsoleBase& aConsole)
+	{
+	OstTraceFunctionEntry0( CACTIVECONSOLE_NEWLC_ENTRY );
+
+	CActiveConsole* self = new(ELeave) CActiveConsole(aConsole);
+	CleanupStack::PushL(self);
+	self->ConstructL();
+#ifdef COMMANDLINE_PARAM	
+	self->DisplayMainMenu();
+#endif	
+	OstTraceFunctionExit0( CACTIVECONSOLE_NEWLC_EXIT );
+	return self;
+	}
+
+void CActiveConsole::ConstructL()
+	{
+	OstTraceFunctionEntry0( CACTIVECONSOLE_CONSTRUCTL_ENTRY );
+	// Launch of FDTest test.
+	iTest = gTestDefinitions[0].iFactoryL(*this);
+	OstTraceFunctionExit0( CACTIVECONSOLE_CONSTRUCTL_EXIT );
+	}
+
+CActiveConsole::~CActiveConsole()
+	{
+	OstTraceFunctionEntry0( DUP1_CACTIVECONSOLE_CACTIVECONSOLE_ENTRY );
+	Cancel();
+
+	StopCurrentTest();
+	OstTraceFunctionExit0( DUP1_CACTIVECONSOLE_CACTIVECONSOLE_EXIT );
+	}
+
+void CActiveConsole::DoCancel()
+	{
+	OstTraceFunctionEntry0( CACTIVECONSOLE_DOCANCEL_ENTRY );
+	iConsole.ReadCancel();
+	OstTraceFunctionExit0( CACTIVECONSOLE_DOCANCEL_EXIT );
+	}
+
+void CActiveConsole::StopCurrentTest()
+	{
+	OstTraceFunctionEntry0( CACTIVECONSOLE_STOPCURRENTTEST_ENTRY );
+	delete iTest;
+	iTest = NULL;
+	OstTraceFunctionExit0( CACTIVECONSOLE_STOPCURRENTTEST_EXIT );
+	}
+
+void CActiveConsole::RunL()
+// Only process when we get a return, otherwise cache- i.e. support multi-character selections
+	{
+	OstTraceFunctionEntry0( CACTIVECONSOLE_RUNL_ENTRY );
+	DoActionKeyL(iConsole.KeyCode());
+
+	// Repost asynchronous request.
+	RequestCharacter();
+	OstTraceFunctionExit0( CACTIVECONSOLE_RUNL_EXIT );
+	}
+
+void CActiveConsole::DoActionKeyL(TKeyCode aKeyCode)
+	{
+	OstTraceFunctionEntry0( CACTIVECONSOLE_DOACTIONKEYL_ENTRY );
+	WriteNoReturn(_L8("%c"), aKeyCode);
+
+	// Examine the key that just came in.
+	switch ( TUint(aKeyCode) )
+		{
+	case EKeyEscape:
+		{
+		Write(_L8("Exiting"));
+		CActiveScheduler::Stop();
+		OstTraceFunctionExit0( CACTIVECONSOLE_DOACTIONKEYL_EXIT );
+		return;
+		}
+
+	case EKeyEnter:
+		// Tell the test about what's in the buffer so far, if anything.
+		Write(_L8("You entered \'%S\'"), &iInputBuffer);
+		switch ( iInputBuffer.Length() )
+			{
+		case 0:
+			// Don't pass anything on- nothing to pass on.
+			break;
+
+		case 1:
+			if ( 	iInputBuffer == _L8("S") 
+				||	iInputBuffer == _L8("s") 
+				)
+				{
+				StopCurrentTest();
+				}
+			else
+				{
+				// Tell the test via the old 'single character' interface.
+				// If there is a test, then let it process the key. If there isn't a 
+				// test, we process it to (possibly) create and run a new test object.
+				if ( iTest )
+					{
+					TRAPD(err, iTest->ProcessKeyL((TKeyCode)iInputBuffer[0]));
+					if ( err )
+						{
+						Write(_L8("CTestBase::ProcessKeyL left with %d"), err);
+						StopCurrentTest();
+						}
+					}
+				else
+					{
+					SelectTestL();
+					}
+				}
+			iInputBuffer = KNullDesC8();
+			break;
+		
+		default:
+			// Tell the test via the new 'multi character' interface.
+			// If there is a test, then let it process the key. If there isn't a 
+			// test, we process it to (possibly) create and run a new test object.
+			if ( iTest )
+				{
+				TRAPD(err, iTest->ProcessKeyL(iInputBuffer));
+				if ( err )
+					{
+					Write(_L8("CTestBase::ProcessKeyL left with %d"), err);
+					StopCurrentTest();
+					}
+				}
+			else
+				{
+				SelectTestL();
+				}
+			iInputBuffer = KNullDesC8();
+			break;
+			}
+		DisplayMainMenu();
+		break;
+
+	default:
+		iInputBuffer.Append(aKeyCode);
+		break;
+		}
+	OstTraceFunctionExit0( DUP1_CACTIVECONSOLE_DOACTIONKEYL_EXIT );
+	}
+
+void CActiveConsole::RequestCharacter()
+	{
+	OstTraceFunctionEntry0( CACTIVECONSOLE_REQUESTCHARACTER_ENTRY );
+	iConsole.Read(iStatus);
+	SetActive();
+	OstTraceFunctionExit0( CACTIVECONSOLE_REQUESTCHARACTER_EXIT );
+	}
+
+void CActiveConsole::DisplayMainMenu()
+	{
+	OstTraceFunctionEntry0( CACTIVECONSOLE_DISPLAYMAINMENU_ENTRY );
+	Write(KNullDesC8);
+
+	// If there's a current test, display its step menu. Otherwise, display 
+	// all the available tests.
+	if ( iTest )
+		{
+		iTest->DisplayTestSpecificMenu();
+		Write(_L8("s - stop and close current test"));
+		}
+	else
+		{
+		const TUint numberOfTests = sizeof(gTestDefinitions) / sizeof(TTestDefinition);
+		for ( TUint ii = 0 ; ii < numberOfTests ; ii ++ )
+			{
+			Write(_L8("%d - %S"), ii, &gTestDefinitions[ii].iDescription);
+			}
+		}
+
+	Write(_L8("Escape - exit program"));
+	Write(KNullDesC8);
+ 	OstTraceFunctionExit0( CACTIVECONSOLE_DISPLAYMAINMENU_EXIT );
+ 	}
+
+void CActiveConsole::Write(TRefByValue<const TDesC8> aFmt, ...)
+	{
+	OstTraceFunctionEntry0( CACTIVECONSOLE_WRITE_ENTRY );
+	VA_LIST list;
+	VA_START(list, aFmt);
+
+	TBuf8<0x100> buf;
+	buf.AppendFormatList(aFmt, list);
+	TBuf<0x100> wideBuf;
+	wideBuf.Copy(buf);
+	iConsole.Write(wideBuf);
+	iConsole.Write(_L("\n"));
+
+	RDebug::Print(wideBuf);
+	OstTraceFunctionExit0( CACTIVECONSOLE_WRITE_EXIT );
+	}
+
+void CActiveConsole::WriteNoReturn(TRefByValue<const TDesC8> aFmt, ...)
+	{
+	OstTraceFunctionEntry0( CACTIVECONSOLE_WRITENORETURN_ENTRY );
+	VA_LIST list;
+	VA_START(list, aFmt);
+
+	TBuf8<0x100> buf;
+	buf.AppendFormatList(aFmt, list);
+	TBuf<0x100> wideBuf;
+	wideBuf.Copy(buf);
+	iConsole.Write(wideBuf);
+
+	RDebug::Print(wideBuf);
+	OstTraceFunctionExit0( CACTIVECONSOLE_WRITENORETURN_EXIT );
+	}
+
+TKeyCode CActiveConsole::Getch()
+	{
+	OstTraceFunctionEntry0( CACTIVECONSOLE_GETCH_ENTRY );
+	return iConsole.Getch();
+	}
+
+void CActiveConsole::SelectTestL()
+	{
+	OstTraceFunctionEntry0( CACTIVECONSOLE_SELECTTESTL_ENTRY );
+	StopCurrentTest();
+
+	// Pick a test out of the global array of tests.
+	const TUint numberOfTests = sizeof(gTestDefinitions) / sizeof (TTestDefinition);
+	TLex8 lex(iInputBuffer);
+	TUint index;
+	TInt err = lex.Val(index);
+
+	if (	err == KErrNone
+		&&	index < numberOfTests
+		)
+		{
+		iTest = gTestDefinitions[index].iFactoryL(*this);
+		}
+	else
+		{
+		Write(_L8("Unknown selection"));
+		}
+	OstTraceFunctionExit0( CACTIVECONSOLE_SELECTTESTL_EXIT );
+	}
+
+void CActiveConsole::TestFinished()
+/**
+ * Called by the test when it has finished. Results in the destruction of the 
+ * test.
+ */
+	{
+	OstTraceFunctionEntry0( CACTIVECONSOLE_TESTFINISHED_ENTRY );
+	StopCurrentTest();
+	OstTraceFunctionExit0( CACTIVECONSOLE_TESTFINISHED_EXIT );
+	}
+
+TInt CActiveConsole::RunError(TInt aError)
+/**
+ * Called by the Active Scheduler when a RunL in this active object leaves.
+ */
+	{
+	OstTraceFunctionEntry0( CACTIVECONSOLE_RUNERROR_ENTRY );
+	// This actually happens when a test object fails to construct properly.
+	Write(_L8("Error creating test object: %d"), aError);
+
+	iInputBuffer = KNullDesC8();
+	DisplayMainMenu();
+
+	// It's OK to carry on with the program itself, so repost asynchronous 
+	// request.
+	RequestCharacter();
+
+	OstTraceFunctionExit0( CACTIVECONSOLE_RUNERROR_EXIT );
+	return KErrNone;
+	}
+
+void CActiveConsole::GetNumberL(TUint& aNumber)
+	{
+	OstTraceFunctionEntry0( CACTIVECONSOLE_GETNUMBERL_ENTRY );
+	TBuf<12> addrAsText;
+	addrAsText.Zero();
+	if ( aNumber != 0 )
+		{
+		addrAsText.Format(_L("%d"), aNumber);
+		}
+	WriteNoReturn(_L8("Enter a number: "));
+	if ( addrAsText.Length() > 0 )
+		{
+		TBuf8<100> narrowBuf;
+		narrowBuf.Copy(addrAsText);
+		WriteNoReturn(narrowBuf);
+		}
+	TKeyCode code;
+	TBuf<1> character;
+	FOREVER
+		{
+		code = Getch();
+		character.SetLength(0);
+		character.Append(code);
+	
+		// If <CR> finish editing string
+		if (code == 0x0d)
+			break;
+		
+		// if <BS> remove last character
+		if ((code == 0x08)&&(addrAsText.Length() != 0))
+			{
+			WriteNoReturn(_L8("%S"),&character);
+			addrAsText.SetLength((addrAsText.Length()-1));
+			}
+		else
+			{
+			if (addrAsText.Length() < addrAsText.MaxLength())
+				{
+				WriteNoReturn(_L8("%S"),&character);
+				addrAsText.Append(code);
+				}
+			}
+		}
+	//now extract the new address from the string...
+	if( !addrAsText.Length() )
+		{
+		addrAsText.Append('0'); //null string causes TLex::Val to return an error
+		}
+	TLex lex(addrAsText);
+	TInt err = lex.Val(aNumber, EDecimal);
+	User::LeaveIfError(err);
+	OstTraceFunctionExit0( CACTIVECONSOLE_GETNUMBERL_EXIT );
+	}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/usbmgmt/usbmgrtest/t_usb_charging/src/activetest.cpp	Thu Sep 16 12:03:29 2010 +0800
@@ -0,0 +1,68 @@
+/*
+* Copyright (c) 2006-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:
+*
+*/
+
+#include <e32base.h>
+#include <e32cons.h>
+#include <e32test.h>
+#include <e32twin.h>
+#include <e32debug.h>
+#include "activeconsole.h"
+#include "OstTraceDefinitions.h"
+#ifdef OST_TRACE_COMPILER_IN_USE
+#include "activetestTraces.h"
+#endif
+
+
+LOCAL_C void ActiveTestL()
+    {
+	OstTraceFunctionEntry0( _ACTIVETESTL_ENTRY );
+
+	CConsoleBase* console = Console::NewL(_L("ACTIVETEST"), TSize(KConsFullScreen, KConsFullScreen));
+	CleanupStack::PushL(console);
+
+	CActiveScheduler* scheduler = new(ELeave) CActiveScheduler;
+	CleanupStack::PushL(scheduler);
+	CActiveScheduler::Install(scheduler);
+
+	CActiveConsole* activeConsole = CActiveConsole::NewLC(*console);
+#ifdef COMMANDLINE_PARAM	
+	activeConsole->RequestCharacter();
+#endif	
+	CActiveScheduler::Start();
+	// NB CActiveScheduler::Start only returns when someone somewhere has 
+	// called CActiveScheduler::Stop.
+
+	CleanupStack::PopAndDestroy(2); // activeConsole, scheduler
+
+	console->Printf(_L("\nPress any key"));
+	console->Getch(); // get and ignore character
+	CleanupStack::PopAndDestroy(); // console
+	OstTraceFunctionExit0( _ACTIVETESTL_EXIT );
+	}
+
+GLDEF_C TInt E32Main()
+    {
+	OstTraceFunctionEntry0( _E32MAIN_ENTRY );
+	__UHEAP_MARK;
+	CTrapCleanup* cleanup = CTrapCleanup::New();
+	TRAPD(error, ActiveTestL());
+	__ASSERT_ALWAYS(!error, User::Panic(_L("E32Main"), error));
+	delete cleanup;
+	__UHEAP_MARKEND;
+	OstTraceFunctionExit0( _E32MAIN_EXIT );
+	return KErrNone;
+    }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/usbmgmt/usbmgrtest/t_usb_charging/src/testbase.cpp	Thu Sep 16 12:03:29 2010 +0800
@@ -0,0 +1,49 @@
+/*
+* Copyright (c) 2006-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:
+*
+*/
+
+#include "testbase.h"
+#include "testmanager.h"
+#include "OstTraceDefinitions.h"
+#ifdef OST_TRACE_COMPILER_IN_USE
+#include "testbaseTraces.h"
+#endif
+
+
+CTestBase::CTestBase(MTestManager& aManager)
+ :	iManager(aManager)
+	{
+	OstTraceFunctionEntry0( CTESTBASE_CTESTBASE_ENTRY );
+	OstTraceFunctionExit0( CTESTBASE_CTESTBASE_EXIT );
+	}
+
+CTestBase::~CTestBase()
+	{
+	OstTraceFunctionEntry0( DUP1_CTESTBASE_CTESTBASE_ENTRY );
+	OstTraceFunctionExit0( DUP1_CTESTBASE_CTESTBASE_EXIT );
+	}
+
+void CTestBase::ProcessKeyL(TKeyCode /*aKeyCode*/)
+	{
+	OstTraceFunctionEntry0( CTESTBASE_PROCESSKEYL_ENTRY );
+	OstTraceFunctionExit0( CTESTBASE_PROCESSKEYL_EXIT );
+	}
+
+void CTestBase::ProcessKeyL(const TDesC8& /*aString*/)
+	{
+	OstTraceFunctionEntry0( DUP1_CTESTBASE_PROCESSKEYL_ENTRY );
+	OstTraceFunctionExit0( DUP1_CTESTBASE_PROCESSKEYL_EXIT );
+	}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/usbmgmt/usbmgrtest/t_usb_charging/src/usbchargingarmtest.cpp	Thu Sep 16 12:03:29 2010 +0800
@@ -0,0 +1,381 @@
+/*
+* Copyright (c) 2006-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:
+*
+*/
+
+#include <e32cmn.h>
+#include <e32debug.h>
+
+#include "usbchargingarmtest.h"
+#include "usbchargingpublishedinfo.h"
+#include "testmanager.h"
+#include "usbstatewatcher.h"
+#include "usbchargingcurrentwatcher.h"
+#include "OstTraceDefinitions.h"
+#ifdef OST_TRACE_COMPILER_IN_USE
+#include "usbchargingarmtestTraces.h"
+#endif
+
+_LIT(KMsFsy, "MSFS.FSY");
+
+
+CUsbChargingArmTest::CUsbChargingArmTest(MTestManager& aManager)
+ :	CTestBase(aManager)
+	{	
+	OstTraceFunctionEntry0( DUP1_CUSBCHARGINGARMTEST_CUSBCHARGINGARMTEST_ENTRY );
+	OstTraceFunctionEntry0( CUSBCHARGINGARMTEST_CUSBCHARGINGARMTEST_ENTRY );
+	OstTraceFunctionExit0( CUSBCHARGINGARMTEST_CUSBCHARGINGARMTEST_EXIT );	
+	OstTraceFunctionExit0( DUP1_CUSBCHARGINGARMTEST_CUSBCHARGINGARMTEST_EXIT );
+	}
+
+CTestBase* CUsbChargingArmTest::NewL(MTestManager& aManager)
+	{
+	OstTraceFunctionEntry0( CUSBCHARGINGARMTEST_NEWL_ENTRY );
+	CUsbChargingArmTest* self = new(ELeave) CUsbChargingArmTest(aManager);
+	CleanupStack::PushL(self);
+	self->ConstructL();
+	CleanupStack::Pop(self);
+	OstTraceFunctionExit0( CUSBCHARGINGARMTEST_NEWL_EXIT );
+	return self;
+	}
+
+
+int CUsbChargingArmTest::StartMassStorage()
+	{
+    OstTraceFunctionEntry0( CUSBCHARGINGARMTEST_STARTMASSSTORAGE_ENTRY );
+    TInt r = KErrNone;
+    OstTrace0( TRACE_NORMAL, CUSBCHARGINGARMTEST_STARTMASSSTORAGE, "CUsbChargingArmTest::StartMassStorage AddFileSystem" );
+	iManager.Write(_L8("Start Mass Storage"));
+	r = iFs.Connect();
+    if (r != KErrNone)
+        {
+        OstTrace0( TRACE_ERROR, DUP1_CUSBCHARGINGARMTEST_STARTMASSSTORAGE, "CUsbChargingArmTest::StartMassStorage Connect to fs failed" );
+        iManager.Write(_L8("Connect to Fs failed"));    
+        OstTraceFunctionExit0( CUSBCHARGINGARMTEST_STARTMASSSTORAGE_EXIT );
+        return r;
+        }
+	r = iFs.AddFileSystem(KMsFsy);
+	if (r != KErrNone)
+		{
+		OstTrace0( TRACE_ERROR, DUP2_CUSBCHARGINGARMTEST_STARTMASSSTORAGE, "CUsbChargingArmTest::StartMassStorage AddFileSystem failed" );
+		iManager.Write(_L8("AddFileSystem failed"));	
+		OstTraceFunctionExit0( DUP1_CUSBCHARGINGARMTEST_STARTMASSSTORAGE_EXIT );
+		return r;
+		}
+
+	OstTrace0( TRACE_NORMAL, DUP3_CUSBCHARGINGARMTEST_STARTMASSSTORAGE, "CUsbChargingArmTest::StartMassStorage AddFileSystem success" );
+	iManager.Write(_L8("AddFileSystem success"));			
+	OstTraceFunctionExit0( DUP3_CUSBCHARGINGARMTEST_STARTMASSSTORAGE_EXIT );
+	return r;
+	}
+
+
+void CUsbChargingArmTest::ConstructL()
+	{
+	OstTraceFunctionEntry0( CUSBCHARGINGARMTEST_CONSTRUCTL_ENTRY );
+	TInt res;
+	res = StartMassStorage();
+	if(res != KErrNone)
+		{
+		iManager.Write(_L8("start KMsFsy failed"));
+		return;
+		}
+	else
+		{
+		iManager.Write(_L8("start KMsFsy success"));
+		}
+
+	// -- Insert initialization code here
+	iManager.Write(_L8("About to connect to USBMan"));
+	res = iUsbMan.Connect();
+	if(res != KErrNone)
+		{
+		iManager.Write(_L8("Connection to USBMan failed"));
+		return;
+		}
+	else
+		{
+		iManager.Write(_L8("Cconnected to USBMan success"));
+		}
+	iChargingCurrentWatcher = CUsbChargingCurrentWatcher::NewL(*this);
+
+#ifndef	COMMANDLINE_PARAM	
+	iManager.Write(_L8("About to Set Control session"));
+	res = iUsbMan.SetCtlSessionMode(ETrue);
+	if(res != KErrNone)
+		{
+		iManager.Write(_L8("Set Control session failed"));
+		return;
+		}
+	else
+		{
+		iManager.Write(_L8("Set Control session Success"));
+		}
+	
+	iManager.Write(_L8("About to start USBMan"));
+	TRequestStatus requestStatus;
+	iUsbMan.TryStart(1, requestStatus);
+	User::WaitForRequest(requestStatus);
+	if(requestStatus.Int() == KErrNone)
+		{
+		iManager.Write(_L8("USBMan Started Success"));
+	    iUsbStateWatcher = CUsbStateWatcher::NewL(*this);
+		}
+	else
+		{
+		iManager.Write(_L8("Failed to start USBMan"));
+		}
+#endif	
+	OstTraceFunctionExit0( CUSBCHARGINGARMTEST_CONSTRUCTL_EXIT );
+	}
+
+CUsbChargingArmTest::~CUsbChargingArmTest()
+	{
+	OstTraceFunctionEntry0( DUP2_CUSBCHARGINGARMTEST_CUSBCHARGINGARMTEST_ENTRY );
+
+	// -- Insert cleanup code here
+	delete iChargingCurrentWatcher;
+	delete iUsbStateWatcher;
+	iUsbMan.Close();
+	iFs.Close();
+	OstTraceFunctionExit0( DUP2_CUSBCHARGINGARMTEST_CUSBCHARGINGARMTEST_EXIT );
+	}
+
+void CUsbChargingArmTest::ProcessKeyL(TKeyCode aKeyCode)
+	{
+    OstTraceFunctionEntry0( CUSBCHARGINGARMTEST_PROCESSKEYL_ENTRY );
+    TInt res;
+	iManager.Write(_L8("CUsbChargingArmTest::ProcessKeyL"));
+
+	switch ( aKeyCode )
+		{
+	case '1':
+		{
+	    iManager.Write(_L8("About to Set Control session"));
+	    res = iUsbMan.SetCtlSessionMode(ETrue);
+	    if(res != KErrNone)
+	        {
+	        iManager.Write(_L8("Set Control session failed"));
+	        return;
+	        }
+	    else
+	        {
+	        iManager.Write(_L8("Set Control session Success"));
+	        }
+	    
+		iManager.Write(_L8("About to start USBMan"));
+		TRequestStatus requestStatus;
+		iUsbMan.Start(requestStatus);
+		User::WaitForRequest(requestStatus);
+		if(requestStatus.Int() == KErrNone)
+			{
+			iManager.Write(_L8("USBMan Started OK"));
+			if(!iChargingCurrentWatcher)
+			    {
+			    iChargingCurrentWatcher = CUsbChargingCurrentWatcher::NewL(*this);
+			    }
+			if(!iUsbStateWatcher)
+			    {
+			    iUsbStateWatcher = CUsbStateWatcher::NewL(*this);
+			    }			
+			}
+		else
+			{
+			iManager.Write(_L8("Failed to start USBMan"));
+			}
+		}
+		break;
+	case '2':
+		{
+		iManager.Write(_L8("About to stop USBMan"));
+		TRequestStatus requestStatus;
+		iUsbMan.Stop(requestStatus);
+		User::WaitForRequest(requestStatus);
+		if(requestStatus.Int() == KErrNone)
+			{
+			iManager.Write(_L8("USBMan Stopped OK"));
+			}
+		else
+			{
+			iManager.Write(_L8("Failed to stop USBMan"));
+			}
+		}
+		break;
+
+
+	default:
+		iManager.Write(_L8("Unknown selection"));
+		break;
+		}
+	OstTraceFunctionExit0( CUSBCHARGINGARMTEST_PROCESSKEYL_EXIT );
+	}
+
+void CUsbChargingArmTest::DisplayTestSpecificMenu()
+	{
+	OstTraceFunctionEntry0( CUSBCHARGINGARMTEST_DISPLAYTESTSPECIFICMENU_ENTRY );
+	OstTraceFunctionExit0( CUSBCHARGINGARMTEST_DISPLAYTESTSPECIFICMENU_EXIT );
+	}
+
+void CUsbChargingArmTest::ShowUsbChargingValue(TPublishedUsbChargingInfo& aValue)
+    {
+    OstTraceFunctionEntry0( CUSBCHARGINGARMTEST_SHOWUSBCHARGINGVALUE_ENTRY );
+    iManager.Write(_L8("=====Published Current Info====="));
+    ShowChargingType(aValue.iChargingPortType);
+    ShowConnStatus(aValue.iUsbConnStatus);
+    iManager.Write(_L8("MinAvailableVbusCurrent : %d"), aValue.iMinAvailableVbusCurrent);
+    iManager.Write(_L8("MaxVbusCurrent          : %d"), aValue.iMaxVbusCurrent);
+    iManager.Write(_L8("MinVbusVoltage          : %d"), aValue.iMinVbusVoltage);
+    iManager.Write(_L8("===Published Current Info End==="));        
+
+    OstTrace0( TRACE_NORMAL, CUSBCHARGINGARMTEST_SHOWUSBCHARGINGVALUE_DUP1, "CUsbChargingArmTest::ShowUsbChargingValue =====Published Current Info=====" );    
+    OstTrace1( TRACE_NORMAL, CUSBCHARGINGARMTEST_SHOWUSBCHARGINGVALUE_DUP2, "CUsbChargingArmTest::ShowUsbChargingValue;aValue.iChargingPortType=%d", aValue.iChargingPortType );
+    OstTrace1( TRACE_NORMAL, CUSBCHARGINGARMTEST_SHOWUSBCHARGINGVALUE_DUP3, "CUsbChargingArmTest::ShowUsbChargingValue;aValue.iUsbConnStatus=%d", aValue.iUsbConnStatus );
+    OstTrace1( TRACE_NORMAL, CUSBCHARGINGARMTEST_SHOWUSBCHARGINGVALUE_DUP4, "CUsbChargingArmTest::ShowUsbChargingValue;aValue.iMinAvailableVbusCurrent=%u", aValue.iMinAvailableVbusCurrent );
+    OstTrace1( TRACE_NORMAL, CUSBCHARGINGARMTEST_SHOWUSBCHARGINGVALUE_DUP5, "CUsbChargingArmTest::ShowUsbChargingValue;aValue.iMaxVbusCurrent=%u", aValue.iMaxVbusCurrent );
+    OstTrace1( TRACE_NORMAL, CUSBCHARGINGARMTEST_SHOWUSBCHARGINGVALUE_DUP6, "CUsbChargingArmTest::ShowUsbChargingValue;aValue.iMinVbusVoltage=%u", aValue.iMinVbusVoltage );
+    OstTrace0( TRACE_NORMAL, CUSBCHARGINGARMTEST_SHOWUSBCHARGINGVALUE_DUP7, "CUsbChargingArmTest::ShowUsbChargingValue ===Published Current Info End===" );    
+     
+    OstTraceFunctionExit0( CUSBCHARGINGARMTEST_SHOWUSBCHARGINGVALUE_EXIT );
+    }
+
+void CUsbChargingArmTest::ShowUsbDeviceState(TUsbDeviceState aDeviceState)
+    {
+    OstTraceFunctionEntry0( CUSBCHARGINGARMTEST_SHOWUSBDEVICESTATE_ENTRY );
+    TPtrC res(NULL, 0);
+    
+    _LIT(KUndefined, "Undefined");
+    _LIT(KDefault, "Default");
+    _LIT(KAttached, "Attached");
+    _LIT(KPowered, "Powered");
+    _LIT(KConfigured, "Configured");
+    _LIT(KAddress, "Address");
+    _LIT(KSuspended, "Suspended");
+    _LIT(KUnKnown, "UnKnown");  
+      
+    switch(aDeviceState)
+        {
+    case EUsbDeviceStateUndefined:
+        res.Set(KUndefined);
+        break;
+    case EUsbDeviceStateDefault:
+        res.Set(KDefault);
+        break;
+    case EUsbDeviceStateAttached:
+        res.Set(KAttached);
+        break;
+    case EUsbDeviceStatePowered:
+        res.Set(KPowered);
+        break;
+    case EUsbDeviceStateConfigured:
+        res.Set(KConfigured);
+        break;
+    case EUsbDeviceStateAddress:
+        res.Set(KAddress);
+        break;
+    case EUsbDeviceStateSuspended:
+        res.Set(KSuspended);
+        break;
+    default:
+        res.Set(KUnKnown);
+        break;
+        }
+        
+    iManager.Write(_L8("USBDevice State is: %S"), &res);    
+    OstTraceFunctionExit0( CUSBCHARGINGARMTEST_SHOWUSBDEVICESTATE_EXIT );
+    }
+
+void CUsbChargingArmTest::ShowChargingType(TUsbChargingPortType aChargingType)
+    {
+    OstTraceFunctionEntry0( CUSBCHARGINGARMTEST_SHOWCHARGINGTYPE_ENTRY );
+    TPtrC res(NULL, 0);
+
+    _LIT(KPortTypeNone, "None");
+    _LIT(KPortTypeUnsupported, "Unsupported");
+    _LIT(KPortTypeChargingPort, "ChargingPort");
+    _LIT(KPortTypeDedicatedChargingPort, "DedicatedChargingPort");
+    _LIT(KPortTypeStandardDownstreamPort, "StandardDownstreamPort");
+    _LIT(KPortTypeChargingDownstreamPort, "ChargingDownstreamPort");
+    _LIT(KPortTypeAcaRidA, "RidAAca");
+    _LIT(KPortTypeAcaRidB, "RidBAca");
+    _LIT(KPortTypeAcaRidC, "RidCAca");
+    _LIT(KUnKnown, "UnKnown");  
+
+    switch (aChargingType)
+        {
+        case EUsbChargingPortTypeNone:
+            res.Set(KPortTypeNone);
+            break;
+        case EUsbChargingPortTypeUnsupported:
+            res.Set(KPortTypeUnsupported);
+            break;
+        case EUsbChargingPortTypeChargingPort:  
+            res.Set(KPortTypeChargingPort);
+            break;
+        case EUsbChargingPortTypeDedicatedChargingPort:
+            res.Set(KPortTypeDedicatedChargingPort);
+            break;              
+        case EUsbChargingPortTypeChargingDownstreamPort:
+            res.Set(KPortTypeChargingDownstreamPort);
+            break;
+        case EUsbChargingPortTypeStandardDownstreamPort:
+            res.Set(KPortTypeStandardDownstreamPort);
+            break;
+        case EUsbChargingPortTypeAcaRidA:
+            res.Set(KPortTypeAcaRidA);
+            break;
+        case EUsbChargingPortTypeAcaRidB:
+            res.Set(KPortTypeAcaRidB);
+            break;
+        case EUsbChargingPortTypeAcaRidC:
+            res.Set(KPortTypeAcaRidC);
+            break;
+        default:
+            res.Set(KUnKnown);
+            break;
+        }
+    iManager.Write(_L8("ChargingPortType: %S"), &res);    
+    OstTraceFunctionExit0( CUSBCHARGINGARMTEST_SHOWCHARGINGTYPE_EXIT );
+    }
+
+void CUsbChargingArmTest::ShowConnStatus(TUsbConnectionStatus aStatus)
+    {
+    OstTraceFunctionEntry0( CUSBCHARGINGARMTEST_SHOWCONNSTATUS_ENTRY );
+    TPtrC res(NULL, 0);
+    
+    _LIT(KNone, "None");
+    _LIT(KConfigured, "Configured");
+    _LIT(KSuspended, "Suspend");
+    _LIT(KUnKnown, "UnKnown");  
+      
+    switch(aStatus)
+        {
+    case EUsbConnectionStatusNone:
+        res.Set(KNone);
+        break;
+    case EUsbConnectionStatusSuspend:
+        res.Set(KSuspended);
+        break;
+    case EUsbConnectionStatusConfigured:
+        res.Set(KConfigured);
+        break;
+    default:
+        res.Set(KUnKnown);
+        break;
+        }
+        
+    iManager.Write(_L8("ConnectionStatus: %S"), &res);    
+    OstTraceFunctionExit0( CUSBCHARGINGARMTEST_SHOWCONNSTATUS_EXIT );
+    }    
+    
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/usbmgmt/usbmgrtest/t_usb_charging/src/usbchargingcurrentwatcher.cpp	Thu Sep 16 12:03:29 2010 +0800
@@ -0,0 +1,92 @@
+// Copyright (c) 2006-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of the License "Symbian Foundation License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+#include <e32cmn.h>
+#include <e32debug.h>
+#include <usbchargingpublishedinfo.h>
+
+#include "usbchargingcurrentwatcher.h"
+#include "testmanager.h"
+#include "OstTraceDefinitions.h"
+#ifdef OST_TRACE_COMPILER_IN_USE
+#include "usbchargingcurrentwatcherTraces.h"
+#endif
+
+
+CUsbChargingCurrentWatcher* CUsbChargingCurrentWatcher::NewL(CUsbChargingArmTest& aUsbChargingArm)
+    {
+    OstTraceFunctionEntry0( CUSBCHARGINGCURRENTWATCHER_NEWL_ENTRY );
+    CUsbChargingCurrentWatcher* self = new(ELeave) CUsbChargingCurrentWatcher(aUsbChargingArm);
+    CleanupStack::PushL(self);
+    self->ConstructL();
+    CleanupStack::Pop(self);
+    OstTraceFunctionExit0( CUSBCHARGINGCURRENTWATCHER_NEWL_EXIT );
+    return self;
+    }
+
+CUsbChargingCurrentWatcher::~CUsbChargingCurrentWatcher()
+    {
+    OstTraceFunctionEntry0( CUSBCHARGINGCURRENTWATCHER_CUSBCHARGINGCURRENTWATCHER_ENTRY );
+    Cancel();
+    iChargingCurrentProp.Close();
+    OstTraceFunctionExit0( CUSBCHARGINGCURRENTWATCHER_CUSBCHARGINGCURRENTWATCHER_EXIT );
+    }
+
+CUsbChargingCurrentWatcher::CUsbChargingCurrentWatcher(CUsbChargingArmTest& aUsbChargingArm)
+    : CActive(EPriorityStandard)
+    , iUsbChargingArm(aUsbChargingArm)
+    {
+    OstTraceFunctionEntry0( DUP1_CUSBCHARGINGCURRENTWATCHER_CUSBCHARGINGCURRENTWATCHER_ENTRY );
+    CActiveScheduler::Add(this);
+    OstTraceFunctionExit0( DUP1_CUSBCHARGINGCURRENTWATCHER_CUSBCHARGINGCURRENTWATCHER_EXIT );
+    }
+
+void CUsbChargingCurrentWatcher::ConstructL()
+    {
+    OstTraceFunctionEntry0( CUSBCHARGINGCURRENTWATCHER_CONSTRUCTL_ENTRY );
+    User::LeaveIfError(iChargingCurrentProp.Attach(KPropertyUidUsbBatteryChargingCategory, KPropertyUidUsbBatteryChargingInfo));
+    
+    PostAndNotifyCurrentL();
+    OstTraceFunctionExit0( CUSBCHARGINGCURRENTWATCHER_CONSTRUCTL_EXIT );
+    }
+
+void CUsbChargingCurrentWatcher::DoCancel()
+    {
+    OstTraceFunctionEntry0( CUSBCHARGINGCURRENTWATCHER_DOCANCEL_ENTRY );
+    iChargingCurrentProp.Cancel();
+    OstTraceFunctionExit0( CUSBCHARGINGCURRENTWATCHER_DOCANCEL_EXIT );
+    }
+
+void CUsbChargingCurrentWatcher::RunL()
+    {
+    OstTraceFunctionEntry0( CUSBCHARGINGCURRENTWATCHER_RUNL_ENTRY );
+    PostAndNotifyCurrentL();
+    OstTraceFunctionExit0( CUSBCHARGINGCURRENTWATCHER_RUNL_EXIT );
+    }
+
+void CUsbChargingCurrentWatcher::PostAndNotifyCurrentL()
+    {
+    OstTraceFunctionEntry0( CUSBCHARGINGCURRENTWATCHER_POSTANDNOTIFYCURRENTL_ENTRY );
+    iChargingCurrentProp.Subscribe(iStatus);
+    SetActive();
+
+    TPckgBuf<TPublishedUsbChargingInfo>  aChargingInfo;
+    TInt err = iChargingCurrentProp.Get(aChargingInfo);
+    User::LeaveIfError(err);
+    OstTrace0( TRACE_NORMAL, CUSBCHARGINGCURRENTWATCHER_POSTANDNOTIFYCURRENTL, "CUsbChargingCurrentWatcher::PostAndNotifyCurrentL get P/S key changed" );
+    iUsbChargingArm.ShowUsbChargingValue(aChargingInfo());    
+    OstTraceFunctionExit0( CUSBCHARGINGCURRENTWATCHER_POSTANDNOTIFYCURRENTL_EXIT );
+    }
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/usbmgmt/usbmgrtest/t_usb_charging/src/usbstatewatcher.cpp	Thu Sep 16 12:03:29 2010 +0800
@@ -0,0 +1,88 @@
+// Copyright (c) 2006-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of the License "Symbian Foundation License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+#include "usbstatewatcher.h"
+#include <e32cmn.h>
+#include "testmanager.h"
+#include "OstTraceDefinitions.h"
+#ifdef OST_TRACE_COMPILER_IN_USE
+#include "usbstatewatcherTraces.h"
+#endif
+
+
+CUsbStateWatcher* CUsbStateWatcher::NewL(CUsbChargingArmTest& aUsbChargingArm)
+    {
+    OstTraceFunctionEntry0( CUSBSTATEWATCHER_NEWL_ENTRY );
+    CUsbStateWatcher* self = new(ELeave) CUsbStateWatcher(aUsbChargingArm);
+    CleanupStack::PushL(self);
+    self->ConstructL();
+    CleanupStack::Pop(self);
+    OstTraceFunctionExit0( CUSBSTATEWATCHER_NEWL_EXIT );
+    return self;
+    }
+
+CUsbStateWatcher::~CUsbStateWatcher()
+    {
+    OstTraceFunctionEntry0( CUSBSTATEWATCHER_CUSBSTATEWATCHER_ENTRY );
+    Cancel();
+    OstTraceFunctionExit0( CUSBSTATEWATCHER_CUSBSTATEWATCHER_EXIT );
+    }
+
+CUsbStateWatcher::CUsbStateWatcher(CUsbChargingArmTest& aUsbChargingArm)
+    : CActive(EPriorityStandard)
+    , iUsbChargingArm(aUsbChargingArm)
+    {
+    OstTraceFunctionEntry0( DUP1_CUSBSTATEWATCHER_CUSBSTATEWATCHER_ENTRY );
+    CActiveScheduler::Add(this);
+    OstTraceFunctionExit0( DUP1_CUSBSTATEWATCHER_CUSBSTATEWATCHER_EXIT );
+    }
+
+void CUsbStateWatcher::ConstructL()
+    {
+    OstTraceFunctionEntry0( CUSBSTATEWATCHER_CONSTRUCTL_ENTRY );
+    GetAndShowDeviceStateL();
+    OstTraceFunctionExit0( CUSBSTATEWATCHER_CONSTRUCTL_EXIT );
+    }
+
+void CUsbStateWatcher::DoCancel()
+    {
+    OstTraceFunctionEntry0( CUSBSTATEWATCHER_DOCANCEL_ENTRY );
+    iUsbChargingArm.Usb().DeviceStateNotificationCancel();
+    OstTraceFunctionExit0( CUSBSTATEWATCHER_DOCANCEL_EXIT );
+    }
+
+void CUsbStateWatcher::RunL()
+    {
+    OstTraceFunctionEntry0( CUSBSTATEWATCHER_RUNL_ENTRY );
+    GetAndShowDeviceStateL();
+    OstTraceFunctionExit0( CUSBSTATEWATCHER_RUNL_EXIT );
+    }
+
+void CUsbStateWatcher::GetAndShowDeviceStateL()
+    {
+    OstTraceFunctionEntry0( CUSBSTATEWATCHER_GETANDSHOWDEVICESTATEL_ENTRY );
+    TUsbDeviceState deviceState;
+    User::LeaveIfError(iUsbChargingArm.Usb().GetDeviceState(deviceState));
+    if(deviceState != iDeviceState)
+        {
+        deviceState = iDeviceState;
+        }
+    iUsbChargingArm.ShowUsbDeviceState(deviceState);  
+    
+    iUsbChargingArm.Usb().DeviceStateNotification(0xffffffff, iDeviceState, iStatus);
+    SetActive();    
+    OstTraceFunctionExit0( CUSBSTATEWATCHER_GETANDSHOWDEVICESTATEL_EXIT );
+    }
+
--- a/usbmgmt/usbmgrtest/t_usbmanager_suite/Stub1CC/src/Stub1CC.cpp	Mon Sep 06 11:27:08 2010 +0800
+++ b/usbmgmt/usbmgrtest/t_usbmanager_suite/Stub1CC/src/Stub1CC.cpp	Thu Sep 16 12:03:29 2010 +0800
@@ -25,6 +25,7 @@
 #include <usb_std.h>
 #include <es_ini.h>
 #include <d32usbc.h>
+#include <usb/usbmaninternalconstants.h>
 #include "Stub1CC.h"
 
 #ifdef __FLOG_ACTIVE
@@ -32,7 +33,7 @@
 #endif
 
 
-#include "usbmaninternalconstants.h"
+
 #include "OstTraceDefinitions.h"
 #ifdef OST_TRACE_COMPILER_IN_USE
 #include "Stub1CCTraces.h"
--- a/usbmgmt/usbmgrtest/t_usbmanager_suite/Stub2CC/src/Stub2CC.cpp	Mon Sep 06 11:27:08 2010 +0800
+++ b/usbmgmt/usbmgrtest/t_usbmanager_suite/Stub2CC/src/Stub2CC.cpp	Thu Sep 16 12:03:29 2010 +0800
@@ -24,6 +24,7 @@
 #include <usb_std.h>
 #include <es_ini.h>
 #include <d32usbc.h>
+#include <usb/usbmaninternalconstants.h>
 #include "Stub2CC.h"
 
 #ifdef __FLOG_ACTIVE
@@ -31,7 +32,7 @@
 #endif
 
 
-#include "usbmaninternalconstants.h"
+
 #include "OstTraceDefinitions.h"
 #ifdef OST_TRACE_COMPILER_IN_USE
 #include "Stub2CCTraces.h"
--- a/usbmgmt/usbmgrtest/t_usbmanager_suite/Stub3CC/src/Stub3CC.cpp	Mon Sep 06 11:27:08 2010 +0800
+++ b/usbmgmt/usbmgrtest/t_usbmanager_suite/Stub3CC/src/Stub3CC.cpp	Thu Sep 16 12:03:29 2010 +0800
@@ -25,6 +25,7 @@
 #include <usb_std.h>
 #include <es_ini.h>
 #include <d32usbc.h>
+#include <usb/usbmaninternalconstants.h>
 #include "Stub3CC.h"
 
 #ifdef __FLOG_ACTIVE
@@ -32,7 +33,7 @@
 #endif
 
 
-#include "usbmaninternalconstants.h"
+
 #include "OstTraceDefinitions.h"
 #ifdef OST_TRACE_COMPILER_IN_USE
 #include "Stub3CCTraces.h"