# HG changeset patch # User Dremov Kirill (Nokia-D-MSW/Tampere) # Date 1284702015 -10800 # Node ID eaaed528d5fd88d85d20610cd70f9c3b98331680 # Parent 613028a7da24ce5495072bfb3042858e858eb024 Revision: 201037 Kit: 201037 diff -r 613028a7da24 -r eaaed528d5fd usb_plat/usb_shai_api/group/bld.inf --- a/usb_plat/usb_shai_api/group/bld.inf Thu Sep 02 22:23:37 2010 +0300 +++ b/usb_plat/usb_shai_api/group/bld.inf Fri Sep 17 08:40:15 2010 +0300 @@ -19,6 +19,7 @@ PRJ_PLATFORMS ARMV5 +ARMV5SMP PRJ_EXPORTS @@ -30,3 +31,5 @@ ../inc/usb_peripheral_shai.inl SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(usb/) ../inc/usb_peripheral_shai_shared.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(usb/) ../inc/usb_charger_detection_shai.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(usb/) +../inc/usb_charger_detection_shai_shared.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(usb/) + diff -r 613028a7da24 -r eaaed528d5fd usb_plat/usb_shai_api/inc/usb_charger_detection_shai.h --- a/usb_plat/usb_shai_api/inc/usb_charger_detection_shai.h Thu Sep 02 22:23:37 2010 +0300 +++ b/usb_plat/usb_shai_api/inc/usb_charger_detection_shai.h Fri Sep 17 08:40:15 2010 +0300 @@ -17,7 +17,7 @@ /** @file @brief USB Charger Detection SHAI header - @version 0.2.0 + @version 0.3.0 This header specifies the USB Charger Detection SHAI. @@ -30,6 +30,8 @@ // System includes #include +#include // Common types shared with upper layers + /** * This macro specifies the version of the USB Charger Detection SHAI @@ -39,139 +41,12 @@ * older environment with old USB SHAI version that is missing some * new definitions. */ -#define USB_CHARGER_DETECTION_SHAI_VERSION 0x020 +#define USB_CHARGER_DETECTION_SHAI_VERSION 0x030 // The namespace is documented in file usb_common_shai.h, so it is not // repeated here namespace UsbShai { - // Data types - - /** - * An enumeration listing the different port types that can be - * reported to the PIL layer by a registered Charger Detector - * PSL. The available types mostly correspond to those mentioned - * in the Battery Charging Specification Revision 1.1. - */ - enum TPortType - { - /** - * This type is reported to indicate that the Charger Detector - * PSL has detected that we are no longer connected to a - * powered port. This situation occurs when VBUS driven from - * outside drops, or the Accessory Charger Adapter changes the - * RID state from RID_A to RID_GND (which usually also means - * that VBUS will drop very soon). - */ - EPortTypeNone = 0, - - /** - * This type is reported to indicate that the Charger - * Detector PSL has detected that our device is connected to - * an unsupported port. One common type of an unsupported port - * is a PS/2 to USB adapter connected to a PS/2 port of a - * computer. - */ - EPortTypeUnsupported, - - /** - * This type is reported when the Charger Detector PSL has - * detected that our device is connected to a charging port, - * but has not yet distinguished whether the port is a - * Charging Downstream Port or a Dedicated Charging Port. - * - * When this port type is detected, the upper layers will - * connect to the USB bus as the peripheral by requesting the - * Peripheral Controller PSL to assert the D+ pull-up. The - * Charger Detector PSL can then detect the exact port type by - * observing what happens to the level of the D- line, as - * specified in the Battery Charging Specification. Upon - * detecting the exact port type, the Charger Detector PSL can - * notify a new event with the correct type. - * - * If the Charger Detector PSL can directly distinguish the - * exact port type, the PSL does not need to report this - * generic charging port type, but can directly report the - * more specific type EPortTypeDedicatedChargingPort or - * EPortTypeChargingDownstreamPort. - */ - EPortTypeChargingPort, - - /** - * This type is reported when the Charger Detector PSL has - * detected that our device is connected to a Dedicated - * Charging Port. - * - * When this port type is detected, the upper layers will - * connect to the USB bus as the peripheral by requesting the - * Peripheral Controller PSL to assert the D+ pull-up, as - * specified in the Battery Charging Specification. - */ - EPortTypeDedicatedChargingPort, - - /** - * This type is reported when the Charger Detector PSL has - * detected that our device is connected to a Charging - * Downstream Port. - * - * When this port type is detected, the upper layers will - * connect to the USB bus as the peripheral by requesting the - * Peripheral Controller PSL to assert the D+ pull-up, as - * specified in the Battery Charging Specification. - */ - EPortTypeChargingDownstreamPort, - - /** - * This type is reported when the Charger Detector PSL has - * detected that our device is connected to a Standard - * Downstream Port. - * - * When this port type is detected, the upper layers will - * connect to the USB bus as the peripheral by requesting the - * Peripheral Controller PSL to assert the D+ pull-up, as - * specified in the Battery Charging Specification. - */ - EPortTypeStandardDownstreamPort, - - /** - * This type is reported when the Charger Detector PSL has - * detected that our device is connected to the OTG port of an - * Accessory Charger Adapter and the ID pin is in the RID_A - * range. - * - * When this port type is detected in an OTG-capable device, - * the OTG State Machine will default to the host role. - */ - EPortTypeAcaRidA, - - /** - * This type is reported when the Charger Detector PSL has - * detected that our device is connected to the OTG port of an - * Accessory Charger Adapter and the ID pin is in the RID_B - * range. - * - * When this port type is detected, the USB Peripheral PIL - * layer will ensure that the Peripheral Controller PSL is not - * allowed to connect to the bus, as required by the Battery - * Charging Specification. - */ - EPortTypeAcaRidB, - - /** - * This type is reported when the Charger Detector PSL has - * detected that our device is connected to the OTG port of an - * Accessory Charger Adapter and the ID pin is in the RID_C - * range. - * - * When this port type is detected, the upper layers will - * connect to the USB bus as the peripheral by requesting the - * Peripheral Controller PSL to assert the D+ pull-up, as - * specified in the Battery Charging Specification. - */ - EPortTypeAcaRidC, - }; - - // Class declaration /** @@ -204,17 +79,24 @@ * MUsbPeripheralPilCallbackIf::DeviceEventNotification(). For * an OTG-capable port, the requirement is documented in * usb_otg_shai.h, function - * MOtgObserverIf::NotifyVbusState(). + * MOtgObserverIf::NotifyIdPinAndVbusState(). * * 2. When VBUS is high, the Charger Detector PSL needs to * observe changes in the ID pin state, if the Charger - * Detector PSL support detecting the port types relevant + * Detector PSL supports detecting the port types relevant * to Accessory Charger Adapter. This requirement is * documented in more detail in usb_otg_shai.h, function - * MOtgObserverIf::NotifyIdPinState(). + * MOtgObserverIf::NotifyIdPinAndVbusState(). + * + * 3. When our device has been detached from a reported port + * type (for example, the Charger Detector PSL reported + * port type for Standard Downstream Port and later VBUS + * drops indicating disconnect), the Charger Detector PSL + * must report the disconnection by notifying port type + * EPortTypeNone. * * @param aPortType The type of the port detected - */ + */ virtual void NotifyPortType( TPortType aPortType ) = 0; }; @@ -241,20 +123,20 @@ * Controller PSL, or at least that the Peripheral Controller PSL * is communicating with the Charger Detector PSL. This is * necessary to ensure that the necessary parts of charger - * detection are run before reporting VBUS high, and that the - * Peripheral Controller and the charger detection can safely - * share the bus without conflict (as both will need to touch the - * line state). See usb_peripheral_shai.h, + * detection are run before reporting VBUS high (when Data Contact + * Detect is supported), and that the Peripheral Controller and + * the charger detection can safely share the bus without conflict + * (as both will need to touch the line state). See + * usb_peripheral_shai.h, * MUsbPeripheralPilCallbackIf::DeviceEventNotification() for - * description of the requirements. + * description of the requirements for peripheral-only PSLs. * * Similarly, it is expected that the Charger Detector interface * for an OTG-capable port is implemented by the OTG Controller * PSL, or at least that the OTG Controller PSL is communicating * with the Charger Detector PSL. See usb_otg_shai.h, - * MOtgObserverIf::NotifyIdPinState() and - * MOtgObserverIf::NotifyVbusState() for description of the - * requirements. + * MOtgObserverIf::NotifyIdPinAndVbusState() for description of + * the requirements for OTG-capable PSLs. * * When the PIL layer is ready to receive charger detection * notifications from the PSL, it will use this interface to @@ -283,85 +165,6 @@ /** - * This class specifies the information provided by a Charger - * Detector PSL when registering to the PIL layer. - * - * The PSL should prepare for the possibility that members may be - * added to the end of this class in later SHAI versions if new - * information is needed to support new features. The PSL should - * not use this class as a direct member in an object that is not - * allowed to grow in size due to binary compatibility reasons. - * - * @see UsbChargerDetectionPil::RegisterChargerDetector() - */ - NONSHARABLE_CLASS( TChargerDetectorProperties ) - { - public: // Types and constants - /** - * A bitmask type used to indicate the static capabilities of - * the Charger Detector. - */ - typedef TUint32 TChargerDetectorCaps; - - /** - * Capability bit to indicate whether the USB system below the - * SHAI (either in HW or in the low-level SW) supports - * automatically reducing charging current for the duration of - * the USB high-speed chirp signalling. See Battery Charging - * Specification Revision 1.1, Chapter 3.6.2 for description - * of the problem. - * - * If the system does not support this feature, the upper - * layer USB components that calculate available charging - * current will always limit the charging current taken from a - * Charging Downstream Port so that the maximum current during - * chirp is not violated. - * - * If the system supports this feature, the full available - * charging current from a Charging Downstream Port is - * utilized. It is then the responsibility of the HW or some - * low-level SW below to SHAI to ensure that the charging - * current is automatically reduced for the duration of chirp - * signalling. - * - * If the system supports this feature, the PSL shall set the - * corresponding bit in iCapabilities (by bitwise OR'ing this - * value). Otherwise the PSL shall clear the corresponding bit - * in iCapabilities. - */ - static const TChargerDetectorCaps KChargerDetectorCapChirpCurrentLimiting = 0x00000001; - - public: - /** - * Inline constructor for the Charger Detector properties - * object. This is inline rather than an exported function to - * prevent a binary break in a case where an older PSL binary - * might provide the constructor a smaller object due to the - * PSL being compiled against an older version of the SHAI - * header. When it's inline, the function is always in sync - * with the object size. - * - * We slightly violate the coding conventions which say that - * inline functions should be in their own file. We don't want - * to double the number of USB SHAI headers just for sake of a - * trivial constructor. - */ - inline TChargerDetectorProperties() : - iCapabilities(0) - { - }; - - public: // Data - /** - * A bitmask specifying the static capabilities of this - * Charger Detector. The PSL fills this field by bitwise - * OR'ing the TChargerDetectorCaps capability bits - * corresponding to supported features. - */ - TChargerDetectorCaps iCapabilities; - }; - - /** * A static class implemented by the USB PIL layer to allow the * PSL layer to register its charger detector component to the PIL * layer. @@ -383,13 +186,14 @@ * bootup). * * @param aChargerDetector Reference to the Charger Detector - * interface implemented by the registering PSL. + * interface implemented by the registering PSL. The PIL + * layer requires that the supplied reference remains valid + * indefinitely, as the Charger Detector PSL cannot unregister. * * @param aProperties Reference to an object describing the - * static properties of the Charger Detector. The PIL layer - * requires that the supplied reference remains valid - * indefinitely, as the registering Charger Detector cannot - * unregister. + * static properties of the Charger Detector. The PIL takes + * a copy and the PSL is free to release the properties + * object upon return. * * @lib usbperipheralpil.lib */ diff -r 613028a7da24 -r eaaed528d5fd usb_plat/usb_shai_api/inc/usb_charger_detection_shai_shared.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/usb_plat/usb_shai_api/inc/usb_charger_detection_shai_shared.h Fri Sep 17 08:40:15 2010 +0300 @@ -0,0 +1,253 @@ +/* +* 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 + @brief USB Charger Detection SHAI shared constants and types + @version 0.3.0 + + This header specifies USB Charger Detection SHAI common types and + constants used by both the kernel side code and user side code. It + is automatically included by the USB Charger Detection SHAI header + and is not intended to be directly included by SHAI + implementations. + + The file is versioned for the sake of the human reader and follows + the version of the USB Charger Detection SHAI header + usb_charger_detection_shai.h. + + @publishedDeviceAbstraction +*/ + + +#ifndef USB_CHARGER_DETECTION_SHAI_SHARED_H +#define USB_CHARGER_DETECTION_SHAI_SHARED_H + + +// The namespace is documented in file usb_common_shai.h, so it is not +// repeated here +namespace UsbShai + { + // Data types + + /** + * An enumeration listing the different port types that can be + * reported to the PIL layer by a registered Charger Detector + * PSL. The available types mostly correspond to those mentioned + * in the Battery Charging Specification Revision 1.1. + */ + enum TPortType + { + /** + * This type is reported to indicate that the Charger Detector + * PSL has detected that we are no longer connected to a + * powered port. This situation occurs when VBUS driven from + * outside drops, or the Accessory Charger Adapter changes the + * RID state from RID_A to RID_GND (which usually also means + * that VBUS will drop very soon). + */ + EPortTypeNone = 0, + + /** + * This type is reported to indicate that the Charger + * Detector PSL has detected that our device is connected to + * an unsupported port. One common type of an unsupported port + * is a PS/2 to USB adapter connected to a PS/2 port of a + * computer. + */ + EPortTypeUnsupported, + + /** + * This type is reported when the Charger Detector PSL has + * detected that our device is connected to a charging port, + * but has not yet distinguished whether the port is a + * Charging Downstream Port or a Dedicated Charging Port. + * + * When this port type is detected, the upper layers will + * connect to the USB bus as the peripheral by requesting the + * Peripheral Controller PSL to assert the D+ pull-up. The + * Charger Detector PSL can then detect the exact port type by + * observing what happens to the level of the D- line, as + * specified in the Battery Charging Specification. Upon + * detecting the exact port type, the Charger Detector PSL can + * notify a new event with the correct type. + * + * If the Charger Detector PSL can directly distinguish the + * exact port type, the PSL does not need to report this + * generic charging port type, but can directly report the + * more specific type EPortTypeDedicatedChargingPort or + * EPortTypeChargingDownstreamPort. + */ + EPortTypeChargingPort, + + /** + * This type is reported when the Charger Detector PSL has + * detected that our device is connected to a Dedicated + * Charging Port. + * + * When this port type is detected, the upper layers will + * connect to the USB bus as the peripheral by requesting the + * Peripheral Controller PSL to assert the D+ pull-up, as + * specified in the Battery Charging Specification. + */ + EPortTypeDedicatedChargingPort, + + /** + * This type is reported when the Charger Detector PSL has + * detected that our device is connected to a Charging + * Downstream Port. + * + * When this port type is detected, the upper layers will + * connect to the USB bus as the peripheral by requesting the + * Peripheral Controller PSL to assert the D+ pull-up, as + * specified in the Battery Charging Specification. + */ + EPortTypeChargingDownstreamPort, + + /** + * This type is reported when the Charger Detector PSL has + * detected that our device is connected to a Standard + * Downstream Port. + * + * When this port type is detected, the upper layers will + * connect to the USB bus as the peripheral by requesting the + * Peripheral Controller PSL to assert the D+ pull-up, as + * specified in the Battery Charging Specification. + */ + EPortTypeStandardDownstreamPort, + + /** + * This type is reported when the Charger Detector PSL has + * detected that our device is connected to the OTG port of an + * Accessory Charger Adapter and the ID pin is in the RID_A + * range. + * + * When this port type is detected in an OTG-capable device, + * the OTG State Machine will default to the host role. + */ + EPortTypeAcaRidA, + + /** + * This type is reported when the Charger Detector PSL has + * detected that our device is connected to the OTG port of an + * Accessory Charger Adapter and the ID pin is in the RID_B + * range. + * + * When this port type is detected, the USB Peripheral PIL + * layer will ensure that the Peripheral Controller PSL is not + * allowed to connect to the bus, as required by the Battery + * Charging Specification. + */ + EPortTypeAcaRidB, + + /** + * This type is reported when the Charger Detector PSL has + * detected that our device is connected to the OTG port of an + * Accessory Charger Adapter and the ID pin is in the RID_C + * range. + * + * When this port type is detected, the upper layers will + * connect to the USB bus as the peripheral by requesting the + * Peripheral Controller PSL to assert the D+ pull-up, as + * specified in the Battery Charging Specification. + */ + EPortTypeAcaRidC, + }; + + + /** + * This class specifies the information provided by a Charger + * Detector PSL when registering to the PIL layer. + * + * The PSL should prepare for the possibility that members may be + * added to the end of this class in later SHAI versions if new + * information is needed to support new features. The PSL should + * not use this class as a direct member in an object that is not + * allowed to grow in size due to binary compatibility reasons. + * + * @see UsbChargerDetectionPil::RegisterChargerDetector() + */ + NONSHARABLE_CLASS( TChargerDetectorProperties ) + { + public: // Types and constants + /** + * A bitmask type used to indicate the static capabilities of + * the Charger Detector. + */ + typedef TUint32 TChargerDetectorCaps; + + /** + * Capability bit to indicate whether the USB system below the + * SHAI (either in HW or in the low-level SW) supports + * automatically reducing charging current for the duration of + * the USB high-speed chirp signalling. See Battery Charging + * Specification Revision 1.1, Chapter 3.6.2 for description + * of the problem. + * + * If the system does not support this feature, the upper + * layer USB components that calculate available charging + * current will always limit the charging current taken from a + * Charging Downstream Port so that the maximum current during + * chirp is not violated. + * + * If the system supports this feature, the full available + * charging current from a Charging Downstream Port is + * utilized. It is then the responsibility of the HW or some + * low-level SW below to SHAI to ensure that the charging + * current is automatically reduced for the duration of chirp + * signalling. + * + * If the system supports this feature, the PSL shall set the + * corresponding bit in iCapabilities (by bitwise OR'ing this + * value). Otherwise the PSL shall clear the corresponding bit + * in iCapabilities. + */ + static const TChargerDetectorCaps KChargerDetectorCapChirpCurrentLimiting = 0x00000001; + + public: + /** + * Inline constructor for the Charger Detector properties + * object. This is inline rather than an exported function to + * prevent a binary break in a case where an older PSL binary + * might provide the constructor a smaller object due to the + * PSL being compiled against an older version of the SHAI + * header. When it's inline, the function is always in sync + * with the object size. + * + * We slightly violate the coding conventions which say that + * inline functions should be in their own file. We don't want + * to double the number of USB SHAI headers just for sake of a + * trivial constructor. + */ + inline TChargerDetectorProperties() : + iCapabilities(0) + { + }; + + public: // Data + /** + * A bitmask specifying the static capabilities of this + * Charger Detector. The PSL fills this field by bitwise + * OR'ing the TChargerDetectorCaps capability bits + * corresponding to supported features. + */ + TChargerDetectorCaps iCapabilities; + }; + }; + +#endif //USB_CHARGER_DETECTION_SHAI_SHARED_H +// END of file + diff -r 613028a7da24 -r eaaed528d5fd usb_plat/usb_shai_api/inc/usb_host_shai.h --- a/usb_plat/usb_shai_api/inc/usb_host_shai.h Thu Sep 02 22:23:37 2010 +0300 +++ b/usb_plat/usb_shai_api/inc/usb_host_shai.h Fri Sep 17 08:40:15 2010 +0300 @@ -17,7 +17,7 @@ /** @file @brief USB Host SHAI header - @version 0.2.0 + @version 0.3.0 This header specifies the USB host SHAI. @@ -40,7 +40,7 @@ * environment with old USB SHAI version that is missing some new * definitions. */ -#define USB_HOST_SHAI_VERSION 0x020 +#define USB_HOST_SHAI_VERSION 0x030 // The namespace is documented in file usb_common_shai.h, so it is not // repeated here @@ -56,99 +56,47 @@ // Data types /** - * An enumeration listing the host role electrical test modes - * supported. These correspond to the test modes specified in - * Section "6.4.1.1 Test Modes" of the "On-The-Go and Embedded - * Host Supplement to the USB Revision 2.0 Specification" Revision - * 2.0 (a.k.a. USB OTG 2.0). + * An enumeration listing the host role electrical test modes that + * require special support from the host controller. These + * correspond to the test modes specified in Section "6.4.1.1 Test + * Modes" of the "On-The-Go and Embedded Host Supplement to the + * USB Revision 2.0 Specification" Revision 2.0 (a.k.a. USB OTG + * 2.0). + * + * The single-step control transfer tests are performed as + * transfers on the control pipe, but a special transfer flag + * THostTransfer::KSingleStepControlDelayedDataPhase requests the + * Host Controller PSL to delay the DATA phase when needed. + * + * Suspend and resume tests are performed using the normal suspend + * and resume functionality in the USB Host SHAI, so they are not + * a special case for the Host Controller PSL. * * @see MHostControllerIf::EnterHostTestMode() */ enum THostTestMode { /** - * Drive SE0 until host controller is reset. The call returns - * immediately after enabling the test mode. + * Drive SE0 until the host controller is reset. */ ETestModeTestSE0NAK = 0, /** - * Drive high-speed J until host controller is reset. The call - * returns immediately after enabling the test mode. + * Drive high-speed J until the host controller is reset. */ ETestModeTestJ, /** - * Drive high-speed K until host controller is reset. The call - * returns immediately after enabling the test mode. + * Drive high-speed K until the host controller is reset. */ ETestModeTestK, /** - * Send test packets until host controller is reset. The + * Send test packets until the host controller is reset. The * format of the required test packet is specified in Section * "7.1.20 Test Mode Support" of the USB 2.0 specification. - * - * The call returns immediately after enabling the test - * mode. */ - ETestModeTestPacket, - - /** - * Suspend and resume the port with 15 second delays to allow - * the operator to adjust test tool settings. The Host - * Controller PSL must perform the following test steps: - * - * 1. Allow SOFs to continue for 15 seconds. - * - * 2. Suspend the port under test. - * - * 3. Wait for 15 seconds. - * - * 4. Resume the port under test. - * - * This test mode is synchronous, i.e. the call returns after - * the test has been completed. - */ - ETestModeHsHostPortSuspendResume, - - /** - * Perform a single-step GetDescriptor(Device) transfer. This - * is called after the USB Host Stack has enumerated a device - * with VID=0x1A0A and PID=0x0107. The Host Controller PSL - * must perform the following test steps: - * - * 1. Allow SOFs to continue for 15 seconds. - * - * 2. Send a complete GetDescriptor(Device) transfer - * - * This test mode is synchronous, i.e. the call returns after - * the test has been completed. - */ - ETestModeSingleStepGetDeviceDescriptor, - - /** - * Perform a single-step GetDescriptor(Device) transfer with a - * delayed data phase. This is called after the USB Host Stack - * has enumerated a device with VID=0x1A0A and PID=0x0108. The - * Host Controller PSL must perform the following test steps: - * - * 1. Send the SETUP packet for GetDescriptor(Device). The - * device ACKs the packet as usual. - * - * 2. Allow SOFs to continue for 15 seconds. - * - * 3. Send the IN token for the data phase of - * GetDescriptor(Device). The device responds with - * the data. - * - * 4. Send the acknowledgement (zero-length OUT data) in - * response to the data. - * - * This test mode is synchronous, i.e. the call returns after - * the test has been completed. - */ - ETestModeSingleStepGetDeviceDescriptorData + ETestModeTestPacket }; @@ -208,7 +156,13 @@ */ NONSHARABLE_CLASS( THostPipe ) { - public: + public: // Types and constants + /** + * A bitmask type used to indicate some boolean properties of + * the endpoint targeted by this pipe. + */ + typedef TUint32 TEndpointFlags; + // These are flag constants that specify the values that can // be bitwise OR'ed to the endpoint flags field iEndpointFlags // to indicate some boolean parameters of the endpoint @@ -225,14 +179,14 @@ * KHubHasMultipleTTs specifies whether the hub has been * configured to use multiple transaction translators. */ - static const TUint32 KHubTranslates = 0x00000001; + static const TEndpointFlags KHubTranslates = 0x00000001; /** * When the iEndpointFlags flag KHubTranslates is set, this * flag is set if the hub has multiple transaction * translators. */ - static const TUint32 KHubHasMultipleTTs = 0x00000002; + static const TEndpointFlags KHubHasMultipleTTs = 0x00000002; public: // Data /** @@ -245,7 +199,7 @@ TUint iMaxPacketSize; /** Flags specifying some boolean parameters of the endpoint */ - TUint32 iEndpointFlags; + TEndpointFlags iEndpointFlags; /** * The speed (low, full, high) to use for this endpoint. This @@ -304,48 +258,88 @@ */ NONSHARABLE_CLASS( THostTransfer ) { - public: + public: // Types and constants + /** + * A bitmask type used to indicate some boolean properties of + * a transfer. + */ + typedef TUint32 TTransferFlags; + // These are public constants that specify the values that can // be bitwise OR'ed to the request flags field iRequestFlags // to indicate some boolean parameters of the transfer /** - * When set, specifies that the transfer direction is IN, - * i.e. the host is reading from the connected device. This is - * needed for endpoint zero, which is bi-directional and - * cannot implicitly know the direction of the transfer. + * This flag is set or cleared by the PIL layer and is only + * relevant for bi-directional pipes, i.e. control pipes + * performing control transfers. The bit is not set for other + * endpoint types. + * + * For a control transfer, this bit is set to specify that the + * transfer direction is IN, i.e. the host is reading from the + * connected device. For a control transfer with the bit + * cleared, the transfer direction is OUT, i.e. the host is + * writing to the connected device. * * This bit is set or cleared by the USB Host stack before * issuing a new transfer. */ - static const TUint32 KTransferDirIsIN = 0x00000001; + static const TTransferFlags KTransferDirIsIN = 0x00000001; /** - * For OUT endpoint transfers, indicates whether the Host - * Controller PSL is required to force a short packet at the - * end of the transfer. + * This flag is set or cleared by the PIL layer and is only + * relevant for bi-directional pipes, i.e. control pipes + * performing control transfers. The bit is not set for other + * endpoint types. + * + * For a control transfer, this bit is set to specify that the + * transfer is a special single-step transfer with a delayed + * data phase. This type of transfer is only used during the + * high-speed host electrical tests. + * + * When this flag is set, the Host Controller PSL should + * perform the transfer like it normally would, except that it + * must have a 15 second delay between the completion of the + * SETUP phase and the sending of the first IN token for the + * DATA phase. + * + * For description and background of the usage of this special + * transfer option, see the OTG 2.0 Supplement Section 6.4.1.1 + * Test Modes, and specifically the test + * SINGLE_STEP_GET_DEVICE_DESCRIPTOR_DATA. + * + * This bit is set or cleared by the USB Host stack before + * issuing a new transfer. + */ + static const TTransferFlags KSingleStepControlDelayedDataPhase = 0x00000002; + + /** + * This flag is set or cleared by the PIL layer before issuing + * a new transfer and is relevant for OUT transfers on bulk, + * interrupt, and control pipes. It is never set for transfers + * on isochronous pipes. + * + * For bulk, interrupt, or control OUT endpoint transfers, + * indicates whether the Host Controller PSL is required to + * force a short packet at the end of the transfer. * * When the bit is set, the Host Controller PSL must send a * ZLP (Zero-Length Packet) after the last packet of the * transfer, if and only if the last packet was a full packet, * i.e. had the same size as the maximum packet size for the * endpoint. - * - * This bit is set or cleared by the USB Host stack before - * issuing a new transfer. */ - static const TUint32 KOutForceShortPacket = 0x00000002; + static const TTransferFlags KOutForceShortPacket = 0x00000002; /** - * For IN endpoint transfers, indicates whether the transfer - * was terminated with a ZLP (Zero-Length Packet). + * This flag is set or cleared by the Host Controller PSL + * before completing the transfer and is only relevant for IN + * pipes. * - * This bit is set by the Host Controller PSL before - * completing the transfer if the transfer ended due to a - * ZLP. Otherwise the bit is cleared by the Host Controller - * PSL. + * For IN endpoint transfers, this flag indicates whether the + * transfer was terminated with a ZLP (Zero-Length Packet). */ - static const TUint32 KInZlpReceived = 0x00000004; + static const TTransferFlags KInZlpReceived = 0x00000004; /** * Enumeration specifying the packet status values to be used @@ -389,7 +383,7 @@ * Request flags specifying some boolean parameters for the * transfer. */ - TUint32 iRequestFlags; + TTransferFlags iRequestFlags; /** * Memory block specifying the memory buffer used for the data @@ -579,6 +573,16 @@ * the callback interface is provided in the member * THostTransfer::iTransferCbIf of the supplied aTransferInfo. * + * To maximize throughput, the PIL layer may call + * StartTransfer() directly from a previous completion call + * (see description in + * MHostTransferCallbackIf::CompleteTransfer()). To prevent + * recursion, the PSL should not call + * MHostTransferCallbackIf::CompleteTransfer() directly from + * within the MHostPipeIf::StartTransfer() call, but should + * instead queue a DFC to complete the transfer, if + * immediately completed. + * * The following rules shall be used by the Host Controller * PSL to assess the completeness of a transfer: * @@ -710,13 +714,6 @@ * Host Stack will suspend the entire host controller by * calling MHostControllerIf::SuspendController(). * - * When the root hub only has one port and SOFs cannot be - * gated on the port without suspending the whole controller, - * the Host Controller PSL should ignore the port-specific - * suspend and resume calls and instead suspend/resume the - * controller based on the controller-specific suspend and - * resume calls in MHostControllerIf. - * * @param aPort The number of the root hub port to operate * on. For a root hub with N ports, the port numbers are in * range [1..N]. @@ -737,12 +734,17 @@ * host controller by calling * MHostControllerIf::ResumeController(). * - * When the root hub only has one port and SOFs cannot be - * gated on the port without suspending the whole controller, - * the Host Controller PSL should ignore the port-specific - * suspend and resume calls and instead suspend/resume the - * controller based on the controller-specific suspend and - * resume calls in MHostControllerIf. + * This function is synchronous and should return when the + * resume signalling on the port has completed. + * + * This function is also called when the Host Controller PSL + * has reported detection of a remote wakeup on a port of the + * root hub. This is to make sure the host port takes over + * driving the resume on the bus. The Host Controller PSL or + * the HW may have already started driving resume upon + * detecting the remote wakeup, in which case the PSL only + * needs to wait in this function until the resume signalling + * has been completed. * * @param aPort The number of the root hub port to operate * on. For a root hub with N ports, the port numbers are in @@ -887,18 +889,22 @@ /** * Place the host controller to the USB suspend state where it - * does not send SOF packets. + * does not send SOF packets. The Host Controller PSL may also + * go into a power-saving mode where it for example shuts down + * some clocks needed by the host controller when active. The + * Host Controller PSL must still ensure that the host + * controller or the root hub will be capable of detecting + * device disconnection and remote wakeup when suspended. */ virtual void SuspendController() = 0; /** - * Resume the host controller from the USB suspend state by - * driving the resume signalling towards the root hub. The - * signalling must last at least 20 milliseconds and follow - * the requirements specified in USB 2.0 Specification Section - * 7.1.7.7 Resume Signaling. After the resume signalling has - * completed, the controller must allow SOFs to be sent to the - * connected device again. + * Resume the host controller from the suspend state. If the + * Host Controller PSL put the host controller into a + * power-saving state by shutting down some clocks, the PSL + * can re-enable them in this call. This call shall not result + * in resume signalling to be driven on the bus, as that + * should be done from MRootHubIf::ResumePort(). */ virtual void ResumeController() = 0; @@ -910,21 +916,17 @@ * operating in high-speed mode and a special test device has * been enumerated. * - * When called, the Host Controller PSL shall synchronously - * run the selected test as specified for each tests in the - * documentation of THostTestMode. + * The function shall return immediately when the controller + * has been set to the requested test mode. The host + * controller is expected to remain in the test mode until it + * is shutdown by a call to StopHostController(). * * @param aTestMode Specifies the test mode to enter * - * @param aDefaultPipe Information of the default pipe (the - * control pipe to endpoint zero) of the connected test - * device. - * * @return KErrNone if the specified test mode was entered * successfully, otherwise a system-wide error */ - virtual TInt EnterHostTestMode( THostTestMode aTestMode, - const THostPipe& aDefaultPipe ) = 0; + virtual TInt EnterHostTestMode( THostTestMode aTestMode ) = 0; /** * Get the size and alignment requirements for the Host @@ -1153,6 +1155,14 @@ * Complete a transfer request that had been set up with * MHostPipeIf::StartTransfer(). * + * To maximize throughput, the PIL layer may set up the next + * transfer by calling MHostPipeIf::StartTransfer() + * immediately from within this completion function. The PSL + * has to be prepared for this and make sure it does not upon + * return of the callback accidentally clean up some internal + * state belonging to a new transfer started during the + * callback. + * * @param aTransferInfo The transfer information that * identifies the transfer that has completed */ @@ -1251,7 +1261,7 @@ /** * A static class implemented by the USB Host PIL layer to allow - * the host controller PSL to register to the PIL layer. + * the Host Controller PSL to register to the PIL layer. */ NONSHARABLE_CLASS( UsbHostPil ) { @@ -1270,12 +1280,14 @@ * runs during bootup). * * @param aHostControllerIf Reference to the Host Controller - * interface implemented by the registering PSL. + * interface implemented by the registering PSL. The PIL layer + * requires that the supplied reference remains valid + * indefinitely, as the Host Controller cannot unregister. * * @param aProperties Reference to an object describing the - * static properties of the Host Controller. The PIL layer - * requires that the supplied reference remains valid - * indefinitely, as a Host Controller cannot unregister. + * static properties of the Host Controller. The PIL takes a + * copy and the PSL is free to release the properties object + * upon return. * * @lib usbotghostpil.lib */ diff -r 613028a7da24 -r eaaed528d5fd usb_plat/usb_shai_api/inc/usb_otg_shai.h --- a/usb_plat/usb_shai_api/inc/usb_otg_shai.h Thu Sep 02 22:23:37 2010 +0300 +++ b/usb_plat/usb_shai_api/inc/usb_otg_shai.h Fri Sep 17 08:40:15 2010 +0300 @@ -17,7 +17,7 @@ /** @file @brief USB OTG SHAI header - @version 0.2.0 + @version 0.3.0 This header specifies the USB OTG SHAI. @@ -40,7 +40,7 @@ * environment with old USB SHAI version that is missing some new * definitions. */ -#define USB_OTG_SHAI_VERSION 0x020 +#define USB_OTG_SHAI_VERSION 0x030 // The namespace is documented in file usb_common_shai.h, so it is not // repeated here @@ -74,10 +74,8 @@ * Reporting an ACA state via the ID pin notification mechanism is * not a substitute for reporting port type detection via the USB * Charger Detection SHAI that is documented separately in - * usb_charger_detection_shai.h. When ACA is supported, it is - * required that the Charger Detector PSL guarantees that the OTG - * Observer gets notified of the ID pin state before reporting the - * port type to the Charger Detector Observer. + * usb_charger_detection_shai.h. See documentation of + * MOtgObserverIf::NotifyIdPinAndVbusState() for more details. * * @see usb_charger_detection_shai.h */ @@ -242,6 +240,14 @@ * current VBUS and ID states to the observer to get the * status of the OTG stack up to date. * + * If the OTG Controller PSL has detected that we are attached + * to a bad device already before the OTG Observer was set by + * this function, the PSL needs to immediately report ID + * floating and VBUS low, and report the bad device by calling + * MOtgObserverIf::NotifyBadDeviceAttached(). See the + * documentation of MOtgObserverIf::NotifyBadDeviceAttached() + * for more information on the detection of bad devices. + * * @param aObserver Pointer to the observer interface to use, * or NULL when the OTG stack is being unloaded. */ @@ -353,12 +359,13 @@ { public: /** - * Notify the current ID-pin state to the OTG stack. This - * needs to be called by the OTG Controller PSL everytime - * there is a change in the ID pin level. Redundant - * notifications that don't change the previously reported - * state are silently ignored, so the function is safe to call - * without worrying about extra calls. + * Notify the current ID-pin and VBUS state to the OTG + * stack. This needs to be called by the OTG Controller PSL + * everytime there is a change in the ID pin or VBUS + * level. Redundant notifications that don't change the + * previously reported state are silently ignored, so the + * function is safe to call without worrying about extra + * calls. * * When USB Battery Charging is supported on the OTG-capable * port, there is a dependency between normal USB @@ -369,52 +376,38 @@ * communicate with the Charger Detector PSL (which it may * implement itself) with respect to VBUS and ID pin events. * - * For ID pin events that indicate connection to an Accessory - * Charger Adapter, it is required that the port type is first - * notified to the Charger Detector PSL Observer, followed by - * notifying the ID pin state to the OTG Observer (via this - * function). - * - * @param aIdPinState The current ID-pin state - */ - virtual void NotifyIdPinState( TIdPinState aIdPinState ) = 0; - - /** - * Notify the current VBUS state to the OTG stack. This needs - * to be called by the OTG Controller PSL everytime there is a - * change in the VBUS level. Redundant notifications that - * don't change the previously reported state are silently - * ignored, so the function is safe to call without worrying - * about extra calls. - * - * When USB Battery Charging is supported on the OTG-capable - * port, there is a dependency between normal USB - * functionality and USB Battery Charging (see - * usb_charger_detection_shai.h and specifically the - * description of class MChargerDetectorIf). In this case it - * is the responsibility of the OTG Controller PSL to - * communicate with the Charger Detector PSL (which it may - * implement itself) with respect to VBUS and ID pin events. + * Due to Accessory Charger Adapter specified in Battery + * Charging 1.1, the ID pin state is relevant for both + * charging and OTG. The USB OTG SHAI and the USB Charger + * Detection SHAI receive the ID pin notifications from the + * PSL independently. For ID and VBUS events that indicate + * connection to an Accessory Charger Adapter, it is required + * that a BC 1.1 capable PSL reports the state to both the + * Charger Detector PSL Observer (via + * MChargerDetectorObserverIf::NotifyPortType), and the OTG + * Observer (via this function). The reporting order is not + * significant and can be freely chosen by the PSL. * * When VBUS rises on the OTG-capable port that is currently * the B-device and fully supports Battery Charging * Specification Revision 1.1, the Charger Detector PSL and * the OTG Controller PSL need to together guarantee that Data * Contact Detect is completed and the port type detected - * before reporting VBUS rising. When the port type is known, - * the port type needs to be notified to the Charger Detector - * PSL Observer, followed by notifying the VBUS state to the - * OTG Observer (via this function). + * before reporting the ID and VBUS state. When the port type + * is known, the port type needs to be notified to the Charger + * Detector PSL Observer, followed by notifying the ID and + * VBUS state to the OTG Observer (via this function). * - * Where Data Contact Detect is not supported, the VBUS rise - * event needs to be notified to the OTG Observer (via this - * function) immediately and charger detection needs to - * proceed in parallel with the upper layers preparing the USB - * personality. This is necessary in order to ensure that we - * can fulfill the requirement to connect to the bus within a - * second, while still making as long as possible charger - * detection cycle to minimize the changes of false detections - * due to datalines not making contact yet. + * Where Data Contact Detect is not supported, the initial + * B-device VBUS rise event needs to be notified to the OTG + * Observer (via this function) immediately and charger + * detection needs to proceed in parallel with the upper + * layers preparing the USB personality. This is necessary in + * order to ensure that we can fulfill the requirement to + * connect to the bus within a second, while still making as + * long as possible charger detection cycle to minimize the + * chances of false detections due to datalines not making + * contact yet. * * The OTG Controller PSL, the Peripheral Controller PSL and * the Charger Detector PSL need to together guarantee that @@ -425,9 +418,11 @@ * MPeripheralControllerIf::PeripheralConnect(), the * Peripheral Controller PSL must connect to the bus. * + * @param aIdPinState The current ID-pin state * @param aVbusState The current VBUS state */ - virtual void NotifyVbusState( TVbusState aVbusState ) = 0; + virtual void NotifyIdPinAndVbusState( TIdPinState aIdPinState, + TVbusState aVbusState ) = 0; /** * When operating as the A-device with VBUS low, notify the @@ -581,33 +576,38 @@ * function (or an equivalent code that runs during bootup). * * @param aOtgControllerIf Reference to the OTG Controller - * interface implemented by the registering PSL. + * interface implemented by the registering PSL. The PIL + * layer requires that the supplied reference remains valid + * indefinitely, as the OTG Controller cannot unregister. * * @param aOtgProperties Reference to an object describing the - * static properties of the OTG Controller. The PIL layer - * requires that the supplied reference remains valid - * indefinitely, as an OTG Controller cannot unregister. + * static properties of the OTG Controller. The PIL takes a + * copy and the PSL is free to release the properties object + * upon return. * * @param aPeripheralControllerIf Reference to the Peripheral * Controller interface implemented by the PSL controlling the * Peripheral Controller associated with the registering OTG - * port. + * port. The PIL layer requires that the supplied reference + * remains valid indefinitely, as the OTG Controller cannot + * unregister. * * @param aPeripheralProperties Reference to an object * describing the static properties of the Peripheral - * Controller. The PIL layer requires that the supplied - * reference remains valid indefinitely, as the registering - * OTG Controller cannot unregister. + * Controller. The PIL takes a copy and the PSL is free to + * release the properties object upon return. * * @param aHostControllerIf Reference to the Host Controller * interface implemented by the PSL controlling the Host - * Controller associated with the registering OTG port. + * Controller associated with the registering OTG port. The + * PIL layer requires that the supplied reference remains + * valid indefinitely, as the OTG Controller cannot + * unregister. * * @param aHostProperties Reference to an object describing the - * static properties of the Host Controller. The PIL layer - * requires that the supplied reference remains valid - * indefinitely, as the registering OTG Controller cannot - * unregister. + * static properties of the Host Controller. The PIL takes a + * copy and the PSL is free to release the properties object + * upon return. * * @lib usbotghostpil.lib */ diff -r 613028a7da24 -r eaaed528d5fd usb_plat/usb_shai_api/inc/usb_peripheral_shai.h --- a/usb_plat/usb_shai_api/inc/usb_peripheral_shai.h Thu Sep 02 22:23:37 2010 +0300 +++ b/usb_plat/usb_shai_api/inc/usb_peripheral_shai.h Fri Sep 17 08:40:15 2010 +0300 @@ -19,7 +19,7 @@ @brief USB Peripheral SHAI header - @version 0.3.0 + @version 0.4.0 Abstract interface for USB Peripheral Controller. @@ -43,7 +43,7 @@ * older environment with old USB SHAI version that is missing some * new definitions. */ -#define USB_PERIPHERAL_SHAI_VERSION 0x030 +#define USB_PERIPHERAL_SHAI_VERSION 0x040 // The namespace is documented in file usb_common_shai.h, so it is not // repeated here @@ -765,7 +765,7 @@ * the system-wide error codes. */ virtual TInt ConfigureEndpoint(TInt aRealEndpoint, - const TUsbPeripheralEndpointInfo& aEndpointInfo) = 0; + const TUsbPeripheralEndpointInfo& aEndpointInfo) = 0; /** * De-configures (disables) an endpoint (incl. Ep0). @@ -968,7 +968,7 @@ * - enabling the peripheral controller's clock * - binding & enabling the peripheral controller (primary) interrupt * - write meaningful values to some general controller registers - * - enabling the USB Reset interrupt + * - enabling the USB Reset, Suspend, and Resume interrupts * - enabling the peripheral controller proper (for instance by * setting an Enable bit). * @@ -1155,16 +1155,20 @@ * * @param aPeripheralControllerIf Reference to the Peripheral * Controller interface implemented by the registering PSL. + * The PIL layer requires that the supplied reference + * remains valid indefinitely, as the Peripheral Controller + * cannot unregister. * * @param aProperties Reference to an object describing the - * static properties of the Peripheral Controller. PIL - * layer requires that the supplied reference remains valid - * indefinitely, as a Peripheral Controller cannot unregister. + * static properties of the Peripheral Controller. The PIL + * takes a copy and the PSL is free to release the properties + * object upon return. * * @lib usbperipheralpil.lib */ - IMPORT_C static void RegisterPeripheralController(MPeripheralControllerIf& aPeripheralControllerIf, - const TPeripheralControllerProperties& aProperties ); + IMPORT_C static void RegisterPeripheralController( + MPeripheralControllerIf& aPeripheralControllerIf, + const TPeripheralControllerProperties& aProperties ); private: /** diff -r 613028a7da24 -r eaaed528d5fd usb_plat/usb_shai_api/inc/usb_peripheral_shai_shared.h --- a/usb_plat/usb_shai_api/inc/usb_peripheral_shai_shared.h Thu Sep 02 22:23:37 2010 +0300 +++ b/usb_plat/usb_shai_api/inc/usb_peripheral_shai_shared.h Fri Sep 17 08:40:15 2010 +0300 @@ -19,6 +19,8 @@ @brief USB Peripheral SHAI header shared part. + @version 0.4.0 + Some Non-kernel USB code will also use structure defined in this header. Since usb_peripheral_shai.h always need to include which is not visible to non-kernel layers, a @@ -27,6 +29,10 @@ This header is the one that defined all common structures used by kernel & non-kernel layers software. + The file is versioned for the sake of the human reader and follows + the version of the USB Peripheral SHAI header + usb_peripheral_shai.h. + Peripheral SHAI header always include this header automatically. @publishedDeviceAbstraction diff -r 613028a7da24 -r eaaed528d5fd usbdrv/peripheral/ldd/perildd/src/d_usbc.cpp --- a/usbdrv/peripheral/ldd/perildd/src/d_usbc.cpp Thu Sep 02 22:23:37 2010 +0300 +++ b/usbdrv/peripheral/ldd/perildd/src/d_usbc.cpp Fri Sep 17 08:40:15 2010 +0300 @@ -127,6 +127,8 @@ KUsbRequestCallbackPriority), iOtgFeatureChangePtr(NULL), iOtgFeatureCallbackInfo(this, DLddUsbcChannel::OtgFeatureChangeCallback, KUsbRequestCallbackPriority), + iChargerTypeChangePtr(NULL), + iChargerTypeCallbackInfo(this, DLddUsbcChannel::ChargerTypeChangeCallback, KUsbRequestCallbackPriority), iNumberOfEndpoints(0), iDeviceState(UsbShai::EUsbPeripheralStateUndefined), iOwnsDeviceControl(EFalse), @@ -157,6 +159,7 @@ iStatusCallbackInfo.Cancel(); iEndpointStatusCallbackInfo.Cancel(); iOtgFeatureCallbackInfo.Cancel(); + iChargerTypeCallbackInfo.Cancel(); iCompleteAllCallbackInfo.Cancel(); AbortInterface(); DestroyAllInterfaces(); @@ -170,7 +173,7 @@ Kern::DestroyClientRequest(iStatusChangeReq); Kern::DestroyClientRequest(iEndpointStatusChangeReq); Kern::DestroyClientRequest(iOtgFeatureChangeReq); - + Kern::DestroyClientRequest(iChargerTypeChangeReq); Kern::DestroyVirtualPinObject(iPinObj1); Kern::DestroyVirtualPinObject(iPinObj2); Kern::DestroyVirtualPinObject(iPinObj3); @@ -231,29 +234,36 @@ iStatusCallbackInfo.SetDfcQ(iDfcQ); // use the channel's dfcq for this dfc iEndpointStatusCallbackInfo.SetDfcQ(iDfcQ); // use the channel's dfcq for this dfc iOtgFeatureCallbackInfo.SetDfcQ(iDfcQ); - iMsgQ.Receive(); //start up the message q - TInt r = iController->RegisterClientCallback(iCompleteAllCallbackInfo); - if (r != KErrNone) - return r; - r = iController->RegisterForStatusChange(iStatusCallbackInfo); - if (r != KErrNone) - return r; - r = iController->RegisterForEndpointStatusChange(iEndpointStatusCallbackInfo); - if (r != KErrNone) - return r; - r = iController->RegisterForOtgFeatureChange(iOtgFeatureCallbackInfo); + iChargerTypeCallbackInfo.SetDfcQ(iDfcQ); + iMsgQ.Receive(); //start up the message q + TInt r = iController->RegisterClientCallback(iCompleteAllCallbackInfo); + if (r != KErrNone) + return r; + r = iController->RegisterForStatusChange(iStatusCallbackInfo); + if (r != KErrNone) + return r; + r = iController->RegisterForEndpointStatusChange(iEndpointStatusCallbackInfo); + if (r != KErrNone) + return r; + r = iController->RegisterForOtgFeatureChange(iOtgFeatureCallbackInfo); + if (r != KErrNone) + return r; + r = iController->RegisterChargingPortTypeNotify(iChargerTypeCallbackInfo); if (r != KErrNone) - return r; - - r = Kern::CreateClientDataRequest(iStatusChangeReq); + return r; + + r = Kern::CreateClientDataRequest(iStatusChangeReq); + if (r != KErrNone) + return r; + r = Kern::CreateClientDataRequest(iEndpointStatusChangeReq); + if (r != KErrNone) + return r; + r = Kern::CreateClientDataRequest(iOtgFeatureChangeReq); + if (r != KErrNone) + return r; + r = Kern::CreateClientDataRequest(iChargerTypeChangeReq); if (r != KErrNone) - return r; - r = Kern::CreateClientDataRequest(iEndpointStatusChangeReq); - if (r != KErrNone) - return r; - r = Kern::CreateClientDataRequest(iOtgFeatureChangeReq); - if (r != KErrNone) - return r; + return r; Kern::CreateVirtualPinObject(iPinObj1); Kern::CreateVirtualPinObject(iPinObj2); @@ -344,6 +354,11 @@ iOtgFeatureChangeReq->SetStatus(aStatus); iOtgFeatureChangeReq->SetDestPtr(a1); break; + case RDevUsbcClient::ERequestChargingPortTypeNotify: + iChargerTypeChangeReq->Reset(); + iChargerTypeChangeReq->SetStatus(aStatus); + iChargerTypeChangeReq->SetDestPtr(a1); + break; case RDevUsbcClient::ERequestAlternateDeviceStatusNotify: iStatusChangeReq->Reset(); iStatusChangeReq->SetStatus(aStatus); @@ -477,6 +492,10 @@ iRequestStatus[aReqNo]=NULL; Kern::QueueRequestComplete(iClient,iOtgFeatureChangeReq,r); break; + case RDevUsbcClient::ERequestChargingPortTypeNotify: + iRequestStatus[aReqNo]=NULL; + Kern::QueueRequestComplete(iClient,iChargerTypeChangeReq,r); + break; case RDevUsbcClient::ERequestAlternateDeviceStatusNotify: iRequestStatus[aReqNo]=NULL; Kern::QueueRequestComplete(iClient,iStatusChangeReq,r); @@ -559,6 +578,24 @@ r = KErrArgument; break; } + case RDevUsbcClient::ERequestChargingPortTypeNotify: + { + __KTRACE_OPT(KUSB, Kern::Printf("ERequestChargingPortTypeNotify")); + if (a1 != NULL) + { + iChargerTypeChangePtr = a1; + aNeedsCompletion = iChargerTypeCallbackInfo.PendingNotify(); + if(aNeedsCompletion) + { + iChargerTypeChangeReq->Data()= iChargerTypeCallbackInfo.ChargerType(); + iChargerTypeChangePtr = NULL; + iChargerTypeCallbackInfo.SetPendingNotify(EFalse); + } + } + else + r = KErrArgument; + break; + } default: r = KErrNotSupported; } @@ -839,6 +876,16 @@ Kern::QueueRequestComplete(iClient, iOtgFeatureChangeReq, KErrCancel); } } + else if (aReqNo == RDevUsbcClient::ERequestChargingPortTypeNotify) + { + __KTRACE_OPT(KUSB, Kern::Printf("DoCancel ERequestChargingPortTypeNotify: 0x%x", aReqNo)); + CancelNotifyChargerType(); + if (iChargerTypeChangeReq->IsReady()) + { + iRequestStatus[aReqNo] = NULL; + Kern::QueueRequestComplete(iClient, iChargerTypeChangeReq, KErrCancel); + } + } else { __KTRACE_OPT(KUSB, Kern::Printf("DoCancel Unknown! 0x%x", aReqNo)); @@ -881,6 +928,18 @@ } } +void DLddUsbcChannel::CancelNotifyChargerType() + { + if (iChargerTypeChangePtr) + { + TUint chargerType; + chargerType = iChargerTypeCallbackInfo.ChargerType(); + iChargerTypeChangeReq->Data()=chargerType; + iChargerTypeChangePtr = NULL; + iChargerTypeCallbackInfo.SetPendingNotify(EFalse); + } + } + TInt DLddUsbcChannel::PinMemory(TDesC8 *aDes, TVirtualPinObject *aPinObj) { TInt r = KErrNone; @@ -940,6 +999,7 @@ case RDevUsbcClient::EControlSetOtgDescriptor: case RDevUsbcClient::EControlGetOtgDescriptor: case RDevUsbcClient::EControlGetOtgFeatures: + case RDevUsbcClient::EControlGetChargerDetectorCaps: r=PinMemory((TDesC8 *) a1, iPinObj1); if(r!=KErrNone) { @@ -1070,6 +1130,7 @@ case RDevUsbcClient::EControlSetOtgDescriptor: case RDevUsbcClient::EControlGetOtgDescriptor: case RDevUsbcClient::EControlGetOtgFeatures: + case RDevUsbcClient::EControlGetChargerDetectorCaps: if(a1!=NULL) { Kern::UnpinVirtualMemory(iPinObj1); @@ -1128,6 +1189,7 @@ TUsbcIfcInfo ifcInfo; TCSDescriptorInfo desInfo; TUsbcEndpointResource epRes; + TUsbcChargerDetectorProperties chargingPro; TInt bandwidthPriority; switch (aFunction) @@ -1514,6 +1576,17 @@ } break; + + + case RDevUsbcClient::EControlGetChargerDetectorCaps: + __KTRACE_OPT(KUSB, Kern::Printf("EControlGetChargerDetectorCaps")); + iController->ChargerDetectorCaps(chargingPro); + r = Kern::ThreadRawWrite(iClient, a1, &chargingPro, sizeof(chargingPro), iClient); + if (r != KErrNone) + { + PanicClientThread(r); + } + break; case RDevUsbcClient::EControlReleaseInterface: __KTRACE_OPT(KUSB, Kern::Printf("EControlReleaseInterface")); @@ -2246,6 +2319,32 @@ } } +void DLddUsbcChannel::ChargerTypeChangeCallback(TAny* aDLddUsbcChannel) + { + __KTRACE_OPT(KUSB, Kern::Printf("ChargerTypeChangeCallback")); + DLddUsbcChannel* dUsbc = (DLddUsbcChannel*) aDLddUsbcChannel; + if (dUsbc->iChannelClosing) + return; + const TInt reqNo = (TInt) RDevUsbcClient::ERequestChargingPortTypeNotify; + if (dUsbc->iRequestStatus[reqNo]) + { + __KTRACE_OPT(KUSB, Kern::Printf("ChargerTypeChangeCallback Notify status")); + Kern::Printf("ChargerTypeChangeCallback Notify status"); + TUint chargerType; + chargerType = dUsbc->iChargerTypeCallbackInfo.ChargerType(); + dUsbc->iChargerTypeChangeReq->Data()=chargerType; + dUsbc->iRequestStatus[reqNo] = NULL; + Kern::QueueRequestComplete(dUsbc->iClient,dUsbc->iChargerTypeChangeReq,KErrNone); + dUsbc->iChargerTypeChangePtr = NULL; + dUsbc->iChargerTypeCallbackInfo.SetPendingNotify(EFalse); + } + else + { + Kern::Printf("ChargerTypeChangeCallback Set pending notify"); + __KTRACE_OPT(KUSB, Kern::Printf("ChargerTypeChangeCallback Set pending notify")); + dUsbc->iChargerTypeCallbackInfo.SetPendingNotify(ETrue); + } + } TInt DLddUsbcChannel::SelectAlternateSetting(TUint aAlternateSetting) { @@ -2660,6 +2759,25 @@ } } + else if (i == RDevUsbcClient::ERequestChargingPortTypeNotify) + { + + if (iChargerTypeChangePtr) + { + TUint chargerType; + chargerType = iChargerTypeCallbackInfo.ChargerType(); + iChargerTypeChangeReq->Data()=chargerType; + iChargerTypeChangePtr = NULL; + } + + if (iChargerTypeChangeReq->IsReady()) + { + iRequestStatus[i] = NULL; + Kern::QueueRequestComplete(iClient, iChargerTypeChangeReq, + KErrDisconnected); + } + + } else { CompleteBufferRequest(iClient, i, KErrDisconnected); @@ -2671,8 +2789,9 @@ iStatusCallbackInfo.Cancel(); iEndpointStatusCallbackInfo.Cancel(); iOtgFeatureCallbackInfo.Cancel(); - return KErrNone; - } + iChargerTypeCallbackInfo.Cancel(); + return KErrNone; + } void DLddUsbcChannel::PanicClientThread(TInt aReason) diff -r 613028a7da24 -r eaaed528d5fd usbdrv/peripheral/ldd/perilddsc/src/d_usbcsc.cpp --- a/usbdrv/peripheral/ldd/perilddsc/src/d_usbcsc.cpp Thu Sep 02 22:23:37 2010 +0300 +++ b/usbdrv/peripheral/ldd/perilddsc/src/d_usbcsc.cpp Fri Sep 17 08:40:15 2010 +0300 @@ -1175,6 +1175,8 @@ KUsbRequestCallbackPriority), iOtgFeatureChangePtr(NULL), iOtgFeatureCallbackInfo(this, DLddUsbcScChannel::OtgFeatureChangeCallback, KUsbRequestCallbackPriority), + iChargerTypeChangePtr(NULL), + iChargerTypeCallbackInfo(this, DLddUsbcScChannel::ChargerTypeChangeCallback, KUsbRequestCallbackPriority), iNumberOfEndpoints(0), iDeviceState(UsbShai::EUsbPeripheralStateUndefined), iOwnsDeviceControl(EFalse), @@ -1213,6 +1215,7 @@ iStatusCallbackInfo.Cancel(); iEndpointStatusCallbackInfo.Cancel(); iOtgFeatureCallbackInfo.Cancel(); + iChargerTypeCallbackInfo.Cancel(); iCompleteAllCallbackInfo.Cancel(); DestroyAllInterfaces(); if (iOwnsDeviceControl) @@ -1288,6 +1291,7 @@ iStatusCallbackInfo.SetDfcQ(iDfcQ); // use the channel's dfcq for this dfc iEndpointStatusCallbackInfo.SetDfcQ(iDfcQ); // use the channel's dfcq for this dfc iOtgFeatureCallbackInfo.SetDfcQ(iDfcQ); + iChargerTypeCallbackInfo.SetDfcQ(iDfcQ); iMsgQ.Receive(); //start up the message q TInt r = iController->RegisterClientCallback(iCompleteAllCallbackInfo); if (r != KErrNone) @@ -1301,6 +1305,9 @@ r = iController->RegisterForOtgFeatureChange(iOtgFeatureCallbackInfo); if (r != KErrNone) return r; + r = iController->RegisterChargingPortTypeNotify(iChargerTypeCallbackInfo); + if (r != KErrNone) + return r; return r; } @@ -1424,6 +1431,25 @@ BREAK_IF_NULL_ARG(a1,r); iOtgFeatureChangePtr = a1; + break; + } + case RDevUsbcScClient::ERequestChargingPortTypeNotify: + { + __KTRACE_OPT(KUSB, Kern::Printf("ERequestChargingPortTypeNotify")); + BREAK_IF_NULL_ARG(a1,r); + + iChargerTypeChangePtr = a1; + needsCompletion = iChargerTypeCallbackInfo.PendingNotify(); + if(needsCompletion) + { + TUint chargerType; + chargerType = iChargerTypeCallbackInfo.ChargerType(); + TInt r=Kern::ThreadRawWrite(iClient, iChargerTypeChangePtr, (TUint*)&chargerType, sizeof(chargerType), iClient); + if (r != KErrNone) + PanicClientThread(r); + iChargerTypeChangePtr = NULL; + iChargerTypeCallbackInfo.SetPendingNotify(EFalse); + } break; } default: @@ -1649,10 +1675,15 @@ CancelNotifyOtgFeatures(); break; - default: - __KTRACE_OPT(KUSB, Kern::Printf("DoCancel Unknown! 0x%x", aReqNo)); - return KErrArgument; - } + case RDevUsbcScClient::ERequestChargingPortTypeNotifyCancel: + __KTRACE_OPT(KUSB, Kern::Printf("DoCancel ERequestChargingPortTypeNotify: 0x%x", aReqNo)); + CancelNotifyChargerType(); + break; + + default: + __KTRACE_OPT(KUSB, Kern::Printf("DoCancel Unknown! 0x%x", aReqNo)); + return KErrArgument; + } Kern::RequestComplete(iClient,iRequestStatus[aReqNo & ~RDevUsbcScClient::ERequestCancel], KErrCancel); return r; @@ -1691,7 +1722,19 @@ } } - +void DLddUsbcScChannel::CancelNotifyChargerType() + { + if (iChargerTypeChangePtr) + { + TUint chargerType; + chargerType = iChargerTypeCallbackInfo.ChargerType(); + TInt r=Kern::ThreadRawWrite(iClient, iChargerTypeChangePtr, (TUint*)&chargerType, sizeof(chargerType), iClient); + if (r != KErrNone) + PanicClientThread(r); + iChargerTypeChangePtr = NULL; + iChargerTypeCallbackInfo.SetPendingNotify(EFalse); + } + } // // DoControl - Synchronous requests @@ -1710,6 +1753,7 @@ TUsbcScIfcInfo ifcInfo; TCSDescriptorInfo desInfo; TUsbcEndpointResource epRes; + TUsbcChargerDetectorProperties chargingPro; switch (aFunction) { @@ -2061,6 +2105,17 @@ r = SetInterface((TInt) a1, &ifcInfo); break; + + case RDevUsbcScClient::EControlGetChargerDetectorCaps: + __KTRACE_OPT(KUSB, Kern::Printf("EControlGetChargerDetectorCaps")); + iController->ChargerDetectorCaps(chargingPro); + r = Kern::ThreadRawWrite(iClient, a1, &chargingPro, sizeof(chargingPro), iClient); + if (r != KErrNone) + { + PanicClientThread(r); + } + break; + case RDevUsbcScClient::EControlReleaseInterface: __KTRACE_OPT(KUSB, Kern::Printf("EControlReleaseInterface")); if (!iRealizeCalled) @@ -3056,6 +3111,32 @@ } } +void DLddUsbcScChannel::ChargerTypeChangeCallback(TAny* aDLddUsbcScChannel) + { + __KTRACE_OPT(KUSB, Kern::Printf("ChargerTypeChangeCallback")); + DLddUsbcScChannel* dUsbc = (DLddUsbcScChannel*) aDLddUsbcScChannel; + if (dUsbc->iChannelClosing) + return; + + const TInt reqNo = (TInt) RDevUsbcScClient::ERequestChargingPortTypeNotify; + if (dUsbc->iRequestStatus[reqNo]) + { + __KTRACE_OPT(KUSB, Kern::Printf("ChargerTypeChangeCallback Notify status")); + TUint chargerType; + chargerType = dUsbc->iChargerTypeCallbackInfo.ChargerType(); + TInt r=Kern::ThreadRawWrite(dUsbc->iClient, dUsbc->iChargerTypeChangePtr, (TUint*)&chargerType, sizeof(chargerType), dUsbc->iClient); + if (r != KErrNone) + dUsbc->PanicClientThread(r); + Kern::RequestComplete(dUsbc->iClient, dUsbc->iRequestStatus[reqNo], r); + dUsbc->iChargerTypeChangePtr = NULL; + dUsbc->iChargerTypeCallbackInfo.SetPendingNotify(EFalse); + } + else + { + __KTRACE_OPT(KUSB, Kern::Printf("ChargerTypeChangeCallback Set pending notify")); + dUsbc->iChargerTypeCallbackInfo.SetPendingNotify(ETrue); + } + } // // SelectAlternateSetting @@ -3401,9 +3482,9 @@ iStatusCallbackInfo.Cancel(); iEndpointStatusCallbackInfo.Cancel(); iOtgFeatureCallbackInfo.Cancel(); - - return KErrNone; - } + iChargerTypeCallbackInfo.Cancel(); + return KErrNone; + } void DLddUsbcScChannel::PanicClientThread(TInt aReason) diff -r 613028a7da24 -r eaaed528d5fd usbdrv/peripheral/pdd/pil/eabi/usbperipheralpilu.def --- a/usbdrv/peripheral/pdd/pil/eabi/usbperipheralpilu.def Thu Sep 02 22:23:37 2010 +0300 +++ b/usbdrv/peripheral/pdd/pil/eabi/usbperipheralpilu.def Fri Sep 17 08:40:15 2010 +0300 @@ -92,4 +92,7 @@ _ZNK20DUsbClientController18GetInterfaceNumberEPK5DBaseRi @ 91 NONAME _ZNK20DUsbClientController21GetCurrentOtgFeaturesERh @ 92 NONAME _ZNK20DUsbClientController26EndpointZeroMaxPacketSizesEv @ 93 NONAME + _ZN20DUsbClientController19ChargerDetectorCapsERN7UsbShai26TChargerDetectorPropertiesE @ 94 NONAME + _ZN20DUsbClientController30RegisterChargingPortTypeNotifyER24TUsbcChargerTypeCallback @ 95 NONAME + _ZN20DUsbClientController32DeRegisterChargingPortTypeNotifyEPK5DBase @ 96 NONAME diff -r 613028a7da24 -r eaaed528d5fd usbdrv/peripheral/pdd/pil/group/bld.inf --- a/usbdrv/peripheral/pdd/pil/group/bld.inf Thu Sep 02 22:23:37 2010 +0300 +++ b/usbdrv/peripheral/pdd/pil/group/bld.inf Fri Sep 17 08:40:15 2010 +0300 @@ -16,6 +16,7 @@ PRJ_PLATFORMS ARMV5 +ARMV5SMP PRJ_MMPFILES usbperipheralpil diff -r 613028a7da24 -r eaaed528d5fd usbdrv/peripheral/pdd/pil/group/usbperipheralpil.mmp --- a/usbdrv/peripheral/pdd/pil/group/usbperipheralpil.mmp Thu Sep 02 22:23:37 2010 +0300 +++ b/usbdrv/peripheral/pdd/pil/group/usbperipheralpil.mmp Fri Sep 17 08:40:15 2010 +0300 @@ -21,7 +21,7 @@ targettype kext linkas usbperipheralpil.dll deffile ../~/usbperipheralpil.def -VENDORID 0x70000001 +vendorid 0x70000001 uid 0x00000000 0x2002E6DB capability all epocallowdlldata diff -r 613028a7da24 -r eaaed528d5fd usbdrv/peripheral/pdd/pil/src/ps_usbc.cpp --- a/usbdrv/peripheral/pdd/pil/src/ps_usbc.cpp Thu Sep 02 22:23:37 2010 +0300 +++ b/usbdrv/peripheral/pdd/pil/src/ps_usbc.cpp Fri Sep 17 08:40:15 2010 +0300 @@ -101,6 +101,8 @@ // Charger observer is the guy who want to monitor the chager type event. static UsbShai::MChargerDetectorObserverIf* gChargerObsever = NULL; +static UsbShai::TChargerDetectorProperties gChargerDetectorProperties; + // Those const variables are used to construct the default // Usb descriptors, Upper layer can change them later. @@ -352,6 +354,9 @@ __KTRACE_OPT(KUSB, Kern::Printf("> DUsbClientController::DeviceCaps()")); TUsbDeviceCaps caps; caps().iTotalEndpoints = iDeviceUsableEndpoints; // not DeviceTotalEndpoints()! + + // In the SHAI API, all PSLs are required to support soft connection + caps().iConnect = ETrue; caps().iSelfPowered = iSelfPowered; caps().iRemoteWakeup = iRemoteWakeup; @@ -404,6 +409,14 @@ } + +EXPORT_C void DUsbClientController::ChargerDetectorCaps(UsbShai::TChargerDetectorProperties& aProperties) + { + aProperties = gChargerDetectorProperties; + } + + + /** Creates a new USB interface (one setting), complete with endpoints, descriptors, etc., and chains it into the internal device configuration tree. @@ -923,6 +936,7 @@ DeRegisterForEndpointStatusChange(aClientId); DeRegisterForOtgFeatureChange(aClientId); DeRegisterClientCallback(aClientId); + DeRegisterChargingPortTypeNotify(aClientId); // Delete the interface including all its alternate settings which might exist. // (If we release the default setting (0), all alternate settings are deleted as well.) const TInt r = ReleaseInterface(aClientId, 0); @@ -2619,6 +2633,68 @@ { return iController.SignalRemoteWakeup(); } +/** Registers client request for USB charger type notification. Client is notified when USB device is + attached to or detached from any USB charger, and the charger type is sent to client. + + @param aCallback A reference to a properly filled in charger type callback structure. + + @return KErrNone if callback successfully registered, KErrGeneral if this callback is already registered + (it won't be registered twice). +*/ +EXPORT_C TInt DUsbClientController::RegisterChargingPortTypeNotify(TUsbcChargerTypeCallback& aCallback) + { + __KTRACE_OPT(KUSB, Kern::Printf("DUsbClientController::RegisterChargingPortTypeNotify()")); + if (iChargerTypeCallbacks.Elements() == KUsbcMaxListLength) + { + __KTRACE_OPT(KPANIC, Kern::Printf(" Error: In charger type list, the maximum list length reached: %d", + KUsbcMaxListLength)); + return KErrGeneral; + } + if (IsInTheChargerTypeList(aCallback)) + { + __KTRACE_OPT(KUSB, Kern::Printf(" Error: UsbcChargerTypeCallback @ 0x%x already registered", &aCallback)); + return KErrGeneral; + } + const TInt irq = __SPIN_LOCK_IRQSAVE(iUsbLock); + iChargerTypeCallbacks.AddLast(aCallback); + __SPIN_UNLOCK_IRQRESTORE(iUsbLock, irq); + + if(iCurrentChargerType != UsbShai::EPortTypeNone) + { + aCallback.SetChargerType(iCurrentChargerType); + aCallback.SetPendingNotify(ETrue); + } + return KErrNone; + } + +/** De-registers (removes from the list of pending requests) a notification callback for + USB charger type change. + + @param aClientId A pointer to the LDD owning the charger type callback. + + @return KErrNone if callback successfully unregistered, KErrNotFound if the callback couldn't be found. +*/ +EXPORT_C TInt DUsbClientController::DeRegisterChargingPortTypeNotify(const DBase* aClientId) + { + __KTRACE_OPT(KUSB, Kern::Printf("DUsbClientController::DeRegisterChargingPortTypeNotify()")); + __ASSERT_DEBUG((aClientId != NULL), Kern::Fault(KUsbPILPanicCat, __LINE__)); + const TInt irq = __SPIN_LOCK_IRQSAVE(iUsbLock); + TSglQueIter iter(iChargerTypeCallbacks); + TUsbcChargerTypeCallback* p; + while ((p = iter++) != NULL) + { + if (p->Owner() == aClientId) + { + __KTRACE_OPT(KUSB, Kern::Printf(" removing UsbcChargerTypeCallback @ 0x%x", p)); + iChargerTypeCallbacks.Remove(*p); + __SPIN_UNLOCK_IRQRESTORE(iUsbLock, irq); + return KErrNone; + } + } + __KTRACE_OPT(KUSB, Kern::Printf(" client not found")); + __SPIN_UNLOCK_IRQRESTORE(iUsbLock, irq); + return KErrNotFound; + } EXPORT_C TBool DUsbClientController::CurrentlyUsingHighSpeed() { @@ -2913,10 +2989,19 @@ iUsbResetDeferred(EFalse), iEnablePullUpOnDPlus(NULL), iDisablePullUpOnDPlus(NULL), - iOtgContext(NULL) + iOtgContext(NULL), + iChargerTypeCallbacks(_FOFF(TUsbcChargerTypeCallback, iLink)), + iCurrentChargerType(UsbShai::EPortTypeNone) { __KTRACE_OPT(KUSB, Kern::Printf("DUsbClientController::DUsbClientController()")); + // Note that we take a direct copy of the controller properties in + // the initialization list for now. If fields are later added to + // the properties class in the SHAI, we need to start copying + // field-by-field and check the PSL reported capabilities before + // accessing a field that may not be present in an older PSL + // binary. + iLastError = KErrNone; #ifndef SEPARATE_USB_DFC_QUEUE @@ -4687,7 +4772,18 @@ // Functions from UsbShai::MChargerDetectorObserverIf void DUsbClientController::NotifyPortType(UsbShai::TPortType aPortType) { - // FIXME: Not yet implemented! + __KTRACE_OPT(KUSB, Kern::Printf("DUsbClientController::NotifyPortType(), aPortType = %d", aPortType)); + + TSglQueIter iter(iChargerTypeCallbacks); + TUsbcChargerTypeCallback* p; + + iCurrentChargerType = aPortType; + + while ((p = iter++) != NULL) + { + p->SetChargerType(aPortType); + p->DoCallback(); + } } void DUsbClientController::Buffer2Setup(const TAny* aBuf, TUsbcSetup& aSetup) const @@ -4818,8 +4914,14 @@ { return ; } - + + // We take a direct copy of the charger detector properties for + // now. If fields are later added to the properties classes in the + // SHAI, we need to start copying field-by-field and check the PSL + // reported capabilities before accessing a field that may not be + // present in an older PSL binary. gChargerDetector = &aChargerDetector; + gChargerDetectorProperties = aProperties; if(gChargerObsever != NULL) { diff -r 613028a7da24 -r eaaed528d5fd usbdrv/peripheral/public/d32usbc.h --- a/usbdrv/peripheral/public/d32usbc.h Thu Sep 02 22:23:37 2010 +0300 +++ b/usbdrv/peripheral/public/d32usbc.h Fri Sep 17 08:40:15 2010 +0300 @@ -206,6 +206,8 @@ ERequestEndpointStatusNotifyCancel = 1< +#include + // FIXME: for dummy dcd compitible, move this line to usbcshared.h // used by shared chunk version LDD's user app interface @@ -121,6 +123,21 @@ TInt MinPacketSize() const; }; +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; + + + /** Endpoint resources/behaviours. @see AllocateEndpointResource() diff -r 613028a7da24 -r eaaed528d5fd usbdrv/peripheral/public/usbc.h --- a/usbdrv/peripheral/public/usbc.h Thu Sep 02 22:23:37 2010 +0300 +++ b/usbdrv/peripheral/public/usbc.h Fri Sep 17 08:40:15 2010 +0300 @@ -51,7 +51,7 @@ /** Must correspond to the max enum of TRequest + 1; currently this is ERequestOtgFeaturesNotify = 10. */ -const TInt KUsbcMaxRequests = 11; +const TInt KUsbcMaxRequests = 12; // //########################### Logical Device Driver (LDD) ############################# @@ -297,9 +297,11 @@ void ClosePhysicalChunk(DPlatChunkHw* &aHwChunk); void CancelNotifyEndpointStatus(); void CancelNotifyOtgFeatures(); + void CancelNotifyChargerType(); static void StatusChangeCallback(TAny* aDLddUsbcChannel); static void EndpointStatusChangeCallback(TAny* aDLddUsbcChannel); static void OtgFeatureChangeCallback(TAny* aDLddUsbcChannel); + static void ChargerTypeChangeCallback(TAny* aDLddUsbcChannel); static void EmergencyCompleteDfc(TAny* aDLddUsbcChannel); void DeConfigure(TInt aErrorCode); TInt SelectAlternateSetting(TUint aAlternateSetting); @@ -333,6 +335,8 @@ TUsbcEndpointStatusCallback iEndpointStatusCallbackInfo; TAny* iOtgFeatureChangePtr; TUsbcOtgFeatureCallback iOtgFeatureCallbackInfo; + TAny* iChargerTypeChangePtr; + TUsbcChargerTypeCallback iChargerTypeCallbackInfo; TInt iNumberOfEndpoints; RArray iHwChunksEp0; RArray iHwChunks; @@ -350,6 +354,7 @@ TClientDataRequest *iStatusChangeReq; TClientDataRequest *iEndpointStatusChangeReq; TClientDataRequest *iOtgFeatureChangeReq; + TClientDataRequest *iChargerTypeChangeReq; TEndpointTransferInfo iTfrInfo; }; diff -r 613028a7da24 -r eaaed528d5fd usbdrv/peripheral/public/usbcsc.h --- a/usbdrv/peripheral/public/usbcsc.h Thu Sep 02 22:23:37 2010 +0300 +++ b/usbdrv/peripheral/public/usbcsc.h Fri Sep 17 08:40:15 2010 +0300 @@ -322,9 +322,11 @@ TInt SetupEp0(); void CancelNotifyEndpointStatus(); void CancelNotifyOtgFeatures(); + void CancelNotifyChargerType(); static void StatusChangeCallback(TAny* aDLddUsbcChannel); static void EndpointStatusChangeCallback(TAny* aDLddUsbcChannel); static void OtgFeatureChangeCallback(TAny* aDLddUsbcChannel); + static void ChargerTypeChangeCallback(TAny* aDLddUsbcChannel); static void EmergencyCompleteDfc(TAny* aDLddUsbcChannel); void DeConfigure(TInt aErrorCode); TInt SelectAlternateSetting(TUint aAlternateSetting); @@ -354,6 +356,8 @@ TUsbcEndpointStatusCallback iEndpointStatusCallbackInfo; TAny* iOtgFeatureChangePtr; TUsbcOtgFeatureCallback iOtgFeatureCallbackInfo; + TAny* iChargerTypeChangePtr; + TUsbcChargerTypeCallback iChargerTypeCallbackInfo; TUint8* iBufferBaseEp0; TInt iBufferSizeEp0; TInt iNumberOfEndpoints; diff -r 613028a7da24 -r eaaed528d5fd usbdrv/peripheral/public/usbcshared.h --- a/usbdrv/peripheral/public/usbcshared.h Thu Sep 02 22:23:37 2010 +0300 +++ b/usbdrv/peripheral/public/usbcshared.h Fri Sep 17 08:40:15 2010 +0300 @@ -351,6 +351,29 @@ TDfc iDfc; TUint8 iValue; }; +/** USB Charger Type change callback. +*/ +class TUsbcChargerTypeCallback + { +public: + inline TUsbcChargerTypeCallback (DBase* aOwner, TDfcFn aCallback, TInt aPriority); + inline void SetChargerType(TUint aType); + inline TUint ChargerType () const; + inline void SetPendingNotify(TBool aPendingNotify); + inline TBool PendingNotify () const; + inline DBase* Owner() const; + inline TInt DoCallback(); + inline void Cancel(); + inline void SetDfcQ(TDfcQue* aDfcQ); +public: + /** Used by the PIL to queue callback objects into a TSglQue. */ + TSglQueLink iLink; +private: + DBase* iOwner; + TDfc iDfc; + TUint iChargerType; + TBool iPendingNotify; + }; // //########################### Physical Device Driver (PIL + PSL) ###################### @@ -686,6 +709,9 @@ IMPORT_C TBool QueryEndpointResource(const DBase* aClientId, TInt aEndpointNum, TUsbcEndpointResource aResource); IMPORT_C TInt EndpointPacketSize(const DBase* aClientId, TInt aEndpointNum); + IMPORT_C TInt RegisterChargingPortTypeNotify(TUsbcChargerTypeCallback& aCallback); + IMPORT_C TInt DeRegisterChargingPortTypeNotify(const DBase* aClientId); + IMPORT_C void ChargerDetectorCaps(UsbShai::TChargerDetectorProperties& aProperties); // Called by LDD IMPORT_C TDfcQue* DfcQ(TInt aIndex); @@ -873,6 +899,7 @@ inline TBool IsInTheEpStatusList(const TUsbcEndpointStatusCallback& aCallback); inline TBool IsInTheOtgFeatureList(const TUsbcOtgFeatureCallback& aCallback); inline TBool IsInTheRequestList(const TUsbcRequestCallback& aCallback); + inline TBool IsInTheChargerTypeList(const TUsbcChargerTypeCallback& aCallback); static void ReconnectTimerCallback(TAny* aPtr); static void CableStatusTimerCallback(TAny* aPtr); static void PowerUpDfc(TAny* aPtr); @@ -934,7 +961,7 @@ NFastMutex iMutex; // To pretect interface set with NFastMutex UsbShai::MPeripheralControllerIf& iController; // PSL code - const UsbShai::TPeripheralControllerProperties& iControllerProperties; // Static configuration from PSL + const UsbShai::TPeripheralControllerProperties iControllerProperties; // Static configuration from PSL TBool iIsOtgPort; // Is this instance a driver for otg port, // Set at construction time. @@ -974,6 +1001,9 @@ TInt (*iEnablePullUpOnDPlus)(TAny* aOtgContext); TInt (*iDisablePullUpOnDPlus)(TAny* aOtgContext); TAny* iOtgContext; +private: + TSglQue iChargerTypeCallbacks; // list of USB charger type notification requests + TUint iCurrentChargerType; }; /** Simple queue of status changes to be recorded. diff -r 613028a7da24 -r eaaed528d5fd usbdrv/peripheral/public/usbcshared.inl --- a/usbdrv/peripheral/public/usbcshared.inl Thu Sep 02 22:23:37 2010 +0300 +++ b/usbdrv/peripheral/public/usbcshared.inl Fri Sep 17 08:40:15 2010 +0300 @@ -186,6 +186,23 @@ return EFalse; } +TBool DUsbClientController::IsInTheChargerTypeList(const TUsbcChargerTypeCallback& aCallback) + { + const TInt irq = __SPIN_LOCK_IRQSAVE(iUsbLock); + TSglQueIter iter(iChargerTypeCallbacks); + TUsbcChargerTypeCallback* p; + while ((p = iter++) != NULL) + { + if (p == &aCallback) + { + __SPIN_UNLOCK_IRQRESTORE(iUsbLock, irq); + return ETrue; + } + } + __SPIN_UNLOCK_IRQRESTORE(iUsbLock, irq); + return EFalse; + } + // // --- Misc classes --- // @@ -545,6 +562,91 @@ } +// --- TUsbcChargerTypeCallback + +/** Constructor. + */ +TUsbcChargerTypeCallback::TUsbcChargerTypeCallback(DBase* aOwner, TDfcFn aCallback, + TInt aPriority) + : iOwner(aOwner), + iDfc(aCallback, aOwner, aPriority), + iChargerType(UsbShai::EPortTypeNone), + iPendingNotify(EFalse) + {} + +/** Set charger type which is to be notified to client. + @param Charger type to be set +*/ +void TUsbcChargerTypeCallback::SetChargerType(TUint aType) + { + iChargerType = aType; + } + + +/** Returns a pointer to the owner of this request. + @return A pointer to the owner of this request. +*/ +DBase* TUsbcChargerTypeCallback::Owner() const + { + return iOwner; + } + + +/** Charger type which is to be notified to client. + @return Value of Charger Type +*/ +TUint TUsbcChargerTypeCallback::ChargerType() const + { + return iChargerType; + } + + +/** Set whether there is an pending charger type which is to be notified to client. + @param whether there is an pending charger type +*/ +void TUsbcChargerTypeCallback::SetPendingNotify(TBool aPendingNotify) + { + iPendingNotify = aPendingNotify; + } + +/** return whether there is an pending charger type which is to be notified to client. + @return whether there is an pending charger type +*/ +TBool TUsbcChargerTypeCallback::PendingNotify() const + { + return iPendingNotify; + } + +/** Executes the callback function set by the owner of this request. + @return KErrNone. +*/ +TInt TUsbcChargerTypeCallback::DoCallback() + { + if (NKern::CurrentContext() == NKern::EThread) + iDfc.Enque(); + else + iDfc.Add(); + return KErrNone; + } + + +/** Cancels the callback function set by the owner of this request. + */ +void TUsbcChargerTypeCallback::Cancel() + { + iDfc.Cancel(); + } + + +/** Set DFC queue. + @param aDfcQ DFC queue to be set +*/ +void TUsbcChargerTypeCallback::SetDfcQ(TDfcQue* aDfcQ) + { + iDfc.SetDfcQ(aDfcQ); + } + + /** Returns a pointer to the currently selected (active) setting of this interface. @return A pointer to the currently selected (active) setting of this interface. diff -r 613028a7da24 -r eaaed528d5fd usbmgmt/usbmgr/device/classdrivers/acm/classimplementation/ecacm/group/BLD.INF --- a/usbmgmt/usbmgr/device/classdrivers/acm/classimplementation/ecacm/group/BLD.INF Thu Sep 02 22:23:37 2010 +0300 +++ b/usbmgmt/usbmgr/device/classdrivers/acm/classimplementation/ecacm/group/BLD.INF Fri Sep 17 08:40:15 2010 +0300 @@ -32,3 +32,6 @@ PRJ_TESTEXPORTS ../public/acmserverconsts.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(usb/acmserverconsts.h) + +PRJ_TESTMMPFILES +ecacm_overdummyusbldd.mmp diff -r 613028a7da24 -r eaaed528d5fd usbmgmt/usbmgr/device/classdrivers/acm/classimplementation/ecacm/group/ecacm_overdummyusbldd.mmp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/usbmgmt/usbmgr/device/classdrivers/acm/classimplementation/ecacm/group/ecacm_overdummyusbldd.mmp Fri Sep 17 08:40:15 2010 +0300 @@ -0,0 +1,77 @@ +/* +* 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: +* Top-level project file for ECACM.CSY +* ecacm.csy Comms server plug-in for USB +* +*/ + +/** + @file +*/ + + +TARGET ecacm.csy +CAPABILITY CommDD PowerMgmt ReadDeviceData WriteDeviceData TrustedUI ProtServ NetworkControl NetworkServices LocalServices ReadUserData WriteUserData +TARGETTYPE dll + +NOEXPORTLIBRARY + +// +// We have a laggard, ill-defined UID3 which must be kept +// for old platforms for BC. For newer platforms, we use +// KUidECACM = 0x10201EF6 +// +uid 0x10005054 0x10201EF6 + +MACRO __OVER_DUMMYUSBLDD__ + +SOURCEPATH ../src +SOURCE AcmPort.cpp +SOURCE AcmPortFactory.cpp +SOURCE AcmReader.cpp +SOURCE AcmWriter.cpp +SOURCE linkstatenotifier.cpp +SOURCE ActiveReader.cpp +SOURCE ActiveReadOneOrMoreReader.cpp +SOURCE ActiveWriter.cpp +SOURCE BreakController.cpp +SOURCE CdcAcmClass.cpp +SOURCE CdcInterfaceBase.cpp +SOURCE CdcControlInterface.cpp +SOURCE CdcControlInterfaceReader.cpp +SOURCE CdcDataInterface.cpp +SOURCE ClassDescriptor.cpp +SOURCE DllMain.cpp +SOURCE RegistrationPort.cpp +SOURCE RequestHeader.cpp +SOURCE acmserver.cpp +SOURCE acmsession.cpp +SOURCE ActiveDataAvailableNotifier.cpp + +USERINCLUDE ../inc +USERINCLUDE ../public +USERINCLUDE ../traces + +OS_LAYER_SYSTEMINCLUDE_SYMBIAN + +LIBRARY euser.lib +LIBRARY c32.lib +LIBRARY efsrv.lib +LIBRARY dummyusblddapi.lib + +VENDORID 0x70000001 + +UNPAGED + diff -r 613028a7da24 -r eaaed528d5fd usbmgmt/usbmgr/device/classdrivers/acm/classimplementation/ecacm/inc/ActiveDataAvailableNotifier.h --- a/usbmgmt/usbmgr/device/classdrivers/acm/classimplementation/ecacm/inc/ActiveDataAvailableNotifier.h Thu Sep 02 22:23:37 2010 +0300 +++ b/usbmgmt/usbmgr/device/classdrivers/acm/classimplementation/ecacm/inc/ActiveDataAvailableNotifier.h Fri Sep 17 08:40:15 2010 +0300 @@ -19,7 +19,11 @@ #define __ACTIVEDATAAVAILABLENOTIFIER_H__ #include +#ifndef __OVER_DUMMYUSBLDD__ #include +#else +#include +#endif class RDevUsbcClient; class MNotifyDataAvailableObserver; diff -r 613028a7da24 -r eaaed528d5fd usbmgmt/usbmgr/device/classdrivers/acm/classimplementation/ecacm/inc/ActiveReadOneOrMoreReader.h --- a/usbmgmt/usbmgr/device/classdrivers/acm/classimplementation/ecacm/inc/ActiveReadOneOrMoreReader.h Thu Sep 02 22:23:37 2010 +0300 +++ b/usbmgmt/usbmgr/device/classdrivers/acm/classimplementation/ecacm/inc/ActiveReadOneOrMoreReader.h Fri Sep 17 08:40:15 2010 +0300 @@ -19,7 +19,11 @@ #define __ACTIVEREADONEORMOREREADER_H__ #include +#ifndef __OVER_DUMMYUSBLDD__ #include +#else +#include +#endif class RDevUsbcClient; class MReadOneOrMoreObserver; diff -r 613028a7da24 -r eaaed528d5fd usbmgmt/usbmgr/device/classdrivers/acm/classimplementation/ecacm/inc/ActiveReader.h --- a/usbmgmt/usbmgr/device/classdrivers/acm/classimplementation/ecacm/inc/ActiveReader.h Thu Sep 02 22:23:37 2010 +0300 +++ b/usbmgmt/usbmgr/device/classdrivers/acm/classimplementation/ecacm/inc/ActiveReader.h Fri Sep 17 08:40:15 2010 +0300 @@ -19,7 +19,11 @@ #define __ACTIVEREADER_H__ #include +#ifndef __OVER_DUMMYUSBLDD__ #include +#else +#include +#endif class RDevUsbcClient; class MReadObserver; diff -r 613028a7da24 -r eaaed528d5fd usbmgmt/usbmgr/device/classdrivers/acm/classimplementation/ecacm/inc/ActiveWriter.h --- a/usbmgmt/usbmgr/device/classdrivers/acm/classimplementation/ecacm/inc/ActiveWriter.h Thu Sep 02 22:23:37 2010 +0300 +++ b/usbmgmt/usbmgr/device/classdrivers/acm/classimplementation/ecacm/inc/ActiveWriter.h Fri Sep 17 08:40:15 2010 +0300 @@ -19,7 +19,11 @@ #define __ACTIVEWRITER_H__ #include +#ifndef __OVER_DUMMYUSBLDD__ #include +#else +#include +#endif class RDevUsbcClient; class MWriteObserver; diff -r 613028a7da24 -r eaaed528d5fd usbmgmt/usbmgr/device/classdrivers/acm/classimplementation/ecacm/inc/CdcInterfaceBase.h --- a/usbmgmt/usbmgr/device/classdrivers/acm/classimplementation/ecacm/inc/CdcInterfaceBase.h Thu Sep 02 22:23:37 2010 +0300 +++ b/usbmgmt/usbmgr/device/classdrivers/acm/classimplementation/ecacm/inc/CdcInterfaceBase.h Fri Sep 17 08:40:15 2010 +0300 @@ -19,7 +19,11 @@ #define __CDCINTERFACEBASE_H__ #include +#ifndef __OVER_DUMMYUSBLDD__ #include +#else +#include +#endif NONSHARABLE_CLASS(CCdcInterfaceBase) : public CBase /** diff -r 613028a7da24 -r eaaed528d5fd usbmgmt/usbmgr/device/classdrivers/acm/classimplementation/ecacm/src/ActiveDataAvailableNotifier.cpp --- a/usbmgmt/usbmgr/device/classdrivers/acm/classimplementation/ecacm/src/ActiveDataAvailableNotifier.cpp Thu Sep 02 22:23:37 2010 +0300 +++ b/usbmgmt/usbmgr/device/classdrivers/acm/classimplementation/ecacm/src/ActiveDataAvailableNotifier.cpp Fri Sep 17 08:40:15 2010 +0300 @@ -16,7 +16,6 @@ */ #include -#include #include "ActiveDataAvailableNotifier.h" #include "AcmConstants.h" #include "AcmPanic.h" diff -r 613028a7da24 -r eaaed528d5fd usbmgmt/usbmgr/device/classdrivers/acm/classimplementation/ecacm/src/ActiveReadOneOrMoreReader.cpp --- a/usbmgmt/usbmgr/device/classdrivers/acm/classimplementation/ecacm/src/ActiveReadOneOrMoreReader.cpp Thu Sep 02 22:23:37 2010 +0300 +++ b/usbmgmt/usbmgr/device/classdrivers/acm/classimplementation/ecacm/src/ActiveReadOneOrMoreReader.cpp Fri Sep 17 08:40:15 2010 +0300 @@ -16,7 +16,6 @@ */ #include -#include #include "ActiveReadOneOrMoreReader.h" #include "AcmConstants.h" #include "AcmPanic.h" diff -r 613028a7da24 -r eaaed528d5fd usbmgmt/usbmgr/device/classdrivers/acm/classimplementation/ecacm/src/ActiveReader.cpp --- a/usbmgmt/usbmgr/device/classdrivers/acm/classimplementation/ecacm/src/ActiveReader.cpp Thu Sep 02 22:23:37 2010 +0300 +++ b/usbmgmt/usbmgr/device/classdrivers/acm/classimplementation/ecacm/src/ActiveReader.cpp Fri Sep 17 08:40:15 2010 +0300 @@ -16,7 +16,6 @@ */ #include -#include #include "ActiveReader.h" #include "AcmConstants.h" #include "AcmPanic.h" diff -r 613028a7da24 -r eaaed528d5fd usbmgmt/usbmgr/device/classdrivers/acm/classimplementation/ecacm/src/ActiveWriter.cpp --- a/usbmgmt/usbmgr/device/classdrivers/acm/classimplementation/ecacm/src/ActiveWriter.cpp Thu Sep 02 22:23:37 2010 +0300 +++ b/usbmgmt/usbmgr/device/classdrivers/acm/classimplementation/ecacm/src/ActiveWriter.cpp Fri Sep 17 08:40:15 2010 +0300 @@ -16,7 +16,6 @@ */ #include -#include #include "ActiveWriter.h" #include "AcmConstants.h" #include "AcmPanic.h" diff -r 613028a7da24 -r eaaed528d5fd usbmgmt/usbmgr/device/classdrivers/acm/classimplementation/ecacm/src/CdcControlInterfaceReader.cpp --- a/usbmgmt/usbmgr/device/classdrivers/acm/classimplementation/ecacm/src/CdcControlInterfaceReader.cpp Thu Sep 02 22:23:37 2010 +0300 +++ b/usbmgmt/usbmgr/device/classdrivers/acm/classimplementation/ecacm/src/CdcControlInterfaceReader.cpp Fri Sep 17 08:40:15 2010 +0300 @@ -16,7 +16,11 @@ */ #include +#ifndef __OVER_DUMMYUSBLDD__ #include +#else +#include +#endif #include "CdcControlInterfaceReader.h" #include "AcmPanic.h" #include "AcmUtils.h" diff -r 613028a7da24 -r eaaed528d5fd usbmgmt/usbmgr/device/classdrivers/acm/classimplementation/ecacm/src/linkstatenotifier.cpp --- a/usbmgmt/usbmgr/device/classdrivers/acm/classimplementation/ecacm/src/linkstatenotifier.cpp Thu Sep 02 22:23:37 2010 +0300 +++ b/usbmgmt/usbmgr/device/classdrivers/acm/classimplementation/ecacm/src/linkstatenotifier.cpp Fri Sep 17 08:40:15 2010 +0300 @@ -16,7 +16,11 @@ */ #include +#ifndef __OVER_DUMMYUSBLDD__ #include +#else +#include +#endif #include "AcmPanic.h" #include "linkstatenotifier.h" #include "OstTraceDefinitions.h" diff -r 613028a7da24 -r eaaed528d5fd usbmgmt/usbmgr/device/classdrivers/ms/classcontroller/group/BLD.INF --- a/usbmgmt/usbmgr/device/classdrivers/ms/classcontroller/group/BLD.INF Thu Sep 02 22:23:37 2010 +0300 +++ b/usbmgmt/usbmgr/device/classdrivers/ms/classcontroller/group/BLD.INF Fri Sep 17 08:40:15 2010 +0300 @@ -20,3 +20,7 @@ #if !(defined(WINS) || defined(WINSCW)) msclasscontroller.mmp // Mass Storage Class Controller plugin #endif + + +PRJ_TESTMMPFILES +t_msclasscontroller.mmp // Mass Storage Class Controller plugin \ No newline at end of file diff -r 613028a7da24 -r eaaed528d5fd usbmgmt/usbmgr/device/classdrivers/ms/classcontroller/group/t_msclasscontroller.mmp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/usbmgmt/usbmgr/device/classdrivers/ms/classcontroller/group/t_msclasscontroller.mmp Fri Sep 17 08:40:15 2010 +0300 @@ -0,0 +1,56 @@ +/* +* Copyright (c) 2004-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: +* usbmassstorageclient.dll USB mass storage server client side API +* +*/ + +/** + @file +*/ + +target msclasscontroller.dll //Recommended unpaged +CAPABILITY CommDD NetworkControl NetworkServices LocalServices ProtServ +targettype plugin + + +uid 0x10009d8d 0x10204bbb + + +MACRO __OVER_DUMMYUSBLDD__ +sourcepath ../src +source CUsbMsClassController.cpp +source CUsbMsClassImpCollection.cpp + +USERINCLUDE ../inc +USERINCLUDE ../traces + +OS_LAYER_SYSTEMINCLUDE_SYMBIAN + + +start resource usbms.rss +targetpath /private/101fe1db //10204bbb +header +end + +start resource 10204bbb.rss +target msclasscontroller.rsc +end + +library euser.lib +LIBRARY usbclasscontroller.lib +LIBRARY efsrv.lib +LIBRARY bafl.lib + +VENDORID 0x70000001 diff -r 613028a7da24 -r eaaed528d5fd usbmgmt/usbmgr/device/classdrivers/ms/classcontroller/src/CUsbMsClassController.cpp --- a/usbmgmt/usbmgr/device/classdrivers/ms/classcontroller/src/CUsbMsClassController.cpp Thu Sep 02 22:23:37 2010 +0300 +++ b/usbmgmt/usbmgr/device/classdrivers/ms/classcontroller/src/CUsbMsClassController.cpp Fri Sep 17 08:40:15 2010 +0300 @@ -122,9 +122,12 @@ iState = EUsbServiceStarting; +#ifndef __OVER_DUMMYUSBLDD__ // Connect to USB Mass Storage server TInt err = iUsbMs.Connect(); - +#else + TInt err = KErrNone; +#endif if (err != KErrNone) { iState = EUsbServiceIdle; @@ -135,8 +138,12 @@ return; } +#ifndef __OVER_DUMMYUSBLDD__ // Start mass storage device err = iUsbMs.Start(iMsConfig); +#else + err = KErrNone; +#endif if (err != KErrNone) { @@ -174,6 +181,7 @@ } TRequestStatus* reportStatus = &aStatus; +#ifndef __OVER_DUMMYUSBLDD__ TInt err = iUsbMs.Stop(); if (err != KErrNone) @@ -187,6 +195,9 @@ } iUsbMs.Close(); +#else + iState = EUsbServiceIdle; +#endif User::RequestComplete(reportStatus, KErrNone); OstTraceFunctionExit0( CUSBMSCLASSCONTROLLER_START_STOP_DUP1 ); } diff -r 613028a7da24 -r eaaed528d5fd usbmgmt/usbmgr/device/classdrivers/whcm/classcontroller/INC/CUsbWHCMClassController.h --- a/usbmgmt/usbmgr/device/classdrivers/whcm/classcontroller/INC/CUsbWHCMClassController.h Thu Sep 02 22:23:37 2010 +0300 +++ b/usbmgmt/usbmgr/device/classdrivers/whcm/classcontroller/INC/CUsbWHCMClassController.h Fri Sep 17 08:40:15 2010 +0300 @@ -28,7 +28,11 @@ #include #include +#ifndef __OVER_DUMMYUSBLDD__ #include +#else +#include +#endif const TInt KWHCMPriority = 1; const TInt KWHCMSubClass = 0x08; diff -r 613028a7da24 -r eaaed528d5fd usbmgmt/usbmgr/device/classdrivers/whcm/classcontroller/SRC/CUsbWHCMClassController.cpp --- a/usbmgmt/usbmgr/device/classdrivers/whcm/classcontroller/SRC/CUsbWHCMClassController.cpp Thu Sep 02 22:23:37 2010 +0300 +++ b/usbmgmt/usbmgr/device/classdrivers/whcm/classcontroller/SRC/CUsbWHCMClassController.cpp Fri Sep 17 08:40:15 2010 +0300 @@ -86,6 +86,7 @@ void CUsbWHCMClassController::ConstructL() { OstTraceFunctionEntry0( CUSBWHCMCLASSCONTROLLER_CONSTRUCTL_ENTRY ); +#ifndef __OVER_DUMMYUSBLDD__ // Load the device driver TInt err = User::LoadLogicalDevice(KUsbLDDName); if (err != KErrNone && err != KErrAlreadyExists) @@ -94,8 +95,9 @@ "CUsbWHCMClassController::ConstructL;err=%d", err ); User::Leave(err); } - - +#else + TInt err = KErrNone; +#endif err = iLdd.Open(0); if (err < 0) { diff -r 613028a7da24 -r eaaed528d5fd usbmgmt/usbmgr/device/classdrivers/whcm/classcontroller/group/bld.inf --- a/usbmgmt/usbmgr/device/classdrivers/whcm/classcontroller/group/bld.inf Thu Sep 02 22:23:37 2010 +0300 +++ b/usbmgmt/usbmgr/device/classdrivers/whcm/classcontroller/group/bld.inf Fri Sep 17 08:40:15 2010 +0300 @@ -25,3 +25,6 @@ #if !(defined(WINS) || defined(WINSCW)) WHCMClassController.mmp // WHCM Class Controller plugin #endif + +PRJ_TESTMMPFILES +t_WHCMClassController.mmp // Mass Storage Class Controller plugin \ No newline at end of file diff -r 613028a7da24 -r eaaed528d5fd usbmgmt/usbmgr/device/classdrivers/whcm/classcontroller/group/t_WHCMClassController.mmp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/usbmgmt/usbmgr/device/classdrivers/whcm/classcontroller/group/t_WHCMClassController.mmp Fri Sep 17 08:40:15 2010 +0300 @@ -0,0 +1,50 @@ +/* +* 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: +* WHCMClassController.dll USB Plugin, must be include in ROM if producing a WHCM device +* +*/ + +/** + @file +*/ + + +target whcmclasscontroller.dll //Recommended unpaged +CAPABILITY CommDD NetworkControl NetworkServices LocalServices ProtServ +targettype plugin + +// ECom Dll recognition UID followed by the unique dll UID +UID 0x10009d8d 0x101fbf23 +VENDORID 0x70000001 + +MACRO __OVER_DUMMYUSBLDD__ + +SOURCEPATH ../SRC +SOURCE CUsbWHCMClassImpCollection.cpp +SOURCE CUsbWHCMClassController.cpp + +USERINCLUDE ../INC +USERINCLUDE ../traces + +OS_LAYER_SYSTEMINCLUDE_SYMBIAN + + +start resource 101fbf23.rss +target whcmclasscontroller.rsc +END + +LIBRARY euser.lib +LIBRARY usbclasscontroller.lib +LIBRARY dummyusblddapi.lib diff -r 613028a7da24 -r eaaed528d5fd usbmgmt/usbmgr/host/functiondrivers/ms/msfdc/group/bld.inf --- a/usbmgmt/usbmgr/host/functiondrivers/ms/msfdc/group/bld.inf Thu Sep 02 22:23:37 2010 +0300 +++ b/usbmgmt/usbmgr/host/functiondrivers/ms/msfdc/group/bld.inf Fri Sep 17 08:40:15 2010 +0300 @@ -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" @@ -23,12 +23,13 @@ PRJ_PLATFORMS ARMV5 - PRJ_MMPFILES #if defined(SYMBIAN_ENABLE_USB_OTG_HOST) && !defined(WINS) && !defined(X86GCC) msfdc.mmp #endif +PRJ_EXPORTS +msfdc.iby /epoc32/rom/include/msfdc.iby -PRJ_EXPORTS -msfdc.iby /epoc32/rom/include/msfdc.iby \ No newline at end of file +PRJ_TESTMMPFILES +msfdc_overdummy.mmp \ No newline at end of file diff -r 613028a7da24 -r eaaed528d5fd usbmgmt/usbmgr/host/functiondrivers/ms/msfdc/group/msfdc_overdummy.mmp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/usbmgmt/usbmgr/host/functiondrivers/ms/msfdc/group/msfdc_overdummy.mmp Fri Sep 17 08:40:15 2010 +0300 @@ -0,0 +1,53 @@ +/* +* 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: +* dummymsfdc.dll Dummy Mass Storage FDC plugin for FDF. +* dummymsfdc.rsc Dummy Resource file for Mass Storage FDC plugin. +* +*/ + +/** + @file + @internalComponent +*/ + +TARGET msfdc_overdummy.dll +TARGETTYPE PLUGIN +// UID2 = 0x10009d8d for ECOM plugins. +// UID3 = the 'DLL UID' (see resource file) +UID 0x10009d8d 0x10285B0C +MACRO __DUMMYFDF__ +SOURCEPATH ../src +SOURCE msfdc.cpp +SOURCE msfdcmain.cpp + +RESOURCE msfdc_overdummy.rss + +OS_LAYER_SYSTEMINCLUDE_SYMBIAN + +USERINCLUDE ../inc +USERINCLUDE ../../msmm/client/public +USERINCLUDE ../../msmm/server/public +USERINCLUDE ../traces + + +LIBRARY euser.lib + +LIBRARY fdcbase_overdummy.lib +LIBRARY usbmsmmclient_dummy.lib +LIBRARY usbdescriptors.lib +LIBRARY usbdi_utils_dummy.lib +NOEXPORTLIBRARY + +#include diff -r 613028a7da24 -r eaaed528d5fd usbmgmt/usbmgr/host/functiondrivers/ms/msfdc/inc/msfdc.h --- a/usbmgmt/usbmgr/host/functiondrivers/ms/msfdc/inc/msfdc.h Thu Sep 02 22:23:37 2010 +0300 +++ b/usbmgmt/usbmgr/host/functiondrivers/ms/msfdc/inc/msfdc.h Fri Sep 17 08:40:15 2010 +0300 @@ -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" @@ -24,9 +24,14 @@ #define MSFDC_H #include +#include +#ifndef __DUMMYFDF__ #include -#include #include "msmmclient.h" +#else +#include +#include +#endif /** The CMsFdc class diff -r 613028a7da24 -r eaaed528d5fd usbmgmt/usbmgr/host/functiondrivers/ms/msfdc/src/msfdc.cpp --- a/usbmgmt/usbmgr/host/functiondrivers/ms/msfdc/src/msfdc.cpp Thu Sep 02 22:23:37 2010 +0300 +++ b/usbmgmt/usbmgr/host/functiondrivers/ms/msfdc/src/msfdc.cpp Fri Sep 17 08:40:15 2010 +0300 @@ -23,8 +23,13 @@ #include "msfdc.h" #include "utils.h" #include +#ifndef __DUMMYFDF__ #include #include +#else +#include +#include +#endif #include #include "OstTraceDefinitions.h" #ifdef OST_TRACE_COMPILER_IN_USE @@ -223,11 +228,11 @@ } error = interface_ep0.GetInterfaceDescriptor(ifDescriptor); - interface_ep0.Close(); if (error) { OstTrace0( TRACE_ERROR, CMSFDC_MFI1NEWFUNCTION_DUP14, "***** Mass Storage FDC get interface descriptor Failed" ); + interface_ep0.Close(); delete data; OstTraceFunctionExit0( CMSFDC_MFI1NEWFUNCTION_EXIT_DUP7 ); return error; @@ -261,6 +266,7 @@ error = iMsmmSession.AddFunction(*data, aInterfaces[0], token); + interface_ep0.Close(); delete data; OstTraceFunctionExit0( CMSFDC_MFI1NEWFUNCTION_EXIT_DUP8 ); return error; diff -r 613028a7da24 -r eaaed528d5fd usbmgmt/usbmgr/host/functiondrivers/ms/msfdc/src/msfdc_overdummy.rss --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/usbmgmt/usbmgr/host/functiondrivers/ms/msfdc/src/msfdc_overdummy.rss Fri Sep 17 08:40:15 2010 +0300 @@ -0,0 +1,47 @@ +/* +* 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 + @internalComponent +*/ + +#include +#include + +RESOURCE REGISTRY_INFO theInfo +{ +dll_uid = 0x10285B0C; +interfaces = + { + INTERFACE_INFO + { + interface_uid = KFdcEcomInterfaceUid; + implementations = + { + IMPLEMENTATION_INFO + { + implementation_uid = 0x20031DF7; + version_no = 1; + display_name = "Dummy MS FDC"; + default_data = "IC0x08ISC0x06IP0x50"; + opaque_data = ""; + } + }; + } + }; +} diff -r 613028a7da24 -r eaaed528d5fd usbmgmt/usbmgr/host/functiondrivers/ms/msfdc/src/msfdcmain.cpp --- a/usbmgmt/usbmgr/host/functiondrivers/ms/msfdc/src/msfdcmain.cpp Thu Sep 02 22:23:37 2010 +0300 +++ b/usbmgmt/usbmgr/host/functiondrivers/ms/msfdc/src/msfdcmain.cpp Fri Sep 17 08:40:15 2010 +0300 @@ -25,7 +25,11 @@ const TImplementationProxy ImplementationTable[] = { +#ifndef __DUMMYFDF__ IMPLEMENTATION_PROXY_ENTRY(0x10285B0D, CMsFdc::NewL), +#else + IMPLEMENTATION_PROXY_ENTRY(0x20031DF7, CMsFdc::NewL), +#endif }; /** A factory method that returns the number of implementation of an interfaces diff -r 613028a7da24 -r eaaed528d5fd usbmgmt/usbmgr/host/functiondrivers/ms/msmm/server/src/subcommands.cpp --- a/usbmgmt/usbmgr/host/functiondrivers/ms/msmm/server/src/subcommands.cpp Thu Sep 02 22:23:37 2010 +0300 +++ b/usbmgmt/usbmgr/host/functiondrivers/ms/msmm/server/src/subcommands.cpp Fri Sep 17 08:40:15 2010 +0300 @@ -152,6 +152,9 @@ { OstTraceFunctionEntry0( TREGISTERINTERFACE_DOCANCELASYNCCMD_ENTRY ); + TRequestStatus* status = &iHandler.Status(); + User::RequestComplete(status, KErrCancel); + if(iInterfaceNode) { iInterfaceNode->iUsbMsDevice.Remove(); diff -r 613028a7da24 -r eaaed528d5fd usbmgmt/usbmgr/usbman/client/BWINS/usbman_over_dummylddu.def --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/usbmgmt/usbmgr/usbman/client/BWINS/usbman_over_dummylddu.def Fri Sep 17 08:40:15 2010 +0300 @@ -0,0 +1,52 @@ +EXPORTS + ?BusRespondSrp@RUsb@@QAEHXZ @ 1 NONAME ; int RUsb::BusRespondSrp(void) + ?HostEventNotificationCancel@RUsb@@QAEXXZ @ 2 NONAME ; void RUsb::HostEventNotificationCancel(void) + ?DeviceStateNotificationCancel@RUsb@@QAEXXZ @ 3 NONAME ; void RUsb::DeviceStateNotificationCancel(void) + ?CancelInterest@RUsb@@QAEHW4TUsbReqType@1@@Z @ 4 NONAME ; int RUsb::CancelInterest(enum RUsb::TUsbReqType) + ?__DbgMarkEnd@RUsb@@QAEHH@Z @ 5 NONAME ; int RUsb::__DbgMarkEnd(int) + ?StateNotification@RUsb@@QAEXIAAW4TUsbDeviceState@@AAVTRequestStatus@@@Z @ 6 NONAME ; void RUsb::StateNotification(unsigned int, enum TUsbDeviceState &, class TRequestStatus &) + ?BusRequest@RUsb@@QAEHXZ @ 7 NONAME ; int RUsb::BusRequest(void) + ?panic@@YAXXZ @ 8 NONAME ; void panic(void) + ?StateNotificationCancel@RUsb@@QAEXXZ @ 9 NONAME ; void RUsb::StateNotificationCancel(void) + ?Connect@RUsb@@QAEHXZ @ 10 NONAME ; int RUsb::Connect(void) + ?GetCurrentState@RUsb@@QAEHAAW4TUsbServiceState@@@Z @ 11 NONAME ; int RUsb::GetCurrentState(enum TUsbServiceState &) + ?Version@RUsb@@QBE?AVTVersion@@XZ @ 12 NONAME ; class TVersion RUsb::Version(void) const + ??0RUsb@@QAE@XZ @ 13 NONAME ; RUsb::RUsb(void) + ?RequestSession@RUsb@@QAEHXZ @ 14 NONAME ; int RUsb::RequestSession(void) + ?TryStart@RUsb@@QAEXHAAVTRequestStatus@@@Z @ 15 NONAME ; void RUsb::TryStart(int, class TRequestStatus &) + ?GetSupportedClasses@RUsb@@QAEHHAAV?$RArray@VTUid@@@@@Z @ 16 NONAME ; int RUsb::GetSupportedClasses(int, class RArray &) + ?DeviceStateNotification@RUsb@@QAEXIAAW4TUsbDeviceState@@AAVTRequestStatus@@@Z @ 17 NONAME ; void RUsb::DeviceStateNotification(unsigned int, enum TUsbDeviceState &, class TRequestStatus &) + ?TryStop@RUsb@@QAEXAAVTRequestStatus@@@Z @ 18 NONAME ; void RUsb::TryStop(class TRequestStatus &) + ?__DbgAlloc@RUsb@@QAEHXZ @ 19 NONAME ; int RUsb::__DbgAlloc(void) + ?DisableFunctionDriverLoading@RUsb@@QAEXXZ @ 20 NONAME ; void RUsb::DisableFunctionDriverLoading(void) + ?ServiceStateNotificationCancel@RUsb@@QAEXXZ @ 21 NONAME ; void RUsb::ServiceStateNotificationCancel(void) + ?Stop@RUsb@@QAEXAAVTRequestStatus@@@Z @ 22 NONAME ; void RUsb::Stop(class TRequestStatus &) + ?ServiceStateNotification@RUsb@@QAEXAAW4TUsbServiceState@@AAVTRequestStatus@@@Z @ 23 NONAME ; void RUsb::ServiceStateNotification(enum TUsbServiceState &, class TRequestStatus &) + ??1RUsb@@QAE@XZ @ 24 NONAME ; RUsb::~RUsb(void) + ?StartCancel@RUsb@@QAEXXZ @ 25 NONAME ; void RUsb::StartCancel(void) + ?EnableFunctionDriverLoading@RUsb@@QAEHXZ @ 26 NONAME ; int RUsb::EnableFunctionDriverLoading(void) + ?HostEventNotification@RUsb@@QAEXAAVTRequestStatus@@AAVTDeviceEventInformation@@@Z @ 27 NONAME ; void RUsb::HostEventNotification(class TRequestStatus &, class TDeviceEventInformation &) + ?ClassSupported@RUsb@@QAEHHVTUid@@AAH@Z @ 28 NONAME ; int RUsb::ClassSupported(int, class TUid, int &) + ?__DbgCheckHeap@RUsb@@QAEHH@Z @ 29 NONAME ; int RUsb::__DbgCheckHeap(int) + ?GetPersonalityProperty@RUsb@@QAEHHAAK@Z @ 30 NONAME ; int RUsb::GetPersonalityProperty(int, unsigned long &) + ?Stop@RUsb@@QAEXXZ @ 31 NONAME ; void RUsb::Stop(void) + ?GetDetailedDescription@RUsb@@QAEHHAAPAVHBufC16@@@Z @ 32 NONAME ; int RUsb::GetDetailedDescription(int, class HBufC16 * &) + ?GetServiceState@RUsb@@QAEHAAW4TUsbServiceState@@@Z @ 33 NONAME ; int RUsb::GetServiceState(enum TUsbServiceState &) + ?MessageNotificationCancel@RUsb@@QAEXXZ @ 34 NONAME ; void RUsb::MessageNotificationCancel(void) + ?BusDrop@RUsb@@QAEHXZ @ 35 NONAME ; int RUsb::BusDrop(void) + ?GetPersonalityIds@RUsb@@QAEHAAV?$RArray@H@@@Z @ 36 NONAME ; int RUsb::GetPersonalityIds(class RArray &) + ?GetSupportedLanguages@RUsb@@QAEHIAAV?$RArray@I@@@Z @ 37 NONAME ; int RUsb::GetSupportedLanguages(unsigned int, class RArray &) + ?SetCtlSessionMode@RUsb@@QAEHH@Z @ 38 NONAME ; int RUsb::SetCtlSessionMode(int) + ?StopCancel@RUsb@@QAEXXZ @ 39 NONAME ; void RUsb::StopCancel(void) + ?Start@RUsb@@QAEXAAVTRequestStatus@@@Z @ 40 NONAME ; void RUsb::Start(class TRequestStatus &) + ?__DbgFailNext@RUsb@@QAEHH@Z @ 41 NONAME ; int RUsb::__DbgFailNext(int) + ?GetManufacturerStringDescriptor@RUsb@@QAEHIIAAV?$TBuf@$0IA@@@@Z @ 42 NONAME ; int RUsb::GetManufacturerStringDescriptor(unsigned int, unsigned int, class TBuf<128> &) + ?MessageNotification@RUsb@@QAEXAAVTRequestStatus@@AAH@Z @ 43 NONAME ; void RUsb::MessageNotification(class TRequestStatus &, int &) + ?BusClearError@RUsb@@QAEHXZ @ 44 NONAME ; int RUsb::BusClearError(void) + ?GetProductStringDescriptor@RUsb@@QAEHIIAAV?$TBuf@$0IA@@@@Z @ 45 NONAME ; int RUsb::GetProductStringDescriptor(unsigned int, unsigned int, class TBuf<128> &) + ?GetDescription@RUsb@@QAEHHAAPAVHBufC16@@@Z @ 46 NONAME ; int RUsb::GetDescription(int, class HBufC16 * &) + ?__DbgMarkHeap@RUsb@@QAEHXZ @ 47 NONAME ; int RUsb::__DbgMarkHeap(void) + ?GetDeviceState@RUsb@@QAEHAAW4TUsbDeviceState@@@Z @ 48 NONAME ; int RUsb::GetDeviceState(enum TUsbDeviceState &) + ?GetCurrentPersonalityId@RUsb@@QAEHAAH@Z @ 49 NONAME ; int RUsb::GetCurrentPersonalityId(int &) + ?GetOtgDescriptor@RUsb@@QAEHIAAVTOtgDescriptor@@@Z @ 50 NONAME ; int RUsb::GetOtgDescriptor(unsigned int, class TOtgDescriptor &) + diff -r 613028a7da24 -r eaaed528d5fd usbmgmt/usbmgr/usbman/client/EABI/usbman_over_dummylddu.def --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/usbmgmt/usbmgr/usbman/client/EABI/usbman_over_dummylddu.def Fri Sep 17 08:40:15 2010 +0300 @@ -0,0 +1,54 @@ +EXPORTS + _Z5panicv @ 1 NONAME + _ZN4RUsb10BusRequestEv @ 2 NONAME + _ZN4RUsb10StopCancelEv @ 3 NONAME + _ZN4RUsb10__DbgAllocEv @ 4 NONAME + _ZN4RUsb11StartCancelEv @ 5 NONAME + _ZN4RUsb12__DbgMarkEndEi @ 6 NONAME + _ZN4RUsb13BusClearErrorEv @ 7 NONAME + _ZN4RUsb13BusRespondSrpEv @ 8 NONAME + _ZN4RUsb13__DbgFailNextEi @ 9 NONAME + _ZN4RUsb13__DbgMarkHeapEv @ 10 NONAME + _ZN4RUsb14CancelInterestENS_11TUsbReqTypeE @ 11 NONAME + _ZN4RUsb14ClassSupportedEi4TUidRi @ 12 NONAME + _ZN4RUsb14GetDescriptionEiRP7HBufC16 @ 13 NONAME + _ZN4RUsb14GetDeviceStateER15TUsbDeviceState @ 14 NONAME + _ZN4RUsb14RequestSessionEv @ 15 NONAME + _ZN4RUsb14__DbgCheckHeapEi @ 16 NONAME + _ZN4RUsb15GetCurrentStateER16TUsbServiceState @ 17 NONAME + _ZN4RUsb15GetServiceStateER16TUsbServiceState @ 18 NONAME + _ZN4RUsb16GetOtgDescriptorEjR14TOtgDescriptor @ 19 NONAME + _ZN4RUsb17GetPersonalityIdsER6RArrayIiE @ 20 NONAME + _ZN4RUsb17SetCtlSessionModeEi @ 21 NONAME + _ZN4RUsb17StateNotificationEjR15TUsbDeviceStateR14TRequestStatus @ 22 NONAME + _ZN4RUsb19GetSupportedClassesEiR6RArrayI4TUidE @ 23 NONAME + _ZN4RUsb19MessageNotificationER14TRequestStatusRi @ 24 NONAME + _ZN4RUsb21GetSupportedLanguagesEjR6RArrayIjE @ 25 NONAME + _ZN4RUsb21HostEventNotificationER14TRequestStatusR23TDeviceEventInformation @ 26 NONAME + _ZN4RUsb22GetDetailedDescriptionEiRP7HBufC16 @ 27 NONAME + _ZN4RUsb22GetPersonalityPropertyEiRm @ 28 NONAME + _ZN4RUsb23DeviceStateNotificationEjR15TUsbDeviceStateR14TRequestStatus @ 29 NONAME + _ZN4RUsb23GetCurrentPersonalityIdERi @ 30 NONAME + _ZN4RUsb23StateNotificationCancelEv @ 31 NONAME + _ZN4RUsb24ServiceStateNotificationER16TUsbServiceStateR14TRequestStatus @ 32 NONAME + _ZN4RUsb25MessageNotificationCancelEv @ 33 NONAME + _ZN4RUsb26GetProductStringDescriptorEjjR4TBufILi128EE @ 34 NONAME + _ZN4RUsb27EnableFunctionDriverLoadingEv @ 35 NONAME + _ZN4RUsb27HostEventNotificationCancelEv @ 36 NONAME + _ZN4RUsb28DisableFunctionDriverLoadingEv @ 37 NONAME + _ZN4RUsb29DeviceStateNotificationCancelEv @ 38 NONAME + _ZN4RUsb30ServiceStateNotificationCancelEv @ 39 NONAME + _ZN4RUsb31GetManufacturerStringDescriptorEjjR4TBufILi128EE @ 40 NONAME + _ZN4RUsb4StopER14TRequestStatus @ 41 NONAME + _ZN4RUsb4StopEv @ 42 NONAME + _ZN4RUsb5StartER14TRequestStatus @ 43 NONAME + _ZN4RUsb7BusDropEv @ 44 NONAME + _ZN4RUsb7ConnectEv @ 45 NONAME + _ZN4RUsb7TryStopER14TRequestStatus @ 46 NONAME + _ZN4RUsb8TryStartEiR14TRequestStatus @ 47 NONAME + _ZN4RUsbC1Ev @ 48 NONAME + _ZN4RUsbC2Ev @ 49 NONAME + _ZN4RUsbD1Ev @ 50 NONAME + _ZN4RUsbD2Ev @ 51 NONAME + _ZNK4RUsb7VersionEv @ 52 NONAME + diff -r 613028a7da24 -r eaaed528d5fd usbmgmt/usbmgr/usbman/client/group/BLD.INF --- a/usbmgmt/usbmgr/usbman/client/group/BLD.INF Thu Sep 02 22:23:37 2010 +0300 +++ b/usbmgmt/usbmgr/usbman/client/group/BLD.INF Fri Sep 17 08:40:15 2010 +0300 @@ -29,4 +29,5 @@ */ PRJ_TESTMMPFILES Usbman_over_dummyusbdi.mmp +usbman_over_dummyldd.mmp diff -r 613028a7da24 -r eaaed528d5fd usbmgmt/usbmgr/usbman/client/group/Usbman_over_dummyldd.mmp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/usbmgmt/usbmgr/usbman/client/group/Usbman_over_dummyldd.mmp Fri Sep 17 08:40:15 2010 +0300 @@ -0,0 +1,43 @@ +/* +* 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: +* usbman_over_dummyldd.mmp +* usbman_over_dummyldd.dll USB Client side RUsb Class +* +*/ + +/** + @file +*/ + +MACRO __DUMMY_LDD__ + +target usbman_over_dummyldd.dll +CAPABILITY All -Tcb +targettype dll + +uid 0x1000008d 0x101fe1da + +sourcepath ../SRC +source RUsb.cpp + +OS_LAYER_SYSTEMINCLUDE_SYMBIAN +userinclude ../../server/public +userinclude ../traces + +library euser.lib + +VENDORID 0x70000001 + +UNPAGED diff -r 613028a7da24 -r eaaed528d5fd usbmgmt/usbmgr/usbman/extensionplugin/BWINS/usbmanextensionplugindummyu.def --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/usbmgmt/usbmgr/usbman/extensionplugin/BWINS/usbmanextensionplugindummyu.def Fri Sep 17 08:40:15 2010 +0300 @@ -0,0 +1,8 @@ +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 &) + ?Observer@CUsbmanExtensionPlugin@@IAEAAVMUsbmanExtensionPluginObserver@@XZ @ 4 NONAME ; class MUsbmanExtensionPluginObserver & CUsbmanExtensionPlugin::Observer(void) + ?DevUsbcClient@MUsbmanExtensionPluginObserver@@QAEAAVRDevUsbcClient@@XZ @ 5 NONAME ; class RDevUsbcClient & MUsbmanExtensionPluginObserver::DevUsbcClient(void) + ??0CUsbmanExtensionPlugin@@IAE@AAVMUsbmanExtensionPluginObserver@@@Z @ 6 NONAME ; CUsbmanExtensionPlugin::CUsbmanExtensionPlugin(class MUsbmanExtensionPluginObserver &) + diff -r 613028a7da24 -r eaaed528d5fd usbmgmt/usbmgr/usbman/extensionplugin/EABI/usbmanextensionplugindummyu.def --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/usbmgmt/usbmgr/usbman/extensionplugin/EABI/usbmanextensionplugindummyu.def Fri Sep 17 08:40:15 2010 +0300 @@ -0,0 +1,12 @@ +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 + _ZTV22CUsbmanExtensionPlugin @ 10 NONAME + diff -r 613028a7da24 -r eaaed528d5fd usbmgmt/usbmgr/usbman/extensionplugin/group/UsbManExtensionPlugin.mmp --- a/usbmgmt/usbmgr/usbman/extensionplugin/group/UsbManExtensionPlugin.mmp Thu Sep 02 22:23:37 2010 +0300 +++ b/usbmgmt/usbmgr/usbman/extensionplugin/group/UsbManExtensionPlugin.mmp Fri Sep 17 08:40:15 2010 +0300 @@ -39,4 +39,5 @@ LIBRARY euser.lib LIBRARY ecom.lib + //macro __USB_LOG_TO_RDEBUG__ diff -r 613028a7da24 -r eaaed528d5fd usbmgmt/usbmgr/usbman/extensionplugin/group/UsbManExtensionPluginDummy.mmp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/usbmgmt/usbmgr/usbman/extensionplugin/group/UsbManExtensionPluginDummy.mmp Fri Sep 17 08:40:15 2010 +0300 @@ -0,0 +1,43 @@ +/* +* 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: +* usbmanextensionplugindummy.dll Base DLL for UsbMan extension plugins +* Plugins to UsbMan. +* +*/ + +/** + @file + @internalComponent +*/ + +TARGET usbmanextensionplugindummy.dll +TARGETTYPE dll +// UID2 = 0x1000008d for static interface DLLs. +// UID3 = unique for UsbMan system +UID 0x1000008d 0x101f9067 +VENDORID 0x70000001 +CAPABILITY CommDD NetworkControl NetworkServices LocalServices ProtServ + +SOURCEPATH ../src +SOURCE CUsbManExtensionPlugin.cpp +SOURCE MUsbManExtensionPluginObserver.cpp + +OS_LAYER_SYSTEMINCLUDE_SYMBIAN + +LIBRARY euser.lib +LIBRARY ecom.lib +MACRO __DUMMY_LDD__ + +//macro __USB_LOG_TO_RDEBUG__ diff -r 613028a7da24 -r eaaed528d5fd usbmgmt/usbmgr/usbman/extensionplugin/group/bld.inf --- a/usbmgmt/usbmgr/usbman/extensionplugin/group/bld.inf Thu Sep 02 22:23:37 2010 +0300 +++ b/usbmgmt/usbmgr/usbman/extensionplugin/group/bld.inf Fri Sep 17 08:40:15 2010 +0300 @@ -19,5 +19,11 @@ ../public/CUsbManExtensionPlugin.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(cusbmanextensionplugin.h) ../public/MUsbManExtensionPluginObserver.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(musbmanextensionpluginobserver.h) +PRJ_TESTEXPORTS +../inc/CUsbManExtensionPluginDummy.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(cusbmanextensionplugindummy.h) +../inc/MUsbManExtensionPluginObserverDummy.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(musbmanextensionpluginobserverdummy.h) + PRJ_MMPFILES UsbManExtensionPlugin.mmp +PRJ_TESTMMPFILES +UsbManExtensionPluginDummy.mmp \ No newline at end of file diff -r 613028a7da24 -r eaaed528d5fd usbmgmt/usbmgr/usbman/extensionplugin/inc/CUsbManExtensionPluginDummy.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/usbmgmt/usbmgr/usbman/extensionplugin/inc/CUsbManExtensionPluginDummy.h Fri Sep 17 08:40:15 2010 +0300 @@ -0,0 +1,87 @@ +/* +* 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: +* Abstract base class for usbman extension plugins. +* +*/ + +/** + @file + @publishedPartner + @released +*/ + +#ifndef USBMANEXTENSIONPLUGINDUMMY_H +#define USBMANEXTENSIONPLUGINDUMMY_H + +#include +#include "dummyusblddapi.h" + +class MUsbmanExtensionPluginObserver; +class MUsbDeviceNotify; + +/** +The UID of the Usbman Extension Plugin interface. +*/ +const TInt KUsbmanExtensionPluginInterfaceUid = 0x10208DD6; + +class CUsbmanExtensionPlugin : public CBase + { +public: + /** + Constructor. + @param aImplementationUid The UID of the implementation. + @param aObserver The observer of the plugin. + */ + IMPORT_C static CUsbmanExtensionPlugin* NewL(const TUid aImplementationUid, + MUsbmanExtensionPluginObserver& aObserver); + + /** Destructor. */ + IMPORT_C ~CUsbmanExtensionPlugin(); + +public: + /** + Called by Usbman server to get a pointer to an object which implements the + ExtensionPlugin interface with UID aUid. This is a mechanism for allowing future + change to the plugin API without breaking BC in existing (non-updated) + plugins. + */ + virtual TAny* GetInterface(TUid aUid) = 0; + +protected: + /** + Constructor. + @param aObserver The observer of the plugin. + */ + IMPORT_C CUsbmanExtensionPlugin(MUsbmanExtensionPluginObserver& aObserver); + +protected: + /** + Accessor for the observer. + @return The observer. + */ + IMPORT_C MUsbmanExtensionPluginObserver& Observer(); + +private: // owned + /** + UID set by ECOM when the instance is created. Used when the instance is + destroyed. + */ + TUid iInstanceId; + +private: // unowned + MUsbmanExtensionPluginObserver& iObserver; + }; + +#endif // USBMANEXTENSIONPLUGINDUMMY_H diff -r 613028a7da24 -r eaaed528d5fd usbmgmt/usbmgr/usbman/extensionplugin/inc/MUsbManExtensionPluginObserverDummy.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/usbmgmt/usbmgr/usbman/extensionplugin/inc/MUsbManExtensionPluginObserverDummy.h Fri Sep 17 08:40:15 2010 +0300 @@ -0,0 +1,61 @@ +/* +* 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: +* Interface presented by Usbman down to the concrete Usbman Extension Plugins. +* +*/ + +/** + @file + @publishedPartner + @released +*/ + +#ifndef USBMANEXTENSIONPLUGINOBSERVERDUMMY_H +#define USBMANEXTENSIONPLUGINOBSERVERDUMMY_H + +#include +#include "dummyusblddapi.h" + +class MUsbDeviceNotify; + +class MUsbmanExtensionPluginObserver + { + +public: + /** + Called by the plugin to get a RDevUsbcClient handle from its owner + @return RDevUsbcClient handle + */ + IMPORT_C RDevUsbcClient& DevUsbcClient(); + + /** + Called by the plugin to register for device/service state changes from its owner + @param aObserver The observer to register for state changes + */ + IMPORT_C void RegisterStateObserverL(MUsbDeviceNotify& aObserver); + +private: + /** + @see DevUsbcClient. + */ + virtual RDevUsbcClient& MuepoDoDevUsbcClient() = 0; + + /** + @see RegisterStateObserverL. + */ + virtual void MuepoDoRegisterStateObserverL(MUsbDeviceNotify& aObserver) = 0; + }; + +#endif // USBMANEXTENSIONPLUGINOBSERVERDUMMY_H diff -r 613028a7da24 -r eaaed528d5fd usbmgmt/usbmgr/usbman/extensionplugin/src/CUsbManExtensionPlugin.cpp --- a/usbmgmt/usbmgr/usbman/extensionplugin/src/CUsbManExtensionPlugin.cpp Thu Sep 02 22:23:37 2010 +0300 +++ b/usbmgmt/usbmgr/usbman/extensionplugin/src/CUsbManExtensionPlugin.cpp Fri Sep 17 08:40:15 2010 +0300 @@ -20,9 +20,13 @@ @file @internalComponent */ - +#ifndef __DUMMY_LDD__ #include "cusbmanextensionplugin.h" #include "musbmanextensionpluginobserver.h" +#else +#include +#include +#endif #include EXPORT_C CUsbmanExtensionPlugin::~CUsbmanExtensionPlugin() diff -r 613028a7da24 -r eaaed528d5fd usbmgmt/usbmgr/usbman/extensionplugin/src/MUsbManExtensionPluginObserver.cpp --- a/usbmgmt/usbmgr/usbman/extensionplugin/src/MUsbManExtensionPluginObserver.cpp Thu Sep 02 22:23:37 2010 +0300 +++ b/usbmgmt/usbmgr/usbman/extensionplugin/src/MUsbManExtensionPluginObserver.cpp Fri Sep 17 08:40:15 2010 +0300 @@ -21,8 +21,11 @@ @publishedPartner @released */ - +#ifndef __DUMMY_LDD__ #include "musbmanextensionpluginobserver.h" +#else +#include "musbmanextensionpluginobserverdummy.h" +#endif EXPORT_C RDevUsbcClient& MUsbmanExtensionPluginObserver::DevUsbcClient() { diff -r 613028a7da24 -r eaaed528d5fd usbmgmt/usbmgr/usbman/server/INC/CUsbDevice.h --- a/usbmgmt/usbmgr/usbman/server/INC/CUsbDevice.h Thu Sep 02 22:23:37 2010 +0300 +++ b/usbmgmt/usbmgr/usbman/server/INC/CUsbDevice.h Fri Sep 17 08:40:15 2010 +0300 @@ -30,10 +30,18 @@ #include #include #include +#ifndef __DUMMY_LDD__ #include +#else +#include "dummyusblddapi.h" +#endif #include #include +#ifndef __DUMMY_LDD__ #include +#else +#include +#endif diff -r 613028a7da24 -r eaaed528d5fd usbmgmt/usbmgr/usbman/server/INC/CUsbDummyClassControllerLdd.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/usbmgmt/usbmgr/usbman/server/INC/CUsbDummyClassControllerLdd.h Fri Sep 17 08:40:15 2010 +0300 @@ -0,0 +1,89 @@ +/** +* 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: +* Adheres to the UsbMan USB Class Controller API. +* +* +*/ + + + +/** + @file +*/ + +#ifndef CUSBDUMMYCLASSCONTROLLERLDD_H__ +#define CUSBDUMMYCLASSCONTROLLERLDD_H__ +#include +#include +#include + +NONSHARABLE_CLASS(CUsbDummyClassControllerLdd) : public CUsbClassControllerPlugIn + + { +public: + static CUsbDummyClassControllerLdd* NewL(MUsbClassControllerNotify& aOwner, TUint aIndex); + ~CUsbDummyClassControllerLdd(); + +private: + CUsbDummyClassControllerLdd(MUsbClassControllerNotify& aOwner, TUint aIndex); + CUsbDummyClassControllerLdd(MUsbClassControllerNotify& aOwner,TUint aIndex, TInt aPriority); + void ConstructL(); + +private: // from CActive + void RunL(); + void DoCancel(); + TInt RunError(TInt aError); + +private: // from CUsbClassControllerBase + void Start(TRequestStatus& aStatus); + void Stop(TRequestStatus& aStatus); + void GetDescriptorInfo(TUsbDescriptor& aDescriptorInfo) const; + +private: + enum TSynchronicity + { + EUndefined = 0, + ESynchronous, + EAsynchronous, + ENever, + }; + + NONSHARABLE_STRUCT( TBehaviour ) + /** + * Defines the behaviour for a startup or a shutdown. + */ + { + TSynchronicity iSynchronicity; + TTimeIntervalMicroSeconds32 iDelay; + TInt iErrorCode; + }; + +private: // utility + void GetConfig(); + void DoGetConfigL(); + +private: // unowned + TRequestStatus* iReportStatus; + +private: // owned + RTimer iTimer; + const TUint iIndex; + RProperty iProperty; + TBool iPropertyExist; + TBehaviour iStartupBehaviour; + TBehaviour iShutdownBehaviour; + }; + +#endif // CUSBDUMMYCLASSCONTROLLER_H__ diff -r 613028a7da24 -r eaaed528d5fd usbmgmt/usbmgr/usbman/server/INC/CUsbOtg.h --- a/usbmgmt/usbmgr/usbman/server/INC/CUsbOtg.h Thu Sep 02 22:23:37 2010 +0300 +++ b/usbmgmt/usbmgr/usbman/server/INC/CUsbOtg.h Fri Sep 17 08:40:15 2010 +0300 @@ -26,7 +26,12 @@ #ifndef __CUSBOTG_H__ #define __CUSBOTG_H__ +#ifndef __OVER_DUMMYUSBDI__ #include +#else +#include +#endif + #include #include #include diff -r 613028a7da24 -r eaaed528d5fd usbmgmt/usbmgr/usbman/server/INC/cusbotgwatcher.h --- a/usbmgmt/usbmgr/usbman/server/INC/cusbotgwatcher.h Thu Sep 02 22:23:37 2010 +0300 +++ b/usbmgmt/usbmgr/usbman/server/INC/cusbotgwatcher.h Fri Sep 17 08:40:15 2010 +0300 @@ -27,7 +27,13 @@ #define __CUSBOTGWATCHER_H__ #include + +#ifndef __OVER_DUMMYUSBDI__ #include +#else +#include +#endif + #include //Publish & Subscribe header class MUsbOtgObserver; diff -r 613028a7da24 -r eaaed528d5fd usbmgmt/usbmgr/usbman/server/INC/featurediscovery.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/usbmgmt/usbmgr/usbman/server/INC/featurediscovery.h Fri Sep 17 08:40:15 2010 +0300 @@ -0,0 +1,34 @@ +/** +* 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: +* . +* +* +*/ + +#ifndef FEATUREDISCOVERY_H_ +#define FEATUREDISCOVERY_H_ +class CFeatureDiscovery : public CBase + { + public: + + + inline static TBool IsFeatureSupportedL( TUid aFeature ) + { + return true; + } + + } ; + +#endif /* FEATUREDISCOVERY_H_ */ diff -r 613028a7da24 -r eaaed528d5fd usbmgmt/usbmgr/usbman/server/SRC/20031D6F.rss --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/usbmgmt/usbmgr/usbman/server/SRC/20031D6F.rss Fri Sep 17 08:40:15 2010 +0300 @@ -0,0 +1,41 @@ +/* +* Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: +* +*/ + +#include + +RESOURCE REGISTRY_INFO theInfo + { + dll_uid = 0x20031D6F; + interfaces = + { + INTERFACE_INFO + { + interface_uid = 0x101fbf21; + implementations = + { + IMPLEMENTATION_INFO + { + implementation_uid = 0x20031D70; + version_no = 1; + display_name = "DUMMY"; + default_data = ""; + opaque_data = ""; + } + }; + } + }; + } diff -r 613028a7da24 -r eaaed528d5fd usbmgmt/usbmgr/usbman/server/SRC/CUsbDevice.cpp --- a/usbmgmt/usbmgr/usbman/server/SRC/CUsbDevice.cpp Thu Sep 02 22:23:37 2010 +0300 +++ b/usbmgmt/usbmgr/usbman/server/SRC/CUsbDevice.cpp Fri Sep 17 08:40:15 2010 +0300 @@ -23,7 +23,6 @@ #include #include #include -#include #include #include #include @@ -33,6 +32,11 @@ #include #include #include +#ifndef __DUMMY_LDD__ +#include +#else +#include +#endif #include //Publish & Subscribe header #ifdef USE_DUMMY_CLASS_CONTROLLER #include "CUsbDummyClassController.h" @@ -182,9 +186,11 @@ #ifndef __OVER_DUMMYUSBDI__ #ifndef __WINS__ OstTrace0( TRACE_NORMAL, CUSBDEVICE_CONSTRUCTL, "CUsbDevice::ConstructL; About to load LDD" ); - +#ifndef __DUMMY_LDD__ TInt err = User::LoadLogicalDevice(KUsbLDDName); - +#else + TInt err = KErrNone; +#endif if (err != KErrNone && err != KErrAlreadyExists) { OstTrace1( TRACE_NORMAL, CUSBDEVICE_CONSTRUCTL_DUP10, "CUsbDevice::ConstructL;err=%d", err ); @@ -291,10 +297,12 @@ for (TInt i=0; iImplementationUid(), *this); CleanupStack::PushL(plugin); iExtensionPlugins.AppendL(plugin); // transfer ownership to iExtensionPlugins CleanupStack::Pop(plugin); +#endif OstTrace1( TRACE_NORMAL, CUSBDEVICE_INSTANTIATEEXTENSIONPLUGINSL_DUP1, "CUsbDevice::InstantiateExtensionPluginsL;Added extension plugin with UID 0x%08x", implementations[i]->ImplementationUid().iUid ); diff -r 613028a7da24 -r eaaed528d5fd usbmgmt/usbmgr/usbman/server/SRC/CUsbDummyClassController.cpp --- a/usbmgmt/usbmgr/usbman/server/SRC/CUsbDummyClassController.cpp Thu Sep 02 22:23:37 2010 +0300 +++ b/usbmgmt/usbmgr/usbman/server/SRC/CUsbDummyClassController.cpp Fri Sep 17 08:40:15 2010 +0300 @@ -269,7 +269,7 @@ // Always use dummy.ini. The entity setting up the test is responsible for // copying the correct file to c:\\dummy.ini. The first found - // by FindByDir will be used. TODO: enforce c:\\. + // by FindByDir will be used. TRAPD(err, DoGetConfigL()); if ( err != KErrNone ) { diff -r 613028a7da24 -r eaaed528d5fd usbmgmt/usbmgr/usbman/server/SRC/CUsbDummyClassControllerLdd.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/usbmgmt/usbmgr/usbman/server/SRC/CUsbDummyClassControllerLdd.cpp Fri Sep 17 08:40:15 2010 +0300 @@ -0,0 +1,260 @@ +/* +* 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 part of UsbMan USB Class Framework. +* +*/ + +/** + @file +*/ + +#include +#include +#include +#include "CUsbDummyClassControllerLdd.h" +#include "OstTraceDefinitions.h" +#ifdef OST_TRACE_COMPILER_IN_USE +#include "CUsbDummyClassControllerLddTraces.h" +#endif + + + +const TInt32 KDummyLDDTestServUid = 0x20031D88; +const TUint KCCErrorTestStepPublishedDeviceEventKey = 0x20031D6F; +// Panic codes +enum + { + // Bad value for the iSynchronicity member. + EDummyPanicBadSynchronicity = 0, + + // Used for environment errors we do not handle. + EDummyPanicUnhandledError = 1, + + // Used for bad iStatus and other state errors. + EDummyPanicBadState = 2, + + // Error reading ini file. + EDummyPanicBadIniFile = 3, + + // We already have our async request active. + EDummyPanicAlreadyActive = 4, + + // We already have a request outstanding from the device class. + EDummyPanicOutstandingRequestFromDevice = 5, + + // Attempt to call Start() when in illegal state + EDummyPanicBadApiCallStart = 6, + + // Attempt to call Stop() when in illegal state + EDummyPanicBadApiCallStop = 7, + }; + +const TInt KDummyClassPriority = 1; + + + +CUsbDummyClassControllerLdd* CUsbDummyClassControllerLdd::NewL( + MUsbClassControllerNotify& aOwner, + TUint aIndex) + +/** + * Constructs a CUsbDummyClassControllerLdd object. + * + * @param aOwner USB Device that owns and manages the class + * @param aIndex The index number of the instance + * @return Ownership of a new CUsbDummyClassControllerLdd object + */ + + { + CUsbDummyClassControllerLdd* self = new(ELeave) CUsbDummyClassControllerLdd(aOwner, aIndex); + CleanupStack::PushL(self); + self->ConstructL(); + CleanupStack::Pop(self); + return self; + } + + +CUsbDummyClassControllerLdd::CUsbDummyClassControllerLdd( + MUsbClassControllerNotify& aOwner, + TUint aIndex) +/** + * Constructor. + * + * @param aOwner USB Device that owns and manages the class + * @param aIndex The index number of the instance + */ + : CUsbClassControllerPlugIn(aOwner, KDummyClassPriority), + iIndex(aIndex) + { + iState = EUsbServiceIdle; // needs explicit initialisation as non-zero + iPropertyExist = EFalse; + } + +CUsbDummyClassControllerLdd::CUsbDummyClassControllerLdd( + MUsbClassControllerNotify& aOwner, + TUint aIndex, TInt aPriority) + +/** + * Constructor. + * + * @param aOwner USB Device that owns and manages the class + * @param aIndex The index number of the instance + * @param aPriority a startup priority for the class controller + */ + : CUsbClassControllerPlugIn(aOwner, aPriority), + iIndex(aIndex) + { + iState = EUsbServiceIdle; // needs explicit initialisation as non-zero + iPropertyExist = EFalse; + } + +void CUsbDummyClassControllerLdd::ConstructL() +/** + * Method to perform second phase construction. + */ + { + OstTraceFunctionEntry0( CUSBDUMMYCLASSCONTROLLERLDD_CONSTRUCTL_ENTRY ); + + OstTraceFunctionExit0( CUSBDUMMYCLASSCONTROLLERLDD_CONSTRUCTL_EXIT ); + } + +CUsbDummyClassControllerLdd::~CUsbDummyClassControllerLdd() +/** + * Destructor. + */ + { + OstTraceFunctionEntry0( CUSBDUMMYCLASSCONTROLLERLDD_CUSBDUMMYCLASSCONTROLLERLDD_ENTRY ); + + Cancel(); + iPropertyExist = EFalse; + OstTraceFunctionExit0( CUSBDUMMYCLASSCONTROLLERLDD_CUSBDUMMYCLASSCONTROLLERLDD_EXIT ); + } + +void CUsbDummyClassControllerLdd::DoGetConfigL() +/** + * Reads the config from the ini file. + */ + { + + + } + +void CUsbDummyClassControllerLdd::GetConfig() +/** + * Reads the config from the ini file. + * Note that this is assumed to succeed. Any failure will break the test and + * it's much cleaner to panic out of the test entirely rather than leave it to + * the user to figure out what's gone wrong. + */ + { + + + + } + +void CUsbDummyClassControllerLdd::Start(TRequestStatus& aStatus) +/** + * Called by UsbMan to start this class. + * + * @param aStatus Will be completed with success or failure. + */ + { + OstTraceFunctionEntry0( CUSBDUMMYCLASSCONTROLLERLDD_START_ENTRY ); + + CUsbClassControllerIterator *iterator = NULL; + TRAPD(ret,iterator = Owner().UccnGetClassControllerIteratorL()); + if(ret == KErrNone) + { + delete iterator; + } + TRequestStatus* tmp = &aStatus; + User::RequestComplete(tmp, KErrNone); + if(!iPropertyExist) + { + TInt err = iProperty.Attach(TUid::Uid(KDummyLDDTestServUid), + KCCErrorTestStepPublishedDeviceEventKey); + + + iProperty.Subscribe(iStatus); + SetActive(); + iPropertyExist = ETrue; + } + + OstTraceFunctionExit0( CUSBDUMMYCLASSCONTROLLERLDD_START_EXIT ); + } + +void CUsbDummyClassControllerLdd::Stop(TRequestStatus& aStatus) +/** + * Called by UsbMan to stop this class. + * + * @param aStatus Will be completed with success or failure. + */ + { + OstTraceFunctionEntry0( CUSBDUMMYCLASSCONTROLLERLDD_STOP_ENTRY ); + + TRequestStatus* tmp = &aStatus; + User::RequestComplete(tmp, KErrNone); + + OstTraceFunctionExit0( CUSBDUMMYCLASSCONTROLLERLDD_STOP_EXIT ); + } + +void CUsbDummyClassControllerLdd::GetDescriptorInfo(TUsbDescriptor& aDescriptorInfo) const +/** + * Returns information about the interfaces supported by this class. + * + * @param aDescriptorInfo Will be filled in with interface information. + */ + { + aDescriptorInfo.iNumInterfaces = 0; + aDescriptorInfo.iLength = 0; + } + +void CUsbDummyClassControllerLdd::RunL() +/** + * Standard active object RunL. + */ + { + OstTraceFunctionEntry0( CUSBDUMMYCLASSCONTROLLERLDD_RUNL_ENTRY ); + TInt num; + iProperty.Get(num); + if(num < 0) + User::Leave(num); + iProperty.Subscribe(iStatus); + SetActive(); + OstTraceFunctionExit0( CUSBDUMMYCLASSCONTROLLERLDD_RUNL_EXIT ); + } + +void CUsbDummyClassControllerLdd::DoCancel() +/** + * Standard active object cancellation function. + */ + { + iProperty.Cancel(); + } + +TInt CUsbDummyClassControllerLdd::RunError(TInt aError) +/** + * Standard active object error-handling function. + * + * Should return KErrNone to avoid an active scheduler panic. This function + * should never be called as there is another mechanism for catching errors. + */ + { + Owner().UccnError(KErrNone); + return KErrNone; + } + +// +// End of file diff -r 613028a7da24 -r eaaed528d5fd usbmgmt/usbmgr/usbman/server/SRC/CUsbDummyClassImpCollection.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/usbmgmt/usbmgr/usbman/server/SRC/CUsbDummyClassImpCollection.cpp Fri Sep 17 08:40:15 2010 +0300 @@ -0,0 +1,34 @@ +/* +* 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: +* +*/ + +#include +#include +#include +#include +#include "CUsbDummyClassControllerLdd.h" +// Define the private interface UIDs +const TImplementationProxy UsbCCImplementationTable[] = + { + IMPLEMENTATION_PROXY_ENTRY(0x20031D70, CUsbDummyClassControllerLdd::NewL), + }; + +EXPORT_C const TImplementationProxy* ImplementationGroupProxy(TInt& aTableCount) + { + aTableCount = sizeof(UsbCCImplementationTable) / sizeof(TImplementationProxy); + + return UsbCCImplementationTable; + } diff -r 613028a7da24 -r eaaed528d5fd usbmgmt/usbmgr/usbman/server/SRC/CUsbOtg.cpp --- a/usbmgmt/usbmgr/usbman/server/SRC/CUsbOtg.cpp Thu Sep 02 22:23:37 2010 +0300 +++ b/usbmgmt/usbmgr/usbman/server/SRC/CUsbOtg.cpp Fri Sep 17 08:40:15 2010 +0300 @@ -34,8 +34,10 @@ #endif +#ifndef __OVER_DUMMYUSBDI__ //Name used in call to User::LoadLogicalDevice/User::FreeLogicalDevice _LIT(KUsbOtgLDDName,"otgdi"); +#endif @@ -145,6 +147,7 @@ } +#ifndef __OVER_DUMMYUSBDI__ OstTrace0( TRACE_NORMAL, CUSBOTG_CUSBOTG_DUP13, "CUsbOtg::~CUsbOtg; Freeing logical device" ); TInt err = User::FreeLogicalDevice(KUsbOtgLDDName); @@ -155,6 +158,7 @@ OstTrace1( TRACE_NORMAL, CUSBOTG_CUSBOTG_DUP14, "CUsbOtg::~CUsbOtg; User::FreeLogicalDevice returned %d", err ); } +#endif iCriticalSection.Close(); OstTraceFunctionExit0( CUSBOTG_CUSBOTG_DES_EXIT ); @@ -179,6 +183,7 @@ { OstTraceFunctionEntry0( CUSBOTG_CONSTRUCTL_ENTRY ); +#ifndef __OVER_DUMMYUSBDI__ OstTrace0( TRACE_NORMAL, CUSBOTG_CONSTRUCTL, "CUsbOtg::ConstructL; About to open LDD" ); iLastError = User::LoadLogicalDevice(KUsbOtgLDDName); @@ -190,6 +195,8 @@ User::Leave(iLastError); } } +#endif + OstTrace0( TRACE_NORMAL, CUSBOTG_CONSTRUCTL_DUP3, "CUsbOtg::ConstructL; About to open RUsbOtgDriver" ); iLastError = iOtgDriver.Open(); diff -r 613028a7da24 -r eaaed528d5fd usbmgmt/usbmgr/usbman/server/SRC/CUsbServer.cpp --- a/usbmgmt/usbmgr/usbman/server/SRC/CUsbServer.cpp Thu Sep 02 22:23:37 2010 +0300 +++ b/usbmgmt/usbmgr/usbman/server/SRC/CUsbServer.cpp Fri Sep 17 08:40:15 2010 +0300 @@ -80,7 +80,6 @@ #ifdef SYMBIAN_ENABLE_USB_OTG_HOST_PRIV delete iUsbHost; -#ifndef __OVER_DUMMYUSBDI__ // Check that this is A-Device OstTrace0( TRACE_NORMAL, CUSBSERVER_CUSBSERVER, "CUsbServer::~CUsbServer; Checking Id-Pin state..." ); TInt value = 0; @@ -126,11 +125,9 @@ { OstTraceExt2( TRACE_NORMAL, CUSBSERVER_CUSBSERVER_DUP7, "CUsbServer::~CUsbServer;No Id-Pin is found or an error occured: err = %d, value = %d", err, value ); } - + delete iUsbOtg; -#endif #endif // SYMBIAN_ENABLE_USB_OTG_HOST_PRIV - OstTraceFunctionExit0( CUSBSERVER_CUSBSERVER_DES_EXIT ); } @@ -162,10 +159,8 @@ iShutdownTimer->ConstructL(); #ifdef SYMBIAN_ENABLE_USB_OTG_HOST_PRIV -#ifndef __OVER_DUMMYUSBDI__ iUsbOtg = CUsbOtg::NewL(); iUsbOtg->StartL(); -#endif #endif // SYMBIAN_ENABLE_USB_OTG_HOST_PRIV iUsbDevice = CUsbDevice::NewL(*this); diff -r 613028a7da24 -r eaaed528d5fd usbmgmt/usbmgr/usbman/server/SRC/CUsbSession.cpp --- a/usbmgmt/usbmgr/usbman/server/SRC/CUsbSession.cpp Thu Sep 02 22:23:37 2010 +0300 +++ b/usbmgmt/usbmgr/usbman/server/SRC/CUsbSession.cpp Fri Sep 17 08:40:15 2010 +0300 @@ -95,10 +95,8 @@ iUsbServer->Device().DeRegisterObserver(*this); #ifdef SYMBIAN_ENABLE_USB_OTG_HOST_PRIV -#ifndef __OVER_DUMMYUSBDI__ OstTrace1( TRACE_NORMAL, CUSBSESSION_CUSBSESSION_DUP1, "CUsbSession::~CUsbSession;About to Otg().DeRegisterObserver(%08x)", this ); iUsbServer->Otg().DeRegisterObserver(*this); -#endif OstTrace1( TRACE_NORMAL, CUSBSESSION_CUSBSESSION_DUP2, "CUsbSession::~CUsbSession;About to Host().DeRegisterObserver(%08x)", this ); iUsbServer->Host().DeregisterObserver(*this); @@ -147,10 +145,8 @@ iUsbServer->Device().RegisterObserverL(*this); #ifdef SYMBIAN_ENABLE_USB_OTG_HOST_PRIV -#ifndef __OVER_DUMMYUSBDI__ OstTrace0( TRACE_NORMAL, CUSBSESSION_CREATEL_DUP1, "CUsbSession::CreateL;Registering OTG Observer" ); iUsbServer->Otg().RegisterObserverL(*this); -#endif OstTrace0( TRACE_NORMAL, CUSBSESSION_CREATEL_DUP2, "CUsbSession::CreateL;Registering HOST Observer" ); iUsbServer->Host().RegisterObserverL(*this); @@ -582,7 +578,6 @@ case EUsbCancelMessageObserver: ret = DeRegisterMsgObserver(); break; -#ifndef __OVER_DUMMYUSBDI__ case EUsbBusRequest: ret = BusRequest(); break; @@ -595,14 +590,6 @@ case EUsbBusDrop: ret = BusDrop(); break; -#else - case EUsbBusRequest: - case EUsbBusRespondSrp: - case EUsbBusClearError: - case EUsbBusDrop: - ret = KErrNone; - break; -#endif case EUsbRegisterHostObserver: ret = RegisterHostObserver(aMessage, complete); break; diff -r 613028a7da24 -r eaaed528d5fd usbmgmt/usbmgr/usbman/server/SRC/usbmancenrepmanager.cpp --- a/usbmgmt/usbmgr/usbman/server/SRC/usbmancenrepmanager.cpp Thu Sep 02 22:23:37 2010 +0300 +++ b/usbmgmt/usbmgr/usbman/server/SRC/usbmancenrepmanager.cpp Fri Sep 17 08:40:15 2010 +0300 @@ -19,7 +19,11 @@ #include #ifdef SYMBIAN_FEATURE_MANAGER #include - #include + #ifndef __DUMMY_LDD__ + #include + #else + #include "featurediscovery.h" + #endif #endif #include "usbmanprivatecrkeys.h" #include "UsbSettings.h" diff -r 613028a7da24 -r eaaed528d5fd usbmgmt/usbmgr/usbman/server/group/BLD.INF --- a/usbmgmt/usbmgr/usbman/server/group/BLD.INF Thu Sep 02 22:23:37 2010 +0300 +++ b/usbmgmt/usbmgr/usbman/server/group/BLD.INF Fri Sep 17 08:40:15 2010 +0300 @@ -62,6 +62,8 @@ // Special USBSVR with no class controllers except 3 instances of the dummy // class controller, for GT171 tests. t_Usbman_dummyCC.mmp +usbsvr_dummyldd.mmp +UsbDummyClassControllerLdd.mmp #if defined(SYMBIAN_ENABLE_USB_OTG_HOST) diff -r 613028a7da24 -r eaaed528d5fd usbmgmt/usbmgr/usbman/server/group/UsbDummyClassControllerLdd.mmp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/usbmgmt/usbmgr/usbman/server/group/UsbDummyClassControllerLdd.mmp Fri Sep 17 08:40:15 2010 +0300 @@ -0,0 +1,53 @@ +/* +* Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: +* usbclassconstroller.mmp +* USBClassController.dll USB Class Controller Plugin Framework +* +*/ + +/** + @file +*/ + + +target msdummyclasscontroller.dll //Recommended unpaged + +targettype plugin +CAPABILITY CommDD NetworkControl NetworkServices LocalServices ProtServ +UID 0x10009d8d 0x20031D6F +VENDORID 0x70000001 + +userinclude ../inc +userinclude ../../../inifile/inc +userinclude ../traces_UsbDummyClassControllerLdd + +OS_LAYER_SYSTEMINCLUDE_SYMBIAN + +sourcepath ../SRC +source CUsbDummyClassControllerLdd.cpp +source CUsbDummyClassImpCollection.cpp + +start resource 20031D6F.rss +target msdummyclasscontroller.rsc +end + + +library euser.lib +LIBRARY usbclasscontroller.lib +LIBRARY efsrv.lib +LIBRARY bafl.lib + + +VENDORID 0x70000001 diff -r 613028a7da24 -r eaaed528d5fd usbmgmt/usbmgr/usbman/server/group/t_Usbman_dummyCC.mmp --- a/usbmgmt/usbmgr/usbman/server/group/t_Usbman_dummyCC.mmp Thu Sep 02 22:23:37 2010 +0300 +++ b/usbmgmt/usbmgr/usbman/server/group/t_Usbman_dummyCC.mmp Fri Sep 17 08:40:15 2010 +0300 @@ -1,5 +1,5 @@ /* -* Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies). +* 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" @@ -17,19 +17,50 @@ * is used for GT171 automated tests. * */ +target t_usbman_dummycc.exe +CAPABILITY CommDD NetworkControl NetworkServices LocalServices ProtServ -target t_usbman_dummycc.exe +targettype exe + +uid 0x0 0x101fe1db +VENDORID 0x70000001 -#include "usbsvrbase.mmp" -userinclude ../../../inifile/inc +userinclude ../INC +userinclude ../public +userinclude ../../../host/fdf/production/client/public +userinclude ../../../inifile/inc +userinclude ../traces_t_Usbman_dummyCC +OS_LAYER_SYSTEMINCLUDE_SYMBIAN sourcepath ../SRC +source UsbSvr.cpp +source CUsbServer.cpp +source CUsbSession.cpp +source CUsbScheduler.cpp +source CUsbDevice.cpp +source CUsbDeviceStateWatcher.cpp +source UsbUtils.cpp +source CPersonality.cpp +source usbmancenrepmanager.cpp source CUsbDummyClassController.cpp sourcepath ../../../inifile/src source inifile.cpp +library euser.lib +library usbclasscontroller.lib +library ecom.lib +library efsrv.lib +library bafl.lib +library usbmanextensionplugin.lib +library sysutil.lib +library centralrepository.lib + +#ifdef SYMBIAN_FEATURE_MANAGER +library featdiscovery.lib +#endif + // This is the crucial difference between this and usbsvr.mmp. MACRO USE_DUMMY_CLASS_CONTROLLER diff -r 613028a7da24 -r eaaed528d5fd usbmgmt/usbmgr/usbman/server/group/usbsvr_dummyldd.mmp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/usbmgmt/usbmgr/usbman/server/group/usbsvr_dummyldd.mmp Fri Sep 17 08:40:15 2010 +0300 @@ -0,0 +1,65 @@ +/* +* 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: +* usbsvr_dummyldd.mmp +* usbsvr_over_dummyldd.exe USB server with USB Host and OTG support +* +*/ + +/** + @file +*/ + + + +MACRO __DUMMY_LDD__ +CAPABILITY CommDD NetworkControl NetworkServices LocalServices ProtServ +target usbsvr_over_dummyldd.exe +targettype exe + +UID 0 0x101fe1db + +sourcepath ../SRC +source UsbSvr.cpp +source CUsbServer.cpp +source CUsbSession.cpp +source CUsbScheduler.cpp +source CUsbDevice.cpp +source CUsbDeviceStateWatcher.cpp +source UsbUtils.cpp +source CPersonality.cpp +source usbmancenrepmanager.cpp + +userinclude ../INC +userinclude ../public +userinclude ../../../host/fdf/production/client/public +userinclude ../traces +OS_LAYER_SYSTEMINCLUDE_SYMBIAN + +library euser.lib +library usbclasscontroller.lib +library ecom.lib +library efsrv.lib +library bafl.lib +library usbmanextensionplugindummy.lib +library sysutil.lib +library centralrepository.lib + +#ifdef SYMBIAN_FEATURE_MANAGER +library featdiscovery.lib +#endif +library dummyusblddapi.lib +library usbman_over_dummyldd.lib + +UNPAGED diff -r 613028a7da24 -r eaaed528d5fd usbmgmt/usbmgr/usbman/server/group/usbsvrotg_dummyusbdi.mmp --- a/usbmgmt/usbmgr/usbman/server/group/usbsvrotg_dummyusbdi.mmp Thu Sep 02 22:23:37 2010 +0300 +++ b/usbmgmt/usbmgr/usbman/server/group/usbsvrotg_dummyusbdi.mmp Fri Sep 17 08:40:15 2010 +0300 @@ -37,9 +37,8 @@ source cusbotgwatcher.cpp source cusbhost.cpp source cusbhostwatcher.cpp -//source CUsbDummyClassController.cpp -//source INIFILE.CPP +library dummyotgdi.lib library usbhoststack_over_dummyusbdi.lib UNPAGED diff -r 613028a7da24 -r eaaed528d5fd usbmgmt/usbmgr/usbman/server/public/UsbClassUids.h --- a/usbmgmt/usbmgr/usbman/server/public/UsbClassUids.h Thu Sep 02 22:23:37 2010 +0300 +++ b/usbmgmt/usbmgr/usbman/server/public/UsbClassUids.h Fri Sep 17 08:40:15 2010 +0300 @@ -41,4 +41,5 @@ const TUid KUSBMSUid={0x10204bbc}; +const TUid KUSBDUMMYid={0x20031D70} #endif // USBCLASSUIDS_H diff -r 613028a7da24 -r eaaed528d5fd usbmgmt/usbmgr/usbman/server/public/rusb.h --- a/usbmgmt/usbmgr/usbman/server/public/rusb.h Thu Sep 02 22:23:37 2010 +0300 +++ b/usbmgmt/usbmgr/usbman/server/public/rusb.h Fri Sep 17 08:40:15 2010 +0300 @@ -35,10 +35,14 @@ const TInt KUsbMaxSupportedPersonalities = 64; // Max number of supported personalities -#ifndef __OVER_DUMMYUSBDI__ +#ifdef __OVER_DUMMYUSBDI__ +_LIT(KUsbServerName, "!usbman_over_dummyusbdi"); +#else +#ifdef __DUMMY_LDD__ +_LIT(KUsbServerName, "!usbman_over_dummyldd"); +#else _LIT(KUsbServerName, "!usbman"); -#else -_LIT(KUsbServerName, "!usbman_over_dummyusbdi"); +#endif #endif enum TUsbMessages @@ -109,11 +113,16 @@ #else -#ifndef __OVER_DUMMYUSBDI__ -_LIT(KUsbmanImg, "z:\\system\\programs\\usbsvr.exe"); +#ifdef __OVER_DUMMYUSBDI__ +_LIT(KUsbmanImg, "z:\\system\\programs\\usbsvr_over_dummyusbdi.exe"); #else -_LIT(KUsbmanImg, "z:\\system\\programs\\usbsvr_over_dummyusbdi.exe"); +#ifdef __DUMMY_LDD__ +_LIT(KUsbmanImg, "z:\\system\\programs\\usbsvr_over_dummyldd.exe"); +#else +_LIT(KUsbmanImg, "z:\\system\\programs\\usbsvr.exe"); #endif +#endif + #endif //__USBMAN_NO_PROCESSES__ diff -r 613028a7da24 -r eaaed528d5fd usbmgmt/usbmgr/usbman/server/traces_UsbDummyClassControllerLdd/OstTraceDefinitions.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/usbmgmt/usbmgr/usbman/server/traces_UsbDummyClassControllerLdd/OstTraceDefinitions.h Fri Sep 17 08:40:15 2010 +0300 @@ -0,0 +1,24 @@ +/* +* 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: +* +*/ +#ifndef __OSTTRACEDEFINITIONS_H__ +#define __OSTTRACEDEFINITIONS_H__ +// OST_TRACE_COMPILER_IN_USE flag has been added by Trace Compiler +// REMOVE BEFORE CHECK-IN TO VERSION CONTROL +// #define OST_TRACE_COMPILER_IN_USE +#include +#endif diff -r 613028a7da24 -r eaaed528d5fd usbmgmt/usbmgr/usbman/server/traces_UsbDummyClassControllerLdd/fixed_id.definitions --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/usbmgmt/usbmgr/usbman/server/traces_UsbDummyClassControllerLdd/fixed_id.definitions Fri Sep 17 08:40:15 2010 +0300 @@ -0,0 +1,29 @@ +## +# 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_FLOW=0x8a +[TRACE]TRACE_FLOW[0x8A]_CUSBDUMMYCLASSCONTROLLERLDD_CONSTRUCTL_ENTRY=0x1 +[TRACE]TRACE_FLOW[0x8A]_CUSBDUMMYCLASSCONTROLLERLDD_CONSTRUCTL_EXIT=0x2 +[TRACE]TRACE_FLOW[0x8A]_CUSBDUMMYCLASSCONTROLLERLDD_CUSBDUMMYCLASSCONTROLLERLDD_ENTRY=0x3 +[TRACE]TRACE_FLOW[0x8A]_CUSBDUMMYCLASSCONTROLLERLDD_CUSBDUMMYCLASSCONTROLLERLDD_EXIT=0x4 +[TRACE]TRACE_FLOW[0x8A]_CUSBDUMMYCLASSCONTROLLERLDD_RUNL_ENTRY=0x9 +[TRACE]TRACE_FLOW[0x8A]_CUSBDUMMYCLASSCONTROLLERLDD_RUNL_EXIT=0xa +[TRACE]TRACE_FLOW[0x8A]_CUSBDUMMYCLASSCONTROLLERLDD_START_ENTRY=0x5 +[TRACE]TRACE_FLOW[0x8A]_CUSBDUMMYCLASSCONTROLLERLDD_START_EXIT=0x6 +[TRACE]TRACE_FLOW[0x8A]_CUSBDUMMYCLASSCONTROLLERLDD_STOP_ENTRY=0x7 +[TRACE]TRACE_FLOW[0x8A]_CUSBDUMMYCLASSCONTROLLERLDD_STOP_EXIT=0x8 diff -r 613028a7da24 -r eaaed528d5fd usbmgmt/usbmgr/usbman/server/traces_t_Usbman_dummyCC/OstTraceDefinitions.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/usbmgmt/usbmgr/usbman/server/traces_t_Usbman_dummyCC/OstTraceDefinitions.h Fri Sep 17 08:40:15 2010 +0300 @@ -0,0 +1,24 @@ +/* +* 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: +* +*/ +#ifndef __OSTTRACEDEFINITIONS_H__ +#define __OSTTRACEDEFINITIONS_H__ +// OST_TRACE_COMPILER_IN_USE flag has been added by Trace Compiler +// REMOVE BEFORE CHECK-IN TO VERSION CONTROL +//#define OST_TRACE_COMPILER_IN_USE +#include +#endif diff -r 613028a7da24 -r eaaed528d5fd usbmgmt/usbmgr/usbman/server/traces_t_Usbman_dummyCC/fixed_id.definitions --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/usbmgmt/usbmgr/usbman/server/traces_t_Usbman_dummyCC/fixed_id.definitions Fri Sep 17 08:40:15 2010 +0300 @@ -0,0 +1,529 @@ +## +# 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_DUMP=0x89 +[GROUP]TRACE_FATAL=0x81 +[GROUP]TRACE_FLOW=0x8a +[GROUP]TRACE_NORMAL=0x86 +[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]_CUSBDUMMYCLASSCONTROLLER_CONSTRUCTL=0x7 +[TRACE]TRACE_FATAL[0x81]_CUSBDUMMYCLASSCONTROLLER_DOCANCEL=0x1a +[TRACE]TRACE_FATAL[0x81]_CUSBDUMMYCLASSCONTROLLER_DOCANCEL_DUP1=0x1b +[TRACE]TRACE_FATAL[0x81]_CUSBDUMMYCLASSCONTROLLER_DOCANCEL_DUP2=0x1c +[TRACE]TRACE_FATAL[0x81]_CUSBDUMMYCLASSCONTROLLER_DOCANCEL_DUP3=0x1d +[TRACE]TRACE_FATAL[0x81]_CUSBDUMMYCLASSCONTROLLER_DOCANCEL_DUP4=0x1e +[TRACE]TRACE_FATAL[0x81]_CUSBDUMMYCLASSCONTROLLER_GETBEHAVIOUR_DUP2=0x8 +[TRACE]TRACE_FATAL[0x81]_CUSBDUMMYCLASSCONTROLLER_GETBEHAVIOUR_DUP4=0x9 +[TRACE]TRACE_FATAL[0x81]_CUSBDUMMYCLASSCONTROLLER_GETBEHAVIOUR_DUP6=0xa +[TRACE]TRACE_FATAL[0x81]_CUSBDUMMYCLASSCONTROLLER_GETBEHAVIOUR_DUP8=0xb +[TRACE]TRACE_FATAL[0x81]_CUSBDUMMYCLASSCONTROLLER_GETCONFIG_DUP7=0xc +[TRACE]TRACE_FATAL[0x81]_CUSBDUMMYCLASSCONTROLLER_RUNERROR=0x1f +[TRACE]TRACE_FATAL[0x81]_CUSBDUMMYCLASSCONTROLLER_RUNL_DUP1=0x15 +[TRACE]TRACE_FATAL[0x81]_CUSBDUMMYCLASSCONTROLLER_RUNL_DUP2=0x16 +[TRACE]TRACE_FATAL[0x81]_CUSBDUMMYCLASSCONTROLLER_RUNL_DUP3=0x17 +[TRACE]TRACE_FATAL[0x81]_CUSBDUMMYCLASSCONTROLLER_RUNL_DUP4=0x18 +[TRACE]TRACE_FATAL[0x81]_CUSBDUMMYCLASSCONTROLLER_RUNL_DUP5=0x19 +[TRACE]TRACE_FATAL[0x81]_CUSBDUMMYCLASSCONTROLLER_START=0xd +[TRACE]TRACE_FATAL[0x81]_CUSBDUMMYCLASSCONTROLLER_START_DUP1=0xe +[TRACE]TRACE_FATAL[0x81]_CUSBDUMMYCLASSCONTROLLER_START_DUP2=0xf +[TRACE]TRACE_FATAL[0x81]_CUSBDUMMYCLASSCONTROLLER_START_DUP3=0x10 +[TRACE]TRACE_FATAL[0x81]_CUSBDUMMYCLASSCONTROLLER_STOP=0x11 +[TRACE]TRACE_FATAL[0x81]_CUSBDUMMYCLASSCONTROLLER_STOP_DUP1=0x12 +[TRACE]TRACE_FATAL[0x81]_CUSBDUMMYCLASSCONTROLLER_STOP_DUP2=0x13 +[TRACE]TRACE_FATAL[0x81]_CUSBDUMMYCLASSCONTROLLER_STOP_DUP3=0x14 +[TRACE]TRACE_FATAL[0x81]_CUSBMANCENREPMANAGER_ISFEATURESUPPORTEDL=0x2a +[TRACE]TRACE_FATAL[0x81]_CUSBMANCENREPMANAGER_READCONFIGURATIONSFORPERSONALITYL=0x26 +[TRACE]TRACE_FATAL[0x81]_CUSBMANCENREPMANAGER_READCONFIGURATIONSFORPERSONALITYL_DUP4=0x27 +[TRACE]TRACE_FATAL[0x81]_CUSBMANCENREPMANAGER_READCONFIGURATIONSFORPERSONALITYL_DUP5=0x28 +[TRACE]TRACE_FATAL[0x81]_CUSBMANCENREPMANAGER_READDEVICECONFIGURATIONL_DUP5=0x23 +[TRACE]TRACE_FATAL[0x81]_CUSBMANCENREPMANAGER_READPERSONALITIESL=0x24 +[TRACE]TRACE_FATAL[0x81]_CUSBMANCENREPMANAGER_READPERSONALITIESL_DUP5=0x25 +[TRACE]TRACE_FATAL[0x81]_CUSBSERVER_DECREMENTSESSIONCOUNT_DUP1=0x21 +[TRACE]TRACE_FATAL[0x81]_CUSBSERVER_INCREMENTSESSIONCOUNT_DUP1=0x20 +[TRACE]TRACE_FATAL[0x81]_CUSBSERVER_LAUNCHSHUTDOWNTIMERIFNOSESSIONS=0x22 +[TRACE]TRACE_FATAL[0x81]_DUP1_CUSBMANCENREPMANAGER_ISCLASSCONFIGURABLEL_DUP1=0x29 +[TRACE]TRACE_FLOW[0x8A]_CINIFILE_CINIFILE_CONS_ENTRY=0x1 +[TRACE]TRACE_FLOW[0x8A]_CINIFILE_NEWL_TDESC_ENTRY=0x2 +[TRACE]TRACE_FLOW[0x8A]_CINIFILE_NEWL_TDESC_EXIT=0x3 +[TRACE]TRACE_FLOW[0x8A]_CINIFILE_NEWL_TDESC_TDESC_ENTRY=0x4 +[TRACE]TRACE_FLOW[0x8A]_CINIFILE_NEWL_TDESC_TDESC_EXIT=0x5 +[TRACE]TRACE_FLOW[0x8A]_CPERSONALITYCONFIGURATIONS_CPERSONALITYCONFIGURATIONS_DES_ENTRY=0xc +[TRACE]TRACE_FLOW[0x8A]_CPERSONALITYCONFIGURATIONS_CPERSONALITYCONFIGURATIONS_DES_EXIT=0xd +[TRACE]TRACE_FLOW[0x8A]_CPERSONALITY_CONSTRUCTL_ENTRY=0x8 +[TRACE]TRACE_FLOW[0x8A]_CPERSONALITY_CONSTRUCTL_EXIT=0x9 +[TRACE]TRACE_FLOW[0x8A]_CPERSONALITY_CPERSONALITY_DES_ENTRY=0xa +[TRACE]TRACE_FLOW[0x8A]_CPERSONALITY_CPERSONALITY_DES_EXIT=0xb +[TRACE]TRACE_FLOW[0x8A]_CPERSONALITY_NEWL_ENTRY=0x6 +[TRACE]TRACE_FLOW[0x8A]_CPERSONALITY_NEWL_EXIT=0x7 +[TRACE]TRACE_FLOW[0x8A]_CUSBDEVICESTATEWATCHER_DOCANCEL_ENTRY=0x51 +[TRACE]TRACE_FLOW[0x8A]_CUSBDEVICESTATEWATCHER_DOCANCEL_EXIT=0x52 +[TRACE]TRACE_FLOW[0x8A]_CUSBDEVICESTATEWATCHER_NEWL_ENTRY=0x4f +[TRACE]TRACE_FLOW[0x8A]_CUSBDEVICESTATEWATCHER_NEWL_EXIT=0x50 +[TRACE]TRACE_FLOW[0x8A]_CUSBDEVICESTATEWATCHER_START_ENTRY=0x53 +[TRACE]TRACE_FLOW[0x8A]_CUSBDEVICESTATEWATCHER_START_EXIT=0x54 +[TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_ADDCLASSCONTROLLERL_ENTRY=0x19 +[TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_ADDCLASSCONTROLLERL_EXIT=0x1a +[TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_BUSENUMERATIONCOMPLETED_ENTRY=0x27 +[TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_BUSENUMERATIONCOMPLETED_EXIT=0x28 +[TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_CONSTRUCTL_ENTRY=0x12 +[TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_CONSTRUCTL_EXIT=0x13 +[TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_CONVERTUIDSL_ENTRY=0x44 +[TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_CONVERTUIDSL_EXIT=0x45 +[TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_CREATECLASSCONTROLLERSL_ENTRY=0x4a +[TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_CURRENTPERSONALITYID_ENTRY=0x3b +[TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_CUSBDEVICE_DES_ENTRY=0x10 +[TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_CUSBDEVICE_DES_EXIT=0x11 +[TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_DEREGISTEROBSERVER_ENTRY=0x1d +[TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_DEREGISTEROBSERVER_EXIT=0x1e +[TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_DOCANCEL_ENTRY=0x31 +[TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_DOCANCEL_EXIT=0x32 +[TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_ENUMERATECLASSCONTROLLERSL_ENTRY=0x17 +[TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_ENUMERATECLASSCONTROLLERSL_EXIT=0x18 +[TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_GETPERSONALITY_ENTRY=0x3d +[TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_GETPERSONALITY_EXIT=0x3e +[TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_GETPERSONALITY_EXIT_DUP1=0x3f +[TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_INSTANTIATEEXTENSIONPLUGINSL=0x15 +[TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_INSTANTIATEEXTENSIONPLUGINSL_ENTRY=0x14 +[TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_INSTANTIATEEXTENSIONPLUGINSL_EXIT=0x16 +[TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_LOADFALLBACKCLASSCONTROLLERSL_ENTRY=0x4d +[TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_LOADFALLBACKCLASSCONTROLLERSL_EXIT=0x4e +[TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_NEWL_ENTRY=0xe +[TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_NEWL_EXIT=0xf +[TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_PERSONALITIES_ENTRY=0x3c +[TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_POWERUPANDCONNECT_ENTRY=0x2d +[TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_POWERUPANDCONNECT_EXIT=0x2e +[TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_READPERSONALITIESL_ENTRY=0x46 +[TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_READPERSONALITIESL_EXIT=0x47 +[TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_REGISTEROBSERVERL_ENTRY=0x1b +[TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_REGISTEROBSERVERL_EXIT=0x1c +[TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_RUNL_ENTRY=0x2f +[TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_RUNL_EXIT=0x30 +[TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_SELECTCLASSCONTROLLERSL_ENTRY=0x48 +[TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_SELECTCLASSCONTROLLERSL_EXIT=0x49 +[TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_SETCURRENTPERSONALITYL_ENTRY=0x40 +[TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_SETCURRENTPERSONALITYL_EXIT=0x41 +[TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_SETDEFAULTPERSONALITYL_ENTRY=0x4b +[TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_SETDEFAULTPERSONALITYL_EXIT=0x4c +[TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_SETDEVICEDESCRIPTORL_ENTRY=0x36 +[TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_SETDEVICEDESCRIPTORL_EXIT=0x37 +[TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_SETDEVICESTATE_ENTRY=0x25 +[TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_SETDEVICESTATE_EXIT=0x26 +[TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_SETSERVICESTATE_ENTRY=0x23 +[TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_SETSERVICESTATE_EXIT=0x24 +[TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_SETUSBDEVICESETTINGSFROMPERSONALITYL_ENTRY=0x38 +[TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_STARTCURRENTCLASSCONTROLLER_ENTRY=0x29 +[TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_STARTCURRENTCLASSCONTROLLER_EXIT=0x2a +[TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_STARTL_ENTRY=0x1f +[TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_STARTL_EXIT=0x20 +[TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_STOPCURRENTCLASSCONTROLLER_ENTRY=0x2b +[TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_STOPCURRENTCLASSCONTROLLER_EXIT=0x2c +[TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_STOP_ENTRY=0x21 +[TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_STOP_EXIT=0x22 +[TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_TRYSTARTL_ENTRY=0x39 +[TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_TRYSTARTL_EXIT=0x3a +[TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_UCCNERROR_ENTRY=0x34 +[TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_UCCNERROR_EXIT=0x35 +[TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_UCCNGETCLASSCONTROLLERITERATORL_ENTRY=0x33 +[TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_VALIDATEPERSONALITIESL_ENTRY=0x42 +[TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_VALIDATEPERSONALITIESL_EXIT=0x43 +[TRACE]TRACE_FLOW[0x8A]_CUSBDUMMYCLASSCONTROLLER_DOCANCEL_ENTRY=0x65 +[TRACE]TRACE_FLOW[0x8A]_CUSBDUMMYCLASSCONTROLLER_DOCANCEL_EXIT=0x66 +[TRACE]TRACE_FLOW[0x8A]_CUSBDUMMYCLASSCONTROLLER_DOGETCONFIGL_ENTRY=0x5b +[TRACE]TRACE_FLOW[0x8A]_CUSBDUMMYCLASSCONTROLLER_DOGETCONFIGL_EXIT=0x5c +[TRACE]TRACE_FLOW[0x8A]_CUSBDUMMYCLASSCONTROLLER_GETBEHAVIOUR_ENTRY=0x59 +[TRACE]TRACE_FLOW[0x8A]_CUSBDUMMYCLASSCONTROLLER_GETBEHAVIOUR_EXIT=0x5a +[TRACE]TRACE_FLOW[0x8A]_CUSBDUMMYCLASSCONTROLLER_GETCONFIG_ENTRY=0x5d +[TRACE]TRACE_FLOW[0x8A]_CUSBDUMMYCLASSCONTROLLER_GETCONFIG_EXIT=0x5e +[TRACE]TRACE_FLOW[0x8A]_CUSBDUMMYCLASSCONTROLLER_NEWL_MUSBCLASSCONTROLLERNOTIFY_TUINT_ENTRY=0x55 +[TRACE]TRACE_FLOW[0x8A]_CUSBDUMMYCLASSCONTROLLER_NEWL_MUSBCLASSCONTROLLERNOTIFY_TUINT_EXIT=0x56 +[TRACE]TRACE_FLOW[0x8A]_CUSBDUMMYCLASSCONTROLLER_NEWL_MUSBCLASSCONTROLLERNOTIFY_TUINT_TINT_ENTRY=0x57 +[TRACE]TRACE_FLOW[0x8A]_CUSBDUMMYCLASSCONTROLLER_NEWL_MUSBCLASSCONTROLLERNOTIFY_TUINT_TINT_EXIT=0x58 +[TRACE]TRACE_FLOW[0x8A]_CUSBDUMMYCLASSCONTROLLER_RUNL_ENTRY=0x63 +[TRACE]TRACE_FLOW[0x8A]_CUSBDUMMYCLASSCONTROLLER_RUNL_EXIT=0x64 +[TRACE]TRACE_FLOW[0x8A]_CUSBDUMMYCLASSCONTROLLER_START_ENTRY=0x5f +[TRACE]TRACE_FLOW[0x8A]_CUSBDUMMYCLASSCONTROLLER_START_EXIT=0x60 +[TRACE]TRACE_FLOW[0x8A]_CUSBDUMMYCLASSCONTROLLER_STOP_ENTRY=0x61 +[TRACE]TRACE_FLOW[0x8A]_CUSBDUMMYCLASSCONTROLLER_STOP_EXIT=0x62 +[TRACE]TRACE_FLOW[0x8A]_CUSBMANCENREPMANAGER_CHECKSIGNATUREL_ENTRY=0x103 +[TRACE]TRACE_FLOW[0x8A]_CUSBMANCENREPMANAGER_CHECKSIGNATUREL_EXIT=0x104 +[TRACE]TRACE_FLOW[0x8A]_CUSBMANCENREPMANAGER_CONSTRUCTL_ENTRY=0xfb +[TRACE]TRACE_FLOW[0x8A]_CUSBMANCENREPMANAGER_CONSTRUCTL_EXIT=0xfc +[TRACE]TRACE_FLOW[0x8A]_CUSBMANCENREPMANAGER_CUSBMANCENREPMANAGER_CONS_ENTRY=0xf7 +[TRACE]TRACE_FLOW[0x8A]_CUSBMANCENREPMANAGER_CUSBMANCENREPMANAGER_CONS_EXIT=0xf8 +[TRACE]TRACE_FLOW[0x8A]_CUSBMANCENREPMANAGER_CUSBMANCENREPMANAGER_DES_ENTRY=0xfd +[TRACE]TRACE_FLOW[0x8A]_CUSBMANCENREPMANAGER_CUSBMANCENREPMANAGER_DES_EXIT=0xfe +[TRACE]TRACE_FLOW[0x8A]_CUSBMANCENREPMANAGER_ISCLASSCONFIGURABLEL_ENTRY=0x10b +[TRACE]TRACE_FLOW[0x8A]_CUSBMANCENREPMANAGER_ISCLASSCONFIGURABLEL_EXIT=0x10c +[TRACE]TRACE_FLOW[0x8A]_CUSBMANCENREPMANAGER_ISFEATURESUPPORTEDL_ENTRY=0x10d +[TRACE]TRACE_FLOW[0x8A]_CUSBMANCENREPMANAGER_ISFEATURESUPPORTEDL_EXIT=0x10e +[TRACE]TRACE_FLOW[0x8A]_CUSBMANCENREPMANAGER_ISFEATURESUPPORTEDL_EXIT_DUP1=0x10f +[TRACE]TRACE_FLOW[0x8A]_CUSBMANCENREPMANAGER_NEWL_ENTRY=0xf9 +[TRACE]TRACE_FLOW[0x8A]_CUSBMANCENREPMANAGER_NEWL_EXIT=0xfa +[TRACE]TRACE_FLOW[0x8A]_CUSBMANCENREPMANAGER_READCONFIGURATIONSFORPERSONALITYL_ENTRY=0x109 +[TRACE]TRACE_FLOW[0x8A]_CUSBMANCENREPMANAGER_READCONFIGURATIONSFORPERSONALITYL_EXIT=0x10a +[TRACE]TRACE_FLOW[0x8A]_CUSBMANCENREPMANAGER_READDEVICECONFIGURATIONL_ENTRY=0x105 +[TRACE]TRACE_FLOW[0x8A]_CUSBMANCENREPMANAGER_READDEVICECONFIGURATIONL_EXIT=0x106 +[TRACE]TRACE_FLOW[0x8A]_CUSBMANCENREPMANAGER_READKEYL_ENTRY=0x101 +[TRACE]TRACE_FLOW[0x8A]_CUSBMANCENREPMANAGER_READKEYL_EXIT=0x102 +[TRACE]TRACE_FLOW[0x8A]_CUSBMANCENREPMANAGER_READPERSONALITIESL_ENTRY=0x107 +[TRACE]TRACE_FLOW[0x8A]_CUSBMANCENREPMANAGER_READPERSONALITIESL_EXIT=0x108 +[TRACE]TRACE_FLOW[0x8A]_CUSBMANCENREPMANAGER_READSTRINGKEYLC_ENTRY=0xff +[TRACE]TRACE_FLOW[0x8A]_CUSBMANCENREPMANAGER_READSTRINGKEYLC_EXIT=0x100 +[TRACE]TRACE_FLOW[0x8A]_CUSBSCHEDULER_NEWL_ENTRY=0x67 +[TRACE]TRACE_FLOW[0x8A]_CUSBSCHEDULER_NEWL_EXIT=0x68 +[TRACE]TRACE_FLOW[0x8A]_CUSBSERVER_CUSBSERVER_DES_ENTRY=0x6b +[TRACE]TRACE_FLOW[0x8A]_CUSBSERVER_CUSBSERVER_DES_EXIT=0x6c +[TRACE]TRACE_FLOW[0x8A]_CUSBSERVER_INCREMENTSESSIONCOUNT_ENTRY=0x6f +[TRACE]TRACE_FLOW[0x8A]_CUSBSERVER_INCREMENTSESSIONCOUNT_EXIT=0x70 +[TRACE]TRACE_FLOW[0x8A]_CUSBSERVER_LAUNCHSHUTDOWNTIMERIFNOSESSIONS_ENTRY=0x71 +[TRACE]TRACE_FLOW[0x8A]_CUSBSERVER_LAUNCHSHUTDOWNTIMERIFNOSESSIONS_EXIT=0x72 +[TRACE]TRACE_FLOW[0x8A]_CUSBSERVER_NEWLC_ENTRY=0x69 +[TRACE]TRACE_FLOW[0x8A]_CUSBSERVER_NEWLC_EXIT=0x6a +[TRACE]TRACE_FLOW[0x8A]_CUSBSERVER_NEWSESSIONL_ENTRY=0x6d +[TRACE]TRACE_FLOW[0x8A]_CUSBSERVER_NEWSESSIONL_EXIT=0x6e +[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_BUSCLEARERROR_ENTRY=0xd1 +[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_BUSCLEARERROR_EXIT=0xd2 +[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_BUSDROP_ENTRY=0xd3 +[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_BUSDROP_EXIT=0xd4 +[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_BUSREQUEST_ENTRY=0xcd +[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_BUSREQUEST_EXIT=0xce +[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_BUSRESPONDSRP_ENTRY=0xcf +[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_BUSRESPONDSRP_EXIT=0xd0 +[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_CANCELINTEREST_ENTRY=0xb5 +[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_CANCELINTEREST_EXIT=0xb6 +[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_CANCELINTEREST_EXIT_DUP1=0xb7 +[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_CLASSSUPPORTED_ENTRY=0xc8 +[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_CLASSSUPPORTED_EXIT=0xc9 +[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_CLASSSUPPORTED_EXIT_DUP1=0xca +[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_CREATEL_ENTRY=0x7a +[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_CREATEL_EXIT=0x7b +[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_CUSBSESSION_CONS_ENTRY=0x74 +[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_CUSBSESSION_CONS_EXIT=0x75 +[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_CUSBSESSION_DES_ENTRY=0x76 +[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_CUSBSESSION_DES_EXIT=0x77 +[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_DEREGISTERDEVICEOBSERVER_ENTRY=0xa0 +[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_DEREGISTERDEVICEOBSERVER_EXIT=0xa1 +[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_DEREGISTERDEVICEOBSERVER_EXIT_DUP1=0xa2 +[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_DEREGISTERHOSTOBSERVER_ENTRY=0xe6 +[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_DEREGISTERHOSTOBSERVER_EXIT=0xe7 +[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_DEREGISTERHOSTOBSERVER_EXIT_DUP1=0xe8 +[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_DEREGISTERMSGOBSERVER_ENTRY=0xec +[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_DEREGISTERMSGOBSERVER_EXIT=0xed +[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_DEREGISTERMSGOBSERVER_EXIT_DUP1=0xee +[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_DEREGISTERSERVICEOBSERVER_ENTRY=0xa3 +[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_DEREGISTERSERVICEOBSERVER_EXIT=0xa4 +[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_DEREGISTERSERVICEOBSERVER_EXIT_DUP1=0xa5 +[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_DISABLEFUNCTIONDRIVERLOADING_ENTRY=0xd7 +[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_DISABLEFUNCTIONDRIVERLOADING_EXIT=0xd8 +[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_DISPATCHMESSAGEL_ENTRY=0x86 +[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_DISPATCHMESSAGEL_EXIT=0x87 +[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_ENABLEFUNCTIONDRIVERLOADING_ENTRY=0xd5 +[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_ENABLEFUNCTIONDRIVERLOADING_EXIT=0xd6 +[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_GETCURRENTDEVICESTATE_ENTRY=0x9f +[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_GETCURRENTPERSONALITYID_ENTRY=0xb8 +[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_GETCURRENTPERSONALITYID_EXIT=0xb9 +[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_GETCURRENTSERVICESTATE_ENTRY=0x9e +[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_GETDESCRIPTION_ENTRY=0xc2 +[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_GETDESCRIPTION_EXIT=0xc3 +[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_GETDESCRIPTION_EXIT_DUP1=0xc4 +[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_GETMANUFACTURERSTRINGDESCRIPTOR_ENTRY=0xdd +[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_GETMANUFACTURERSTRINGDESCRIPTOR_EXIT=0xde +[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_GETOTGDESCRIPTOR_ENTRY=0xe1 +[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_GETOTGDESCRIPTOR_EXIT=0xe2 +[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_GETPERSONALITYIDS_ENTRY=0xbf +[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_GETPERSONALITYIDS_EXIT=0xc0 +[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_GETPERSONALITYIDS_EXIT_DUP1=0xc1 +[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_GETPERSONALITYPROPERTY_ENTRY=0xc5 +[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_GETPERSONALITYPROPERTY_EXIT=0xc6 +[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_GETPERSONALITYPROPERTY_EXIT_DUP2=0xc7 +[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_GETPRODUCTSTRINGDESCRIPTOR_ENTRY=0xdf +[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_GETPRODUCTSTRINGDESCRIPTOR_EXIT=0xe0 +[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_GETSUPPORTEDCLASSES_ENTRY=0xba +[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_GETSUPPORTEDCLASSES_EXIT=0xbb +[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_GETSUPPORTEDCLASSES_EXIT_DUP1=0xbc +[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_GETSUPPORTEDCLASSES_EXIT_DUP2=0xbd +[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_GETSUPPORTEDCLASSES_EXIT_DUP3=0xbe +[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_GETSUPPORTEDLANGUAGESL_ENTRY=0xdb +[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_GETSUPPORTEDLANGUAGESL_EXIT=0xdc +[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_GETSUPPORTEDLANGUAGES_ENTRY=0xd9 +[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_GETSUPPORTEDLANGUAGES_EXIT=0xda +[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_HANDLESERVICESTATECHANGEWHILESTARTING_ENTRY=0x7e +[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_HANDLESERVICESTATECHANGEWHILESTARTING_EXIT=0x7f +[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_HANDLESERVICESTATECHANGEWHILESTOPPING_ENTRY=0x80 +[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_HANDLESERVICESTATECHANGEWHILESTOPPING_EXIT=0x81 +[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_NEWL_ENTRY=0x73 +[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_REGISTERDEVICEOBSERVER_ENTRY=0x98 +[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_REGISTERDEVICEOBSERVER_EXIT=0x99 +[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_REGISTERDEVICEOBSERVER_EXIT_DUP1=0x9a +[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_REGISTERHOSTOBSERVER_ENTRY=0xe3 +[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_REGISTERHOSTOBSERVER_EXIT=0xe4 +[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_REGISTERHOSTOBSERVER_EXIT_DUP1=0xe5 +[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_REGISTERMSGOBSERVER_ENTRY=0xe9 +[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_REGISTERMSGOBSERVER_EXIT=0xea +[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_REGISTERMSGOBSERVER_EXIT_DUP1=0xeb +[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_REGISTERSERVICEOBSERVER_ENTRY=0x9b +[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_REGISTERSERVICEOBSERVER_EXIT=0x9c +[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_REGISTERSERVICEOBSERVER_EXIT_DUP1=0x9d +[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_SERVICEL_ENTRY=0x78 +[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_SERVICEL_EXIT=0x79 +[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_SETCTLSESSIONMODE_ENTRY=0xcb +[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_SETCTLSESSIONMODE_EXIT=0xcc +[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_STARTCANCEL_ENTRY=0x91 +[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_STARTCANCEL_EXIT=0x92 +[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_STARTCANCEL_EXIT_DUP1=0x93 +[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_STARTDEVICEL_ENTRY=0x88 +[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_STARTDEVICEL_EXIT=0x89 +[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_STARTDEVICEL_EXIT_DUP1=0x8a +[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_STARTDEVICEL_EXIT_DUP2=0x8b +[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_STOPCANCEL_ENTRY=0x94 +[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_STOPCANCEL_EXIT=0x95 +[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_STOPCANCEL_EXIT_DUP1=0x96 +[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_STOPCANCEL_EXIT_DUP2=0x97 +[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_STOPDEVICEL_ENTRY=0x8c +[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_STOPDEVICEL_EXIT=0x8d +[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_STOPDEVICEL_EXIT_DUP1=0x8e +[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_STOPDEVICEL_EXIT_DUP2=0x8f +[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_STOPDEVICEL_EXIT_DUP3=0x90 +[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_TRYSTARTDEVICEL_ENTRY=0xa6 +[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_TRYSTARTDEVICEL_EXIT=0xa7 +[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_TRYSTARTDEVICEL_EXIT_DUP1=0xa8 +[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_TRYSTARTDEVICEL_EXIT_DUP2=0xa9 +[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_TRYSTARTDEVICEL_EXIT_DUP3=0xaa +[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_TRYSTARTDEVICEL_EXIT_DUP4=0xab +[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_TRYSTARTDEVICEL_EXIT_DUP5=0xac +[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_TRYSTARTDEVICEL_EXIT_DUP6=0xad +[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_TRYSTOPDEVICEL_ENTRY=0xae +[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_TRYSTOPDEVICEL_EXIT=0xaf +[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_TRYSTOPDEVICEL_EXIT_DUP1=0xb0 +[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_TRYSTOPDEVICEL_EXIT_DUP2=0xb1 +[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_TRYSTOPDEVICEL_EXIT_DUP3=0xb2 +[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_TRYSTOPDEVICEL_EXIT_DUP4=0xb3 +[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_TRYSTOPDEVICEL_EXIT_DUP5=0xb4 +[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_USBDEVICEDEQUEUEEVENT_ENTRY=0x84 +[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_USBDEVICEDEQUEUEEVENT_EXIT=0x85 +[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_USBDEVICESTATECHANGE_ENTRY=0x82 +[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_USBDEVICESTATECHANGE_EXIT=0x83 +[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_USBHOSTEVENTDEQUEUE_ENTRY=0xf5 +[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_USBHOSTEVENTDEQUEUE_EXIT=0xf6 +[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_USBHOSTEVENT_ENTRY=0xf1 +[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_USBHOSTEVENT_EXIT=0xf2 +[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_USBMSGDEQUEUE_ENTRY=0xf3 +[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_USBMSGDEQUEUE_EXIT=0xf4 +[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_USBOTGHOSTMESSAGE_ENTRY=0xef +[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_USBOTGHOSTMESSAGE_EXIT=0xf0 +[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_USBSERVICESTATECHANGE_ENTRY=0x7c +[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_USBSERVICESTATECHANGE_EXIT=0x7d +[TRACE]TRACE_NORMAL[0x86]_CINIFILE_CONSTRUCTL=0x2 +[TRACE]TRACE_NORMAL[0x86]_CINIFILE_CONSTRUCTL_DUP1=0x3 +[TRACE]TRACE_NORMAL[0x86]_CINIFILE_CONSTRUCTL_DUP2=0x4 +[TRACE]TRACE_NORMAL[0x86]_CINIFILE_CONSTRUCTL_DUP3=0x5 +[TRACE]TRACE_NORMAL[0x86]_CINIFILE_CONSTRUCTL_DUP4=0x6 +[TRACE]TRACE_NORMAL[0x86]_CINIFILE_PANIC=0x1 +[TRACE]TRACE_NORMAL[0x86]_CUSBDEVICESTATEWATCHER_CUSBDEVICESTATEWATCHER=0x44 +[TRACE]TRACE_NORMAL[0x86]_CUSBDEVICESTATEWATCHER_RUNL=0x45 +[TRACE]TRACE_NORMAL[0x86]_CUSBDEVICESTATEWATCHER_RUNL_DUP1=0x46 +[TRACE]TRACE_NORMAL[0x86]_CUSBDEVICESTATEWATCHER_RUNL_DUP2=0x47 +[TRACE]TRACE_NORMAL[0x86]_CUSBDEVICESTATEWATCHER_RUNL_DUP3=0x48 +[TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_ADDCLASSCONTROLLERL=0x1e +[TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_BUSENUMERATIONCOMPLETED=0x23 +[TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_BUSENUMERATIONFAILED=0x24 +[TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_BUSENUMERATIONFAILED_DUP1=0x25 +[TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_CONSTRUCTL=0xb +[TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_CONSTRUCTL_DUP1=0xd +[TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_CONSTRUCTL_DUP10=0xc +[TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_CONSTRUCTL_DUP11=0x10 +[TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_CONSTRUCTL_DUP12=0x16 +[TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_CONSTRUCTL_DUP13=0x13 +[TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_CONSTRUCTL_DUP2=0xf +[TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_CONSTRUCTL_DUP3=0x11 +[TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_CONSTRUCTL_DUP4=0x12 +[TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_CONSTRUCTL_DUP5=0x14 +[TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_CONSTRUCTL_DUP6=0x15 +[TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_CONSTRUCTL_DUP7=0x17 +[TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_CONSTRUCTL_DUP8=0x18 +[TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_CONSTRUCTL_DUP9=0xe +[TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_CONVERTUIDSL_DUP1=0x40 +[TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_CREATECLASSCONTROLLERSL=0x41 +[TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_CREATECLASSCONTROLLERSL_DUP1=0x42 +[TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_CUSBDEVICE=0x7 +[TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_CUSBDEVICE_DUP1=0x8 +[TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_CUSBDEVICE_DUP2=0x9 +[TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_CUSBDEVICE_DUP3=0xa +[TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_ENUMERATECLASSCONTROLLERSL=0x1b +[TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_ENUMERATECLASSCONTROLLERSL_DUP1=0x1c +[TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_ENUMERATECLASSCONTROLLERSL_DUP2=0x1a +[TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_ENUMERATECLASSCONTROLLERSL_DUP3=0x1d +[TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_INSTANTIATEEXTENSIONPLUGINSL_DUP1=0x19 +[TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_MUEPODOREGISTERSTATEOBSERVERL=0x43 +[TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_POWERUPANDCONNECT=0x26 +[TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_POWERUPANDCONNECT_DUP1=0x27 +[TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_POWERUPANDCONNECT_DUP2=0x28 +[TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_REGISTEROBSERVERL=0x1f +[TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_RUNERROR=0x2e +[TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_RUNL=0x29 +[TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_RUNL_DUP1=0x2b +[TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_RUNL_DUP2=0x2c +[TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_RUNL_DUP3=0x2d +[TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_RUNL_DUP4=0x2a +[TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_SETCURRENTPERSONALITYL=0x3c +[TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_SETDEVICEDESCRIPTORL=0x2f +[TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_SETDEVICEDESCRIPTORL_DUP1=0x30 +[TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_SETDEVICEDESCRIPTORL_DUP2=0x32 +[TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_SETDEVICEDESCRIPTORL_DUP3=0x31 +[TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_SETDEVICESTATE=0x22 +[TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_SETSERVICESTATE=0x21 +[TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_SETUSBDEVICESETTINGSFROMPERSONALITYL=0x33 +[TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_SETUSBDEVICESETTINGSFROMPERSONALITYL_DUP1=0x36 +[TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_SETUSBDEVICESETTINGSFROMPERSONALITYL_DUP2=0x38 +[TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_SETUSBDEVICESETTINGSFROMPERSONALITYL_DUP3=0x37 +[TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_SETUSBDEVICESETTINGSFROMPERSONALITYL_DUP4=0x3a +[TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_SETUSBDEVICESETTINGSFROMPERSONALITYL_DUP5=0x39 +[TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_SETUSBDEVICESETTINGSFROMPERSONALITYL_DUP6=0x35 +[TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_SETUSBDEVICESETTINGSFROMPERSONALITYL_DUP7=0x34 +[TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_STARTL=0x20 +[TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_TRYSTARTL=0x3b +[TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_VALIDATEPERSONALITIESL=0x3f +[TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_VALIDATEPERSONALITIESL_DUP1=0x3d +[TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_VALIDATEPERSONALITIESL_DUP2=0x3e +[TRACE]TRACE_NORMAL[0x86]_CUSBDUMMYCLASSCONTROLLER_GETBEHAVIOUR=0x49 +[TRACE]TRACE_NORMAL[0x86]_CUSBDUMMYCLASSCONTROLLER_GETBEHAVIOUR_DUP1=0x4a +[TRACE]TRACE_NORMAL[0x86]_CUSBDUMMYCLASSCONTROLLER_GETBEHAVIOUR_DUP3=0x4b +[TRACE]TRACE_NORMAL[0x86]_CUSBDUMMYCLASSCONTROLLER_GETBEHAVIOUR_DUP5=0x4c +[TRACE]TRACE_NORMAL[0x86]_CUSBDUMMYCLASSCONTROLLER_GETBEHAVIOUR_DUP7=0x4d +[TRACE]TRACE_NORMAL[0x86]_CUSBDUMMYCLASSCONTROLLER_GETCONFIG=0x4e +[TRACE]TRACE_NORMAL[0x86]_CUSBDUMMYCLASSCONTROLLER_GETCONFIG_DUP1=0x4f +[TRACE]TRACE_NORMAL[0x86]_CUSBDUMMYCLASSCONTROLLER_GETCONFIG_DUP2=0x50 +[TRACE]TRACE_NORMAL[0x86]_CUSBDUMMYCLASSCONTROLLER_GETCONFIG_DUP3=0x51 +[TRACE]TRACE_NORMAL[0x86]_CUSBDUMMYCLASSCONTROLLER_GETCONFIG_DUP4=0x52 +[TRACE]TRACE_NORMAL[0x86]_CUSBDUMMYCLASSCONTROLLER_GETCONFIG_DUP5=0x53 +[TRACE]TRACE_NORMAL[0x86]_CUSBDUMMYCLASSCONTROLLER_GETCONFIG_DUP6=0x54 +[TRACE]TRACE_NORMAL[0x86]_CUSBDUMMYCLASSCONTROLLER_RUNL=0x55 +[TRACE]TRACE_NORMAL[0x86]_CUSBMANCENREPMANAGER_CHECKSIGNATUREL=0xa3 +[TRACE]TRACE_NORMAL[0x86]_CUSBMANCENREPMANAGER_ISCLASSCONFIGURABLEL=0xb2 +[TRACE]TRACE_NORMAL[0x86]_CUSBMANCENREPMANAGER_ISCLASSCONFIGURABLEL_DUP2=0xb3 +[TRACE]TRACE_NORMAL[0x86]_CUSBMANCENREPMANAGER_ISFEATURESUPPORTEDL_DUP2=0xb5 +[TRACE]TRACE_NORMAL[0x86]_CUSBMANCENREPMANAGER_READCONFIGURATIONSFORPERSONALITYL_DUP1=0xaf +[TRACE]TRACE_NORMAL[0x86]_CUSBMANCENREPMANAGER_READCONFIGURATIONSFORPERSONALITYL_DUP2=0xb0 +[TRACE]TRACE_NORMAL[0x86]_CUSBMANCENREPMANAGER_READCONFIGURATIONSFORPERSONALITYL_DUP3=0xb1 +[TRACE]TRACE_NORMAL[0x86]_CUSBMANCENREPMANAGER_READDEVICECONFIGURATIONL=0xa4 +[TRACE]TRACE_NORMAL[0x86]_CUSBMANCENREPMANAGER_READDEVICECONFIGURATIONL_DUP1=0xa5 +[TRACE]TRACE_NORMAL[0x86]_CUSBMANCENREPMANAGER_READDEVICECONFIGURATIONL_DUP2=0xa6 +[TRACE]TRACE_NORMAL[0x86]_CUSBMANCENREPMANAGER_READDEVICECONFIGURATIONL_DUP3=0xa7 +[TRACE]TRACE_NORMAL[0x86]_CUSBMANCENREPMANAGER_READDEVICECONFIGURATIONL_DUP4=0xa8 +[TRACE]TRACE_NORMAL[0x86]_CUSBMANCENREPMANAGER_READKEYL=0xa1 +[TRACE]TRACE_NORMAL[0x86]_CUSBMANCENREPMANAGER_READKEYL_DUP1=0xa2 +[TRACE]TRACE_NORMAL[0x86]_CUSBMANCENREPMANAGER_READPERSONALITIESL_DUP1=0xaa +[TRACE]TRACE_NORMAL[0x86]_CUSBMANCENREPMANAGER_READPERSONALITIESL_DUP3=0xa9 +[TRACE]TRACE_NORMAL[0x86]_CUSBMANCENREPMANAGER_READPERSONALITIESL_DUP4=0xac +[TRACE]TRACE_NORMAL[0x86]_CUSBMANCENREPMANAGER_READPERSONALITIESL_DUP6=0xad +[TRACE]TRACE_NORMAL[0x86]_CUSBMANCENREPMANAGER_READPERSONALITIESL_DUP7=0xae +[TRACE]TRACE_NORMAL[0x86]_CUSBMANCENREPMANAGER_READSTRINGKEYLC=0x9f +[TRACE]TRACE_NORMAL[0x86]_CUSBMANCENREPMANAGER_READSTRINGKEYLC_DUP1=0xa0 +[TRACE]TRACE_NORMAL[0x86]_CUSBSCHEDULER_ERROR=0x56 +[TRACE]TRACE_NORMAL[0x86]_CUSBSERVER_CONSTRUCTL=0x5f +[TRACE]TRACE_NORMAL[0x86]_CUSBSERVER_CONSTRUCTL_DUP1=0x60 +[TRACE]TRACE_NORMAL[0x86]_CUSBSERVER_CONSTRUCTL_DUP2=0x61 +[TRACE]TRACE_NORMAL[0x86]_CUSBSERVER_CONSTRUCTL_DUP3=0x62 +[TRACE]TRACE_NORMAL[0x86]_CUSBSERVER_CUSBSERVER=0x57 +[TRACE]TRACE_NORMAL[0x86]_CUSBSERVER_CUSBSERVER_DUP1=0x58 +[TRACE]TRACE_NORMAL[0x86]_CUSBSERVER_CUSBSERVER_DUP2=0x59 +[TRACE]TRACE_NORMAL[0x86]_CUSBSERVER_CUSBSERVER_DUP3=0x5a +[TRACE]TRACE_NORMAL[0x86]_CUSBSERVER_CUSBSERVER_DUP4=0x5b +[TRACE]TRACE_NORMAL[0x86]_CUSBSERVER_CUSBSERVER_DUP5=0x5c +[TRACE]TRACE_NORMAL[0x86]_CUSBSERVER_CUSBSERVER_DUP6=0x5d +[TRACE]TRACE_NORMAL[0x86]_CUSBSERVER_CUSBSERVER_DUP7=0x5e +[TRACE]TRACE_NORMAL[0x86]_CUSBSERVER_DECREMENTSESSIONCOUNT=0x67 +[TRACE]TRACE_NORMAL[0x86]_CUSBSERVER_ERROR=0x65 +[TRACE]TRACE_NORMAL[0x86]_CUSBSERVER_INCREMENTSESSIONCOUNT=0x66 +[TRACE]TRACE_NORMAL[0x86]_CUSBSERVER_NEWSESSIONL=0x63 +[TRACE]TRACE_NORMAL[0x86]_CUSBSERVER_NEWSESSIONL_DUP1=0x64 +[TRACE]TRACE_NORMAL[0x86]_CUSBSESSION_CREATEL=0x6c +[TRACE]TRACE_NORMAL[0x86]_CUSBSESSION_CREATEL_DUP1=0x6d +[TRACE]TRACE_NORMAL[0x86]_CUSBSESSION_CREATEL_DUP2=0x6e +[TRACE]TRACE_NORMAL[0x86]_CUSBSESSION_CUSBSESSION=0x68 +[TRACE]TRACE_NORMAL[0x86]_CUSBSESSION_CUSBSESSION_DUP1=0x69 +[TRACE]TRACE_NORMAL[0x86]_CUSBSESSION_CUSBSESSION_DUP2=0x6a +[TRACE]TRACE_NORMAL[0x86]_CUSBSESSION_CUSBSESSION_DUP3=0x6b +[TRACE]TRACE_NORMAL[0x86]_CUSBSESSION_DEREGISTERHOSTOBSERVER=0x94 +[TRACE]TRACE_NORMAL[0x86]_CUSBSESSION_DEREGISTERHOSTOBSERVER_DUP1=0x95 +[TRACE]TRACE_NORMAL[0x86]_CUSBSESSION_DISPATCHMESSAGEL=0x7b +[TRACE]TRACE_NORMAL[0x86]_CUSBSESSION_DISPATCHMESSAGEL_DUP1=0x7c +[TRACE]TRACE_NORMAL[0x86]_CUSBSESSION_DISPATCHMESSAGEL_DUP2=0x7d +[TRACE]TRACE_NORMAL[0x86]_CUSBSESSION_DISPATCHMESSAGEL_DUP3=0x7e +[TRACE]TRACE_NORMAL[0x86]_CUSBSESSION_DISPATCHMESSAGEL_DUP4=0x7f +[TRACE]TRACE_NORMAL[0x86]_CUSBSESSION_DISPATCHMESSAGEL_DUP5=0x80 +[TRACE]TRACE_NORMAL[0x86]_CUSBSESSION_DISPATCHMESSAGEL_DUP6=0x81 +[TRACE]TRACE_NORMAL[0x86]_CUSBSESSION_GETCURRENTDEVICESTATE=0x84 +[TRACE]TRACE_NORMAL[0x86]_CUSBSESSION_GETCURRENTPERSONALITYID=0x85 +[TRACE]TRACE_NORMAL[0x86]_CUSBSESSION_GETCURRENTSERVICESTATE=0x83 +[TRACE]TRACE_NORMAL[0x86]_CUSBSESSION_GETMANUFACTURERSTRINGDESCRIPTOR=0x8e +[TRACE]TRACE_NORMAL[0x86]_CUSBSESSION_GETMANUFACTURERSTRINGDESCRIPTOR_DUP1=0x8f +[TRACE]TRACE_NORMAL[0x86]_CUSBSESSION_GETOTGDESCRIPTOR=0x92 +[TRACE]TRACE_NORMAL[0x86]_CUSBSESSION_GETPERSONALITYIDS=0x89 +[TRACE]TRACE_NORMAL[0x86]_CUSBSESSION_GETPRODUCTSTRINGDESCRIPTOR=0x90 +[TRACE]TRACE_NORMAL[0x86]_CUSBSESSION_GETPRODUCTSTRINGDESCRIPTOR_DUP1=0x91 +[TRACE]TRACE_NORMAL[0x86]_CUSBSESSION_GETSUPPORTEDCLASSES=0x86 +[TRACE]TRACE_NORMAL[0x86]_CUSBSESSION_GETSUPPORTEDCLASSES_DUP1=0x87 +[TRACE]TRACE_NORMAL[0x86]_CUSBSESSION_GETSUPPORTEDCLASSES_DUP2=0x88 +[TRACE]TRACE_NORMAL[0x86]_CUSBSESSION_GETSUPPORTEDLANGUAGESL=0x8b +[TRACE]TRACE_NORMAL[0x86]_CUSBSESSION_GETSUPPORTEDLANGUAGESL_DUP1=0x8c +[TRACE]TRACE_NORMAL[0x86]_CUSBSESSION_GETSUPPORTEDLANGUAGESL_DUP2=0x8d +[TRACE]TRACE_NORMAL[0x86]_CUSBSESSION_HANDLESERVICESTATECHANGEWHILESTARTING=0x70 +[TRACE]TRACE_NORMAL[0x86]_CUSBSESSION_HANDLESERVICESTATECHANGEWHILESTARTING_DUP1=0x71 +[TRACE]TRACE_NORMAL[0x86]_CUSBSESSION_HANDLESERVICESTATECHANGEWHILESTARTING_DUP2=0x72 +[TRACE]TRACE_NORMAL[0x86]_CUSBSESSION_HANDLESERVICESTATECHANGEWHILESTARTING_DUP3=0x73 +[TRACE]TRACE_NORMAL[0x86]_CUSBSESSION_HANDLESERVICESTATECHANGEWHILESTOPPING=0x74 +[TRACE]TRACE_NORMAL[0x86]_CUSBSESSION_HANDLESERVICESTATECHANGEWHILESTOPPING_DUP1=0x75 +[TRACE]TRACE_NORMAL[0x86]_CUSBSESSION_HANDLESERVICESTATECHANGEWHILESTOPPING_DUP2=0x76 +[TRACE]TRACE_NORMAL[0x86]_CUSBSESSION_HANDLESERVICESTATECHANGEWHILESTOPPING_DUP3=0x77 +[TRACE]TRACE_NORMAL[0x86]_CUSBSESSION_REGISTERDEVICEOBSERVER=0x82 +[TRACE]TRACE_NORMAL[0x86]_CUSBSESSION_REGISTERHOSTOBSERVER=0x93 +[TRACE]TRACE_NORMAL[0x86]_CUSBSESSION_REGISTERMSGOBSERVER=0x96 +[TRACE]TRACE_NORMAL[0x86]_CUSBSESSION_SETCTLSESSIONMODE=0x8a +[TRACE]TRACE_NORMAL[0x86]_CUSBSESSION_USBDEVICEDEQUEUEEVENT=0x7a +[TRACE]TRACE_NORMAL[0x86]_CUSBSESSION_USBDEVICESTATECHANGE=0x78 +[TRACE]TRACE_NORMAL[0x86]_CUSBSESSION_USBDEVICESTATECHANGE_DUP1=0x79 +[TRACE]TRACE_NORMAL[0x86]_CUSBSESSION_USBHOSTEVENT=0x98 +[TRACE]TRACE_NORMAL[0x86]_CUSBSESSION_USBHOSTEVENTDEQUEUE=0x9c +[TRACE]TRACE_NORMAL[0x86]_CUSBSESSION_USBHOSTEVENTDEQUEUE_DUP1=0x9d +[TRACE]TRACE_NORMAL[0x86]_CUSBSESSION_USBHOSTEVENT_DUP1=0x99 +[TRACE]TRACE_NORMAL[0x86]_CUSBSESSION_USBHOSTEVENT_DUP2=0x9a +[TRACE]TRACE_NORMAL[0x86]_CUSBSESSION_USBMSGDEQUEUE=0x9b +[TRACE]TRACE_NORMAL[0x86]_CUSBSESSION_USBOTGHOSTMESSAGE=0x97 +[TRACE]TRACE_NORMAL[0x86]_CUSBSESSION_USBSERVICESTATECHANGE=0x6f +[TRACE]TRACE_NORMAL[0x86]_DUP1_CUSBMANCENREPMANAGER_ISFEATURESUPPORTEDL_DUP1=0xb4 +[TRACE]TRACE_NORMAL[0x86]_DUP2_CUSBMANCENREPMANAGER_READPERSONALITIESL_DUP2=0xab +[TRACE]TRACE_NORMAL[0x86]_USBSVR_RUNSERVERL=0x9e